Computer Science 201a Lecture Notes, Fall 2002


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.