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.
Go to the Course Home or watch other lectures:
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 |