210 Sample Schedule




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.