InfoCoBuild

CS 61A: The Structure and Interpretation of Computer Programs

CS 61A: The Structure and Interpretation of Computer Programs (Spring 2015, UC Berkeley). Instructor: Professor John S. Denero. An Introduction to programming and computer science. This course exposes students to techniques of abstraction at several levels: (a) within a programming language, using higher-order functions, manifest types, data-directed programming, and message-passing; (b) between programming languages, using functional and rule-based languages as examples. It also relates these techniques to the practical problems of implementation of languages and algorithms on a von Neumann machine. There are several significant programming projects, programmed in a dialect of the LISP language.

Introduction


Lecture 01 - Introduction, Functions
Lecture 02 - Names
Lecture 03 - Control
Lecture 04 - Higher-Order Functions
Lecture 05 - Environments
Lecture 06 - Recursion
Lecture 07 - Tree Recursion
Lecture 08 - Function Examples
Lecture 09 - Data Abstraction
Lecture 10 - Sequences
Lecture 11 - Trees
Lecture 12 - Mutable Values
Lecture 13 - Mutable Functions
Lecture 14 - Objects
Lecture 15 - Inheritance
Lecture 16 - Representation
Lecture 17 - Generic Functions
Lecture 18 - Type Coercion, Linked Lists
Lecture 19 - Hierarchy: Memoization, Tree Class, Hailstone Trees, Binary Tree Class
Lecture 20 - Orders of Growth
Lecture 21 - Sets
Lecture 22 - Data Examples
Lecture 23 - User Interface - Alan Kay
Lecture 24 - Scheme
Lecture 25 - Exceptions
Lecture 26 - Calculator
Lecture 27 - Interpreters
Lecture 28 - Tail Calls
Lecture 29 - Iterators
Lecture 30 - Streams
Lecture 31 - Declarative Programming
Lecture 32 - Tables
Lecture 33 - Recursive Select
Lecture 34 - Aggregation
Lecture 35 - Distributed Computing
Lecture 36 - Distributed Data
Lecture 37 - Natural Language
Lecture 38 - Conclusion

References
CS61A: Structure and Interpretation of Computer Programs, Spring 2015
Instructor: Professor John S. Denero. Course Information. Lecture Slides. Reading. Handout. Assignment.