Learn CS

CS 61A Structure and Interpretation of Computer Programs



The CS 61 series is an introduction to computer science, with particular emphasis on software and on machines from a programmer's point of view.

  1. CS 61A concentrates on the idea of abstraction, allowing the programmer to think in terms appropriate to the problem rather than in low-level operations dictated by the computer hardware.
  2. CS 61B deals with the more advanced engineering aspects of software, such as constructing and analyzing large programs.
  3. CS 61C focuses on machines and how they execute programs.

In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming.

CS 61A primarily uses the Python 3 programming language. Python is a popular language in both industry and academia. It is also particularly well-suited to the task of exploring the topics taught in this course. It is an open-source language developed by a large volunteer community that prides itself on the diversity of its contributors. We will also use two other languages in the latter half of the course: the Scheme programming language and the Structured Query Language (SQL).

Mastery of a particular programming language is a very useful side effect of CS 61A. However, our goal is not to dictate what language you use in your future endeavors. Instead, our hope is that once you have learned the concepts involved in programming, you will find that picking up a new programming language is but a few days' work.


  1. Functions Video edX full 1pp 8pp 01.py
  2. Names Video edX full 1pp 8pp 02.py
  3. Control Video edX full 1pp 8pp 03.py
  4. Higher-Order Functions Video edX full 1pp 8pp 04.py
  5. Environments Video edX full 1pp 8pp 05.py
  6. Iteration Video edX full 1pp 8pp 06.py
  7. Design Video edX full 1pp 8pp 07.py
  8. Function Examples Video edX full 1pp 8pp 08.py
  9. Recursion Video edX full 1pp 8pp 09.py
  10. Tree Recursion Video edX full 1pp 8pp 10.py
  11. Containers Video edX full 1pp 8pp 11.py
  12. Data Abstraction Video edX full 1pp 12.py
  13. Trees Video edX full 1pp 8pp 13.py
  14. Mutable Values Video edX full 1pp 8pp 14.py
  15. Mutable Functions Video edX full 1pp 8pp 15.py
  16. Iterators Video edX full 1pp 8pp 16.py
  17. Objects Video full 1pp 8pp 17.py
  18. Inheritance Video full 1pp 8pp 18.py
  19. Representation Video full 1pp 8pp 19.py
  20. Composition Video full 1pp 8pp 20.py
  21. Efficiency Video full 1pp 8pp 21.py 21.ipynb
  22. Decomposition Video full 1pp 8pp 22.py 22.zip
  23. Data Examples Video full 1pp 8pp 23.py
  24. Users Video
  25. Scheme Video full 1pp 8pp 25.scm
  26. Exceptions Video full 1pp 8pp 26.py 26.scm
  27. Calculator Video full 1pp 8pp 27.scm 27.zip
  28. Interpreters Video full 1pp 8pp
  29. Tail Calls Video full 1pp 8pp 29.scm
  30. Macros Video full 1pp 8pp 30.scm
  31. Streams Video full 1pp 8pp 31.scm
  32. Declarative Programming Video full 1pp 8pp 32.sql
  33. Tables Video full 1pp 8pp 33.sql
  34. Aggregation Video full 1pp 8pp 34.sql 34.zip
  35. Databases Video full 1pp 8pp 35.py 35.sql
  36. Distributed Data Video full 1pp 8pp 36.py
  37. Natural Language Video full 1pp 8pp 37.zip
  38. Final Examples Video full 1pp 8pp 38.py
  39. Conclusion Video full 1pp 8pp


What's Next

CS 61B Data Structures