Lectures (Video)
- 1. Functional Programming
- 2. Functional Programming II
- 3. Functions of Functions
- 4. Higher-Order Procedures
- 5. Higher-Order Procedures, UI
- 6. UI, Recursion and Iteration
- 7. Recursion and Iteration II
- 8. UI Recursion and Iteration III
- 9. Data Abstraction, Sequences Calculator I
- 10. Data Abstraction, Sequences Calculator II
- 11. Data Abstraction, Sequences Calculator III
- 12. Hierarchical Data I
- 13. Hierarchical Data II
- 14. Interpreter
- 15. Generic Operators I
- 16. Generic Operators II
- 17. Object-Oriented Programming I
- 18. Object-Oriented Programming II
- 19. Object-Oriented Programming III
- 20. Assignment, State, Environments I
- 21. Assignment, State, Environments II
- 22. Assignment, State, Environments III
- 23. Mutable Data
- 24. Vectors I
- 25. Vectors II
- 26. Client Server
- 27. Concurrency I
- 28. Concurrency II
- 29. Streams
- 30. Shell Programming I
- 31. Shell Programming II
- 32. Metacircular Evaluation I
- 33. Metacircular Evaluation II
- 34. Mapreduce I
- 35. Mapreduce II
- 36. Analyzing Eval
- 37. Therac
- 38. Lazy Evaluation I
- 39. Lazy Evaluation II
- 40. Nondeterministic Evaluation
- 41. Logic Programming I
- 42. Logic Programming II
- 43. Review I
- 44. Review II
The Structure and Interpretation of Computer Programs
Course Summary
This course is based on CS 61A The Structure and Interpretation of Computer Programs, Spring 2008 made available by University of California, Berkeley: Webcast.Berkeley under the Creative commons BY-NC-ND 2.5 license.
This course provides an introduction to programming and computer science. It is taught using Scheme, a dialect of the LISP programming language. It is based on the book Structure and Interpretation of Computer Programs by Abelson, Sussman, and Sussman. An online version of book is available here. The course is taught by Brian Harvey, Computer Science Division, University of California at Berkeley.
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 to be done in Scheme.
Reading Material
1. Structure and Interpretation of Computer Programs 2nd edAbelson, Harold, Gerald Jay Sussman, and Julie Sussman. Structure and Interpretation of Computer Programs. 2nd ed. Cambridge, MA: MIT Press, 1996. ISBN: 9780262011532.
(Full-text of the book is available online at the link above)
Course Material
1. Revised Report on Scheme (484 KB pdf)Scheme is a dialect of Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics. A wide variety of programming paradigms can be conveniently expressed in Scheme.
2. Object-Oriented Programming I
3. Object-Oriented Programming II
4. Reference Manual for the OOP Language
5. Highlights of GNU Emacs (167 KB pdf)
6. Emacs Quick Reference Guide
7. Lecture Notes (1.35 MB pdf)
Other Resources
1. MIT 6.001 Lecture NotesThe following are lecture notes from a similar course at MIT (6.001 Structure and Interpretation of Computer Programs, Spring 2005)
- Introduction to Computation (PDF - 2.1 MB)
- Scheme Basics (PDF - 1.5 MB)
- A Story about using Lisp in a Startup Company (PDF)
- Procedures, Processes, and Recursion (PDF - 2.1 MB)
- Orders of Growth and Kinds of Procedures (PDF - 1.7 MB)
- Data Abstraction (PDF - 2.1 MB)
- Higher Order Procedures (PDF - 2.1 MB)
- Good Programming Practices (PDF - 1.6 MB)
- Using Higher Order Procedures (PDF - 1.6 MB)
- Symbols and Quotation (PDF - 1.4 MB)
- Tagged Data (PDF - 2.2 MB)
- Advanced Data Types (PDF - 2.2 MB)
- Data Mutation (PDF - 1.7 MB)
- Trees, Graphs and Search (PDF - 2.2 MB)
- Environment Model (PDF 1 of 2 - 1.6 MB) (PDF 2 of 2 - 2.2 MB)
- Object Oriented Programming I (PDF - 2.3 MB)
- Object Oriented Programming II (PDF - 1.7 MB)
- Object Oriented Programming III (PDF - 2.0 MB)
- Interpretation (PDF 1 of 2 - 2.5 MB) (PDF 2 of 2 - 1.3 MB)
- Interpreter Code (PDF)
- The Meta-circular Evaluator (PDF - 2.6 MB)
- Evaluator Code (PDF)
- Lazy Evaluation (PDF 1 of 2 - 2.0 MB) (PDF 2 of 2 - 1.2 MB)
- Lazy Evaluator Code (PDF)
- Asynchronous Computing (PDF - 1.2 MB)
- Universal Machines (PDF)
- Computability (PDF)
2. Simply Scheme: Introducing Computer Science
Brian Harvey, Matthew Wright, Harold Abelson, 2nd Edition, MIT Press, 1999, ISBN 0262082810, 9780262082815.
(Click the button below to see a preview of the book)
Software
Not available.Discussion Forum
For discussion on this topic, please go to the relevant forum for The Structure and Interpretation of Computer Programs. Click the button below to open the forum page in a new window.