CMPS 109: Advanced Programming - Winter 2004


[Homepage] | [General Lab Info] | [TA's & Tutors] | [Supplements] | [FAQ's] | [Homework] | [Excellent Programs] | [Exams]

Java

This course will teach objected-oriented programming and design, primarily using Java, with some discussion of C++ and C#.

Instructor Information

This course is being co-taught by Charlie McDowell and Ira Pohl
Office: C. McDowell: BE 239, I. Pohl: BE 233
Hours: C. McDowell: TTh 1-2
E-mail: charlie@cs.ucsc.edu pohl@cs.ucsc.edu

Class notes for the book chapters

I recommend you print a copy of the notes and bring them to class. Here are some additional notes

General Lab Information

This section contains general information about how to run the tools you will need for this class.

TA's and Tutors

This section contains information about the lab times and when the TA is available.

Lecture Supplements

This section contains additional information from the instructor to supplement the lectures. Materials will be added here as they become necessary.

FAQ's (Frequently Asked Questions): See if your question is here!

This section contains questions pertaining to programming which students frequently ask.

Required Text:

Java by Dissection, by Ira Pohl and Charlie McDowell.
The textbook for this class will be available from both the Baytree Bookstore and Slug Books Co-op.
This is the first printing of this book, and sad to say, there are a few errors. A list of them can be found here.
The first three chapters of the textbook are available online.

Evaluation:

A minimum of 50% on all three aspects of the grade is necessary but not sufficient to pass this class. This means, if you receive less than 50% on any one of the three parts (hw, quizzes, final), you will not pass, however, just because you score at least 50% on each part does not imply that you will necessarily pass. For example, someone that scored 51% on each of the three parts would almost certainly, NOT pass. The policy is intended primariliy to prevent students from "blowing off" the homework because it only counts 20% of the grade. You cannot pass this class if you do not do the homework.

Working Together: It has been observed that in the "real world" programmers rarely work alone. In fact some recent studies suggest that the most productive work arrangment is for two programmers to work side-by-side, with one literally looking over the shoulder of the other at all times - this is called "pair-programming". Students in this class have the option of working together using pair-programming, or completing the programs individually. If you wish to use pair-programming (you are strongly encouraged to give it a try) please click here for details.

Either as an individual or as a pair, you should treat the programs as take home exams. You may freely give and receive help (from outside your pair) with the computer facilities, editors, UNIX, debugging techniques, the meaning and proper use of Java constructs, etc.. It is also perfectly permissible to discuss general approaches and algorithms with your classmates. However, viewing or copying any part of another person or team's program, or allowing your program to be copied or viewed is not permitted. A program will be in use to detect copying. If you have any questions on this important point, please see one of the instructors.

Academic Dishonesty: Any confirmed academic dishonesty including but not limited to copying programs or cheating on exams, will constitute a failure of the computer ethics portion of this class may result in a no-pass or failing grade.

Homework: Turn in homework using WebCT. It will not allow late work. Late work will not be accepted or graded. The program should be submitted in whatever form it is in - grading is done not only on working code. Homework is graded in terms of it being done in a good style, being correct, being concise, being readable, being robust, and being efficient.

Quizzes: There will be a quiz at the start of class every other Tuesday, beginning January 13, 2004.

Syllabus

Date Topic Reading
January 6 Basic Java Syntax Chapters 2-5
January 8 Arrays and Objects Chapters 5 and 6
13, 15 Objects Chapters 6 and 12
January 20, 22 Inheritance Chapter 7
January 27, 29 C++, Templates, STL Pohl STL
February 3, 5 GUI Chapters 8-9
February 10, 12 UML and OOD TBA
February 17, 19 Reading and Writing Files Chapter 10
February 24, 26 Exceptions Chapter 11
March 2, 4 Concurrent Programming Chapter 13
March 9, 11 Java vs C++ vs C# TBD
March 15 Final: 12-3pm


[Homepage] | [General Lab Info] | [TA's & Tutors] | [Supplements] | [FAQ's] | [Homework] | [Excellent Programs] | [Exams]

This page maintained by Charlie McDowell. Email regarding this site.