| Lecture 1 | Administrative matters; What is computer science? |
|---|---|
| Lecture 2 | Introduction to Scheme. |
| Lecture 3 | Scheme continued. |
| Lecture 4 | Some more special forms; lists. |
| Lecture 5 | Some paradigms for simple recursion. |
| Lecture 6 | Turing machines. |
| Lecture 7 | Let, map, and recursive and iterative processes. |
| Lecture 8 | Making iterative processes; the Church-Turing thesis. |
| Lecture 9 | The Halting Problem. |
| Lecture 10 | Unsolvable problems. |
| Lecture 11 | Boolean functions and expressions. |
| Lecture 12 | Tree (or deep) recursion and Boolean expressions. |
| Lecture 13 | 0100100001101001. |
| Lecture 14 | Gates, circuits, Boolean bases. |
| Lecture 15 | Multiplexor and binary addition circuits. |
| Lecture 16 | Memory and a simple hardware design. |
| Lecture 17 | Random access memory, the ICS-201 computer. |
| Lecture 18 | Writing ICS-201 programs. |
| Lecture 19 | Vectors and mutators in Scheme. |
| Lecture 20 | Environments in Scheme. |
| Lecture 21 | A stack data structure in Scheme. |
| Lecture 22 | Regular expressions and finite state machines. |
| Lecture 23 | Context free languages and BNF. |
| Lecture 24 | Parsing via searching. |
| Lecture 25 | A simple depth-first search space. |
| Lecture 26 | Code generation and compilers concluded. |
| Lecture 27 | Comparisons of algorithms. |
| Lecture 28 | The running time of a program. |
| Lecture 29 | Efficient algorithms and data structures. |
| Lecture 30 | Time complexity and P versus NP. |
| Lecture 31 | Efficiency of list operations. |
| Lecture 32 | Conclusion of list representation; memoization. |
| Lecture 33 | Memoization applied. |
| Lecture 34 | Artificial intelligence. |
| Lecture 35 | Artificial intelligence, continued. |
| Lecture 36, part 1 | Stacks, queues and search. |