Princeton University
Computer Science Dept.

Computer Science 333
Advanced Programming Techniques

Andrew Koenig

Spring 1999


Directory
Schedule and Readings | Course Newsgroup | Links | What's New?

Lectures: MW at 1:30-2:50
Professor: Andrew Koenig, ark@research.att.com
Office hours: by appointment

Teaching assistants:

Geliang Tong, tong@cs.princeton.edu
Office hours: Monday, 10:00-12:00, room 415

George Tzanetakis, gtzan@cs.princeton.edu
Office hours: Friday, 10:00-12:00, room 417

Jiannan Zheng, zjn@cs.princeton.edu
Office hours: Wednesday, by appointment (afternoons preferred), room 314

TA comments on the homework assignments:

Assignment 1



Lecture notes:

1. February 1: Introduction (PDF slides, handouts)
2. February 3: Design variations and data abstraction (PDF slides, handouts)
3. February 7: Programming with abstract data types (PDF slides, handouts)
4. February 9: A completely different look at abstraction (PDF slides, handouts)
5. February 15: Abstraction and design (PDF slides, handouts)
6. February 17: Another example of abstraction (PDF slides, handouts)
7. February 22: Controlling copies of objects (PDF slides, handouts)
8. February 24: Handles and use counts (PDF slides, handouts)
9. March 8: Performance: theory and practice (PDF slides, handouts)
10. March 22: Inheritance (PDF slides, handouts)
11. March 24: Dynamic binding (PDF slides, handouts)
12. March 29: An object-oriented program (PDF slides, handouts, C simulation of program described here)
13. March 31: Handles and use counts (revisited) (PDF slides, handouts)
14. April 5: Generic programming (PDF slides, handouts, program to use as basis for homework)
15. April 7: Generic iterators (PDF slides, handouts)
16. April 12: Generic programs (PDF slides, handouts)
17. April 14: Software project management (PDF slides, handouts)
18. April 19: Generic handles (PDF slides, handouts, handle code, expr code)
19. April 21: Computing with functions (PDF slides, handouts)
20. April 26: Reliable programming (PDF slides, handouts)
21. April 28: Programming abstractly (PDF slides, handouts)