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 | Functions from Functions | |
17 | Mathematical First-Class Functions; Editing Programs | |
18 | Quick Sort; Sierpinski |
Generative Recursion, Accumulation |
Week 7: Generate and Recur [Lab topic: LAMBDA and more iterators] | ||
19 | Searching a Root: Iterative, Binary, and Newton | |
20 | More Roots; The Recipe | |
21 | Termination |
Week 8: Backtracking and Accumulators [Lab topic: GCD; The Nature of Numbers] | ||
22 | Gaussian Elimination | |
23 | Graphs and Backtracking | |
24 | Accumulators: Making Change, Planning a Route |
Week 9: More on Accumulators [Lab topic: ---] | ||
25 | Accumulator Style | |
26 | What are Accumulators? Iteration. | |
27 | --- Easter Break --- |
Imperative Program Design |
Week 10: Stateful Programming [Lab topic: set! vs set-xyz-abc!] | ||
28 | Functions with Memory | |
29 | Modifying Structures | |
30 | Extensional vs Intentional Equality |
Week 11: Functions and their History [Lab topic: set! vs set-xyz-abc!] | ||
31 | Why: Keeping track of history | |
32 | Cyclic Graphs | |
33 | Vectors |
Week 12: Vectors [Lab topic: build-vector vector-set!] | ||
34 | Vectors | |
35 | Vectors at Work |
Inside the Machine, Programming the Machine |
Week 13: A Model of the Real Machine [Lab topic: Loops; Interacting with the JAM2000] | ||
36 | How the Man in the Machine Really Works | |
37 | Simple Machine-Level Programs |
What is Computer Science? |
Week 14: Many Levels of Abstraction [Lab topic: Core C: Practice] | ||
38 | Marx and Hegel: From Scheme to the Machine and back | |
39 | Conclusion |
Matthias Felleisen | This page was generated on Wed Apr 21 11:40:31 CDT 1999. |