COM1204 Summer 1998 Syllabus

This page will be updated from time to time. Last update 6/22/98 11:30pm.

The first five classes will be a rapid overview of all the major topics you will need to get started with your programming assignments ("PAs"). You need to pay careful attention to this material, because there will be a quiz in the seventh class on the material. After that the material will be covered more slowly and in more depth, and additional topics will be covered.

Reading assignments always designate the material that you should have read before coming to the corresponding class. My lectures will assume you have done the reading. I will not simply repeat the material in the book, but discuss it, try to clarify difficult points, and give examples, as well as explaining the particular approach we are taking to various topics. If you don't do the readings, you could get lost or confused in class and in the quizzes and on the exams! The readings in the two texts will be indicated by "M" for Meyer's book and by "LL" for Lippman and Lajoie's book. In LL you should always read the initial, unnumbered section of any chapter in which there are assigned readings.

Though the readings assigned in Lippman and Lajoie are extensive, much of it should be review. The proper way to learn the way object-oriented and other programming concepts are imbedded in C++ is to include as many constructs as you reasonably can in your programs. To a degree, proper use of a large variety of different constructs in your programs will enhance your grade -- but use good taste -- don't overdo it!

Meyer's book is excellent for the object-oriented design discussions it contains. Readings in Meyer will gradually make more sense, and be more relevant, in the second half of the course after we have some examples under our belt.

It is important to reiterate that there are on-line documents describing how to use the Metrowerks Code Warrior. You should look through these to get familiar with their contents, and refer to them as necessary.

6/23 - Wednesday
Start of the Overview. The project for this summer, the Phone System (PS). Object basics: Classes, objects, member functions. Design basics.
6/24
Programming project structure -- documentation and comments, coding, running, testing, and debugging. LL: pgs. 1-3, Chap. 1 (all).
6/29 - Monday
Object creation, I/O and files. LL: Chap. 2 (all)
7/1
Building and testing the PS. LL: Chap. 3, sections 1-5, 7-10
7/2
Overview windup.
7/6 - Monday
Classes and objects -- designing the PS, Stage 1. LL: Sec. 3.15, Chap. 13, sections 1-2. M: Chap. 7, sections 1-7, 9
7/8
Quiz #1, covering the Overview
7/9
Functions, especially member functions, argument types and defaults, return values, and especially, returning objects. LL: Chap. 4, sections 1-5, 7, 9, 13, Chap. 13, sections 3.1-3.4, 4, 5 (not 5.1).
7/13 - Monday
Design for object use. M: Chap. 8, sectdions 1-2, 5-6
7/15
Object creation and initialization. LL: Chap. 14, sections 1-2, 5, 8. M: Chap. 8, sections 3-4, Chap. 9, sections 1-2
7/16
I/O and files, iostreams in C++. Chap. 20 (all)
7/20 - Monday
Design documentation and comments. Running the system -- drivers, stubs, and logging
7/22
Quiz #2, covering classes, objects, I/O and design principles
7/23
Modularity in design and testing. Building and adapting for change. M: Chap. 10, sections 1-3
7/27 - Monday
Class inheritance and its use. LL: Chap. 17, sections 1-4. Containment (aggregation) as another organizing principle.
7/29
Design of the PS, Stage 2
7/30
Strings and the string class, LL: Sec. 3.4.2. Templates and the vector class, Sec. 2.8, Sec. 3.10, Chap. 16, sections 1-3
8/3 - Monday
Details of inheritance. LL: Sec. 17.5. Review for the Midterm exam
8/5
Midterm exam, covering all course material through 8/3
8/6
Memory management
8/10 - Monday
Design of the PS, Stage 3
8/12
Information hiding and encapsulation
8/13
Advanced design concepts, including Patterns, multiple inheritance, ....
8/17 - Monday
Design of the PS, final stage, Stage 4
8/19
Advanced design concepts, continued.
8/20
Catch-up 1
8/24 - Monday
Catch-up 2
8/26
Catch-up 3
8/27
Last class -- review for the Final Exam