| Functional Design | ||
| Week 1: Basic Scheme, Basic Design Recipes [Lab topic: ] | ||
| ------------ Martin Luther King Day (no class) ------------------ | ||
| 1 | What is Computation? What is Programming? Processing Numbers | |
| 2 | Processing Intervals (Conditionals) | |
| Week 2: Compound Data with Structures [Lab topic: ] | ||
| 3 | Symbolic Information | |
| 4 | Defining Simple Compound Data (Lists of Finite Length) | |
| 5 | Processing Structures | |
| Week 3: Simple Recursive Recipes [Lab topic: ] | ||
| 6 | Defining Lists of Arbitrary Length | |
| 7 | Processing Lists of Arbitrary Length | |
| 8 | Processing Lists of Arbitrary Length, Continued | |
| Week 4: Complex Recursive Recipes [Lab topic: ] | ||
| 9 | Processing Lists of Mixed Data ; Programs that Construct Lists | |
| 10 | Programs over Natural Numbers | |
| ------------ Exam 1 (in class) ------------------ | ||
| Week 5: Program Composition [Lab topic: ] | ||
| 11 | Processing Family Tree | |
| 12 | More Family Trees | |
| 13 | Family Trees, part III | |
| Week 6: More Mutual Recursion and Local [Lab topic: ] | ||
| 14 | Files and Directories | |
| 15 | Functions that Process Two Complex Arguments | |
| 16 | The Scope of Things and LOCAL | |
| Functional Abstraction | ||
| Week 7: Abstraction, Functions as Values [Lab topic: ] | ||
| 17 | Functional Abstraction | |
| 18 | Practice with Using Functional Abstractions; Contracts with Variables | |
| 19 | Functions as Values; Functions that Return Functions | |
| Week 8: Mid-Term Recess | ||
| ------------ Mid-Term Recess ------------------ | ||
| ------------ Mid-Term Recess ------------------ | ||
| ------------ Mid-Term Recess ------------------ | ||
| Generative Recursion, Accumulation | ||
| Week 9: Generative Recursion [Lab topic: ] | ||
| 20 | Quick Sort; Sierpinski | |
| 21 | The Design Recipe for Generative Recursion | |
| 22 | Gaussian Elimination | |
| Week 10: Generate and Recur [Lab topic: ] | ||
| 23 | Finding Routes | |
| 24 | Accumulators | |
| 25 | Designing Programs with Accumulators | |
| Week 11: More on Accumulators [Lab topic: ] | ||
| 26 | When to Use Accumulators | |
| 27 | Accumulators on Trees | |
| ---------------- Spring Recess (no class) ----------------- | ||
| Imperative Program Design | ||
| Week 12: State [Lab topic: ] | ||
| 28 | Memoization | |
| 29 | When to Use set! | |
| 30 | Set! and Objects | |
| Week 13: More State; Vectors [Lab topic: ] | ||
| 31 | Updating structures | |
| 32 | More on updating structures | |
| 33 | Vectors | |
| Week 14: More Vectors; Inside the Machine [Lab topic: ] | ||
| 34 | Vectors and Practice | |
| 35 | How DrScheme Really Works | |
| 37 | Simple Machine-Level Programs | |
| What is Computer Science? | ||
| Week 15: A Model of the Real Machine; What is Computer Science? [Lab topic: ] | ||
| 38 | Modeling a Machine | |
| 39 | Marx and Hegel: From Scheme to the Machine and back | |
| 40 | The Halting Problem | |