InfoCoBuild

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.

Introduction


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

References
CS61A: Structure and Interpretation of Computer Programs, Spring 2012
Instructor: Paul Hilfinger. Course Information and Policies. Lecture Slides. Python 3 Documentation. Online Textbook.