| Functional Design |
| Week 1: Basic Scheme, Basic Design Recipes [Lab topic: Editing, (Hand) Evaluating with DrScheme, Design Recipe (Outline)] | ||
| 1 | What is Computation? What is Programming? Processing Numbers | |
| 2 | Processing Intervals (Conditionals) | |
| 3 | Processing Lists of Fixed Length (Structures) |
| Week 2: Simple Recursive Recipes [Lab topic: How to Use Design Recipes, define-struct] | ||
| 4 | Processing Lists of Arbitrary Length | |
| 5 | Design Recipes | |
| 6 | Rules I: Syntax and Evaluation |
| Week 3: Complex Recursive Recipes [Lab topic: Developing Recursive Functions with Recipe] | ||
| 7 | Programs that Construct Lists | |
| 8 | Processing Family Trees | |
| 9 | Different Family Trees; Natural Numbers |
| Week 4: Programs Composition [Lab topic: Practice with Deep Recursion [S-expression]] | ||
| 10 | Files and Directories | |
| 11 | More on Files; Functions that Process Two Complex Arguments | |
| 12 | The Scope of Things and LOCAL |
| Functional Abstraction |
| Week 5: Abstraction, Functions as Values [Lab topic: Practice with Deep Recursion [S-expression]] | ||
| 13 | Insertion Sort and Functional Abstraction | |
| 14 | Practice with Using Functional Abstractions | |
| 15 | Data Abstraction, Contracts with Variables |
| Week 6: More on Functions; Generative Recursion [Lab topic: Abstraction and Iterators] | ||
| 16 | Mathematical First-Class Functions | |
| 17 | Quick Sort, Binary Search | |
| 18 | The Recipe; Sierpinski |
| Generative Recursion, Accumulation |
| Week 7: Generate and Recur [Lab topic: LAMBDA and more iterators] | ||
| 19 | Gaussian Elimination | |
| 20 | Backtracking | |
| 21 | BREAK |
| Week 8: Accumulators [Lab topic: Compare evaluations: space vs time (factorial); Single Pass] | ||
| 22 | Planning a Route -- With Accumulator | |
| 23 | Making a Schedule | |
| 24 | Transforming Numeric Functions into Accumulator-Style |
| Imperative Program Design |
| Week 9: Motivating State-Changing Functions [Lab topic: State Change, Syntax of C] | ||
| 25 | Functions their History | |
| 26 | State of Real-World Objects | |
| 27 | Rules III, especially set! vs Structure Mutation; Equality |
| Week 10: More on History; Recording and State-Change [Lab topic: Simple Vectors] | ||
| 28 | Graphs with Cycles | |
| 29 | Vectors I: Building and Reducing | |
| 30 | Vectors II: Iterating |
| Inside the Machine, Programming the Machine |
| Week 11: A Model of the Real Machine [Lab topic: Interacting with the JAM2000, Imprecision of Number Systems] | ||
| 31 | How the Man in the Machine Really Works | |
| 32 | Simple Machine-Level Programs | |
| 33 | Modeling a Machine |
| Week 12: Programming the Machine [Lab topic: Translating from Simple Scheme to C] | ||
| 34 | Plain Assembly Language | |
| 35 | C-style Assembly Language | |
| 36 | Implementing Simple Scheme Functions in C |
| What is Computer Science? |
| Week 13: Many Levels of Abstraction [Lab topic: Core C: Practice] | ||
| 37 | Marx and Hegel: From Scheme to the Machine and back | |
| 38 | Assembly vs C vs Scheme: Who manages what? | |
| 39 | The Halting Problem |
| Week 14: From Functional Design to Object-Oriented Design [Lab topic: Using JDK, Applets] | ||
| 40 | Java I: Objects and Design | |
| 41 | Java II: Objects and State | |
| 42 | Conclusion |
| Matthias Felleisen | This page was generated on Fri Mar 5 09:04:57 CST 1999. |