CMPS 109: Advanced Programming - Winter 2008


[Homepage] | [TA's & Tutors] | [Supplements] | [Homework] | [Exams]

OOP

This course will teach objected-oriented programming and design, primarily using C++ and Java.

Instructor Information

Office: E2 349B
Hours: Tuesday/Friday 12:30-2 (If not in my office try BE 105.)
E-mail: charlie@cs.ucsc.edu

Notes

I plan to use Ubiquitous Presenter (UP) during class. This will provide you with access to my notes/slides including any annotations I make during class. I also expect to use UP for in class activities/exercises where you will submit items (typically code fragments) for display during class.

Audio and screen shots from class

I also hope to be posting "movies" with audio of the primary computer display from class. These will appear in class recordings. It appears these work best from windows machines but may be of some use under Mac OSX.

Here is a link to WebCT for the online discussions, daily review questions, and program submission.

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.

Required Text:

We will be using two books, one on Java and one on C++.
Java by Dissection 2nd Edition. Pohl and McDowell (JBD) (http://www.lulu.com/JavaByDissection)
C++ for Java Programmers. Timothy Budd (BUDD) (errata)

If you are unfamiliar with Java or a bit rusty, I recommend you try and read chapters 5 and 6 of JBD before the first class meeting. These contain material I expect you to already be familiar with.

Evaluation:

OR whichever gives the highest total.

A minimum of 50% on all four 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 (review questions, programs, 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 four parts would almost certainly, NOT pass. The policy is intended primariliy to prevent students from "blowing off" the programs and homework because they only count for 20% and 10% 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 are STRONGLY ENCOURAGED to work together using pair-programming. You may, if you really cannot find a compatible programming partner, complete the programs individually. If you do 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 and C++ 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, Moss, 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.

Programming Projects: BOTH partners in a pair should submit the program. This is required for two reasons. First, it avoids the "I thought my partner was going to submit it" problem. Second, it facilitates the online grading by letting WebCT know that each student has actually submitted a solution.

Programming assignments, grading policy, and due dates can be found on the class web page homework section.

Quizzes: TBS

Syllabus

Date Topic Reading
January 8&10 Inheritance in Java JBD Chapter 7
January 15 C++ basics Budd Chapters 1&2
January 17 C++ Pointers and References Budd Chapter 3
January 22 C++ Memory Management Budd Chapter 4
January 24 C++ classes Budd Chapter 5
January 29 C++ Polymorphism Budd Chapter 6
January 31 Operator Overloading Budd Chapter 7
February 5 C++ strings Budd Chapter 8
February 7 C++ Templates and STL Containers Budd Chapter 9
February 12 Stream I/O in C++ and Java Budd Chapter 10 & JBD Chapter 10
February 14 Excpetions in C++ and Java Budd Chapter 11 & JBD Chapter 11
February 19 Features Found only in C++ Budd Chapter 12
February 21 review none
February 26 & 28 GUI in Java JBD Chapters 8&9
March 4 & 6 Threads JBD Chapter 13
March 11 & 13 Java Generics Generics Tutorial
Friday March 21st 8-11am Final Exam Everything


[Homepage] | [TA's & Tutors] | [Supplements] | [Homework] | [Exams]

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