CS 61A: The Structure and Interpretation of Computer Programs
CS 61A: The Structure and Interpretation of Computer Programs (Spring 2012, UC Berkeley). Instructor: Professor Paul Hilfinger. 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. This semester, 61A will be taught
using the Python 3 programming language. Python is a popular language in both industry and academia.
| Lecture 01 - Introduction, Functions |
| Lecture 02 - Functions, Expressions, Environments |
| Lecture 03 - Recap of Function Evaluation; Control |
| Lecture 04 - High-Order Functions |
| Lecture 05 - High-Order Functions (Cont.) |
| Lecture 06 - Abstraction and Objects |
| Lecture 07 - Floating-point, Data Abstraction |
| Lecture 08 - Sequences |
| Lecture 09 - Operations on Sequences |
| Lecture 10 - Sequences and Strings |
| Lecture 11 - Strings |
| Lecture 12 - Mutable Data |
| Lecture 13 - List, Objects, and Arrows |
| Lecture 14 - Dictionaries and Classes |
| Lecture 15 - Object Oriented Programming (OOP) |
| Lecture 16 - Interfaces and Generic Functions |
| Lecture 17 - Exceptional Conditions, Objects in Expressions |
| Lecture 18 - Objects in Expressions, Recursion |
| Lecture 19 - More Recursion |
| Lecture 20 - Recursive Processes, Memoization |
| Lecture 21 - Tree Structures |
| Lecture 22 - Tree Structures, Complexity and Orders of Growth |
| Lecture 23 - Complexity and Orders of Growth |
| Lecture 24 - Complexity and Orders of Growth, Programming Languages and Programs |
| Lecture 25 - Programming Languages and Programs, Calculator Example: Parsing |
| Lecture 26 - The Scheme Language |
| Lecture 27 - Scheme Examples, Interpreters |
| Lecture 28 - Scheme and Interpretation |
| Lecture 29 - Project 4 Overview |
| Lecture 30 - The Halting Problem and Incompleteness |
| Lecture 31 - Concurrency and Parallelism |
| Lecture 32 - Parallelism |
| Lecture 33 - Coordinating Parallel Computation |
| Lecture 34 - Streams and Lazy Evaluation |
| Lecture 35 - Streams and Concurrency |
| Lecture 36 - MapReduce |
| Lecture 37 - Declarative Programing |
| Lecture 38 - Declarative Programming (Cont.) |
| Lecture 39 - Cryptography |
| Lecture 40 - Conclusion |