Course Description

This course will teach the art of software design: how to decompose large complex systems into classes that can be implemented and maintained easily. Topics include information hiding, thick classes, API design, managing complexity, error handling, and how to write in-code documentation. The class will involve significant system software implementation and will use an iterative approach consisting of implementation, review, and revision. The course will be taught in a studio format with in-class discussions and code reviews in addition to lectures. Course enrollment is limited; you must apply for admission.

Basic Information

Instructor: John Ousterhout
Class meetings: MWF 12:50-2:05
420-050
Online discussions: Piazza

Useful Links

Upcoming Class Meetings

Full class schedule... »

Upcoming Projects

All projects... »