Principles of Program Design

Catalog Description: How to systematically design programs in functional and
object-oriented languages. Includes inductive data definitions,
data-directed program design, test-driven software development,
semantic reduction rules, recursive problem decomposition, procedural
abstraction, functions as values, tail recursion and loops,
object-oriented design patterns, algorithmic efficiency, programming in
Scheme and Java.

Design Goals

Joe: We want a strong, technical course with faculty buy-in.

Walid: The central, technical introductory course at a research university should capture the collective wisdom of the various research programs hosted by the department. Achieving this requires participation of the whole faculty. This participation, in turns, requires clearly documenting both the goals and the content of the course.

Timeline and Working Schedule

Jan 2009 Class goes live!
Aug 2008 Development of notes, homeworks, quizes must start
...
...
Feb 2008 Meetings for designing the course start

Minutes 2008/2/13

Joe, Corky, Alan, Walid (taking notes)

Walid: It would be useful for us to write a paper that explaining the rational behind the course and document our experience teaching it. This can also help with the faculty buy in process.

Corky: We want to modify 212 to fit 210. Critical of some design pattern literature. There is much deeper explanation for design patterns than what people give right now.

Joe: "slide 7" of 210 lecture 1 is the right level for explaining the things to the faculty.

Corky: Slide 7: we can drop the eq stuff. We need to determine exact transition point.

Alan (Joe agrees): We need to examine 280, 314 and 211 together to get coherent curriculum.

...

Access Control: (Please don't edit)