Week One: Introduction and the structure of the course. The Beginning Student Language; expressions and evaluation rules; primitive operations on numbers, strings and images. The How to Design Functions (HtDF) Recipe.
Week Two: Representing information as data. The How to Design Data (HtDD) recipe. Atomic forms of data including intervals, enumerations, and itemizations.
Week Three: The design of simple interactive programs. The big-bang user interface framework. The How to Design Worlds (HtDW) recipe. Representing information where two or more values naturally form a whole using compound data.
Week Four: Representing arbitrary sized information using lists. Decomposition of information into multiple types.
Week Five: Functions operating on natural numbers. A parlor trick. Rules for decomposing functions.
Week Six: List abbreviations. Mutual reference allows more complex arbitrary-sized data. Using binary trees to enable fast lookup of information. Using arbitrary arity trees to represent inherently hierarchical information.
Week Seven: Functions that consume two arguments that have 'one-of' in their types. Using local definitions to improve the structure of programs.
Week Eight: Using abstraction to control reduce repetition and complexity in programs.
Week Nine: Generative recursion, fractals and search problems.