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.
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 |
|---|---|---|---|
| Sept. 6 | About the course, syllabi, texts | ||
| Sept. 8 | Language about language; lexical, syntactic, and semantic concerns; BNF, syntax trees, etc. | ||
| Sept. 11 | Budd 1 | Philosophy of C++; a minimal C++ program; using the compiler(s) | |
| Sept. 13 | HW1 | Budd 2 | Primitive data types; variable & function declaration (first pass) |
| Sept. 15 | Variables vs. values; stack vs. heap variables | ||
| Sept. 15 | Last day to add courses | ||
| Sept. 18 | HW1 due; HW2 | Budd 2 | Enumerated types, arrays, structs, and unions |
| Sept. 20 | Budd 3 | Pointers and addresses (and arrays) | |
| Sept. 22 | HW2 due; HW3 | Budd 3 | References; more about arrays |
| Sept. 25 | Budd 4 | Stack vs. heap variables again; slicing and other horrors | |
| Sept. 27 | HW3 due | Budd 4 | "new" and "delete"; common memory-management bugs |
| Sept. 29 | Budd 5 | Classes; include files and prototypes | |
| Oct. 2 | Budd 5 | More features of classes | |
| Oct. 2 | Last day to drop courses | ||
| Oct. 4 | HW4 | Budd 8 | strings and character arrays |
| Oct. 6 | Budd 8 | and more about strings and character arrays | |
| Oct. 9 | Yom Kippur; no classes | ||
| Oct. 11 | Budd 6 | Polymorphism; virtual vs. non-virtual overriding | |
| Oct. 13 | Budd 6 | More features of polymorphism | |
| Oct. 16 | HW4 due; HW5 | ||
| Oct. 18 | |||
| Oct. 20 | |||
| Oct. 23 | Budd 7 | Operator overloading | |
| Oct. 25 | HW5 due | Budd 9 | Templates |
| Oct. 27 | Budd 10 | C-style and C++-style I/O | |
| Oct. 30 | Budd 11 | Exceptions; review for midterm exam | |
| Nov. 1 | Midterm exam | ||
| Nov. 3 | Discuss midterm | ||
| Nov. 3 | Last day to withdraw from courses | ||
| Nov. 6 | HW6 | History & philosophy of C; a minimal C program; using the compiler(s) | |
| Nov. 8 | Budd 10 | I/O in C | |
| Nov. 10 | Replacing member functions with functions | ||
| Nov. 13 | HW6 due; HW7 | Replacing classes with structs | |
| Nov. 15 | Memory management and pointers | ||
| Nov. 17 | Review of strings | ||
| Nov. 20 | Miscellaneous topics | ||
| Nov. 22 | Quiz? | ||
| Nov. 24 | Thanksgiving; no classes | ||
| Nov. 27 | HW8 | AMZI preface,1,2 | History & philosophy of Prolog; using the system; facts and queries; spelling & syntax; variables. |
| Nov. 29 | 3,4 | Simple and compound queries; backtracking | |
| Dec. 1 | HW7 due; HW8 due; HW9 | 5,6 | Writing and using rules; arithmetic |
| Dec. 4 | 7,8 | The rule database; recursion | |
| Dec. 6 | 9,10 | Compound data and unification | |
| Dec. 8 | 11,12 | Lists and operators | |
| Dec. 11 | 13,14 | Cut and other control tricks | |
| Dec. 13 | 15 | Natural-language processing; discuss Prolog homework | |
| Dec. 15 | HW9 due | catch up and review for final exam | |
| Dec. 22 | 10:30 AM-12:30 PM, final exam | ||