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 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.