The course consists of fours parts:
PRELIMINARY SCHEDULE ==================== Notes: (1) Exams 2 and 3 are not scheduled. They may move around. (2) Lecture topics may be moved without warning, depending on developments beyond the control of the instructor. SEPTEMBER 4: What are Computers, Programs, and Executions? ----------------------------------------------------------------------- 6: Basic Scheme: Expressions, Functions, Evaluations 9: Lists and List-programming [assignment 1] 11: More List-programming -- Functions are Black Boxes 13: Rules I: Syntax and Semantics 16: Web-programming [assignment 2] 18: Tree-programming 20: Functions of Two Complex Arguments 23: Obscene Programming and Analysis: let [assignment 3] 25: EXAM 1 "Recursive Functions and Evaluation" -- in class 27: Managing Data: define-structure OCTOBER 30: Program Decomposition: [assignment 4] Insertion Sort -- Functions as Black Boxes 2: Accumulator-style Programs: LOCAL and rules 4: Generative Recursion: Game Playing (next move), Numerical Methods 7: Generative Recursion: GCD, SmallestDiv, Quicksort [assignment 5] 9: Generative Recursion: QuickSort, Path in Graph 11: Functional Abstraction: Patterns 14: Functional Abstraction: Mathematical Uses 16: Functional Abstraction [assignment 6] 18: Rules II: Scope and Beta 21: BREAK BREAK BREAK 23: Functions Aren't Elephants: Remembering History 25: Time vs State: New Elements vs Changed Elements 28: Rules, set! vs set-bike-location!, Equality [assignment 7] 30: Remembering History versus Changing State 31: EXAM 2 "Program Design and Evaluation" -- evening 1: Path in Graph with Cycles -- Again NOVEMBER 4: Imperative Vectors 1 [assignment 8] 6: InClass Exam Appendix 8: Imperative Vectors 2 ----------------------------------------------------------------------- 11: Inside the Machine 13: Building a Machine [assignment 9] 15: Machine-level Programming: One Step at a Time 18: Assembly-level Programming 20: C-style Programming in Scheme and C I [assignment 10] 22: C-style Programming in Scheme and C II ----------------------------------------------------------------------- 25: What is Computer Science? 27: C vs Scheme THANKSGIVING BREAK DECEMBER 2: The Halting Problem 4: Algorithmica [assignment 11] 6: Object-Oriented Program Construction I: Data Descriptions as Classes 9: Object-Oriented Construction II: Programs in Classes 10: EXAM 3 "The Machine and Machine-Oriented Programming" -- evening 11: Conclusion [assignment 12] End of Semester: 12/11