The course consists of fours parts:


What is computing? What is programming?
Program design
Program evaluation

Designing programs
Describing data
Constructing programs from data descriptions
Organizing programs
Dealing with exceptions in inputs
Programs that deal with circular data
Programs that remember

Inside the Computer
Components of a computer and how they work together
Programming the computer
Machine Language
Assembly Language
C

Computer science: the science of abstraction
language translation
algorithmics
Problems that even a computer can't solve

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