All dates in the following schedule are tentative, except those fixed by the University; if some topic listed here as taking one lecture in fact takes two lectures to cover adequately, or vice versa, the schedule will shift.
In the column marked ``Reading'', all page numbers are in the ``Walls and Mirrors'' book unless stated otherwise. Remember, I also expect you to read through most of the Humphrey book, and look up individual language topics in the Stroustrup book, as necessary.
I expect you to have read the reading assignments before the lecture that deals with that topic. This way I can concentrate my time on answering questions and clarifying subtle or difficult points in the textbook, rather than on reading the textbook to you, which will bore both of us. Please read ahead!
When I say ``read'' above, I mean an active process, involving not only the textbook but pencil, scratch paper, and a notebook for writing down key points. Finally, and perhaps most importantly, you'll need a computer for trying out the new ideas you find in your reading. Just as you cannot learn to drive a car or to cook just by reading about it, you cannot learn about programming just by reading about it. In short, every time you read about a new programming idea, try it!
| Date | Assignment | Reading | Subject |
|---|---|---|---|
| Aug. 30 | Administrivia, syllabus, textbook, software, program standards,... | ||
| Sept. 4 | HW1 | A1-A37 | C++ review |
| Sept. 6 | A37-A63 | C++ review | |
| Sept. 7 | Deadline to add a course | ||
| Sept. 11 | pp. 1-25 | Software engineering, record-keeping, and abstraction | |
| Sept. 13 | HW1 due | pp. 25-47 | Modularity, modifiability, usability, fail-safety, style, debugging |
| Sept. 18 | Rosh Hashanah | ||
| Sept. 20 | HW2 | pp. 53-74 | Recursion |
| Sept. 21 | Deadline to drop a course | ||
| Sept. 25 | pp. 74-103 | More recursion | |
| Sept. 27 | Yom Kippur | ||
| Oct. 2 | HW2 due; HW3 | pp. 112-129 | Abstract data types |
| Oct. 4 | pp. 131-156 | Interface vs. implementation | |
| Oct. 9 | pp. 163-172 | Pointers and dynamic allocation | |
| Oct. 11 | HW3 due; HW4 | pp. 376-396 | Inheritance and polymorphism |
| Oct. 16 | pp. 376-396 | Inheritance and polymorphism | |
| Oct. 18 | HW5 | Programming with polymorphism | |
| Oct. 23 | A polymorphic implementation of lists | ||
| Oct. 25 | HW4 due | A polymorphic implementation of lists | |
| Oct. 26 | Deadline to withdraw from a course | ||
| Oct. 30 | Review of arrays, pointers, and dynamic allocation | ||
| Nov. 1 | Continue discussing arrays, pointers, and dynamic allocation | ||
| Nov. 6 | Implementing self-referential data structures polymorphically in C++ | ||
| Nov. 8 | Memory management, garbage collection, and destructors | Nov. 13 | HW6 | pp. 172-193 | Null-terminated linked lists |
| Nov. 15 | pp. 193-212 | More on null-terminated linked lists; double links | |
| Nov. 20 | HW5 due | Keep working on null-terminated linked lists | |
| Nov. 22 | Thanksgiving | ||
| Nov. 27 | pp. 212-228 | Applications of linked lists; Containers, Iterators, and Visitors | |
| Nov. 29 | HW6 due; HW7 | pp. 271-298 | Stacks |
| Dec. 4 | pp. 331-351 | Queues | |
| Dec. 6 | pp. 433-454 | Efficiency and sorting | |
| Dec. 11 | pp. 454-476 | More sorting algorithms | |
| Dec. 13 | HW7 due | Catch up and review | |
| Dec. 20 | 1:00-3:00, final exam | ||