CS61A Structure and Interpretation of Computer Programs




Announcements

7/10 The survey that accompanied the first midterm is available here. Please fill it out: we will collect it in return for your graded midterm.
6/18 Most of our announcements will be made on Piazza, so if you are a student of our class, please join our Piazza group.

Weekly Schedule

Monday Tuesday Wednesday Thursday Friday
8:00          
8:30          
9:00          
9:30          
10:00          
10:30          
11:00 Lecture
(105 Stanley)
Lecture
(105 Stanley)
Lecture
(105 Stanley)
Lecture
(105 Stanley)
 
11:30  
12:00  
12:30 Lab 101
(271 Soda)
Lab 105
(273 Soda)
Dis 101
(320 Soda)
Dis 105
(405 Soda)
Lab 101
(271 Soda)
Lab 105
(273 Soda)
Dis 101
(320 Soda)
Dis 105
(405 Soda)
 
1:00  
1:30  
2:00 Lab 102
(271 Soda)
Dis 102
(320 Soda)
Lab 102
(271 Soda)
Dis 102
(320 Soda)
 
2:30  
3:00  
3:30 Lab 103
(271 Soda)
Dis 103
(320 Soda)
Lab 103
(271 Soda)
Dis 103
(320 Soda)
 
4:00  
4:30  
5:00 Lab 104
(271 Soda)
Dis 104
(320 Soda)
Lab 104
(271 Soda)
Dis 104
(320 Soda)
 
5:30  
6:00  
6:30 Lab 106
(271 Soda)
Dis 106
(320 Soda)
Lab 106
(271 Soda)
Dis 106
(320 Soda)
 
7:00  
7:30  

Calendar


Week Date Lecture Topic Reading (Sections) Discussion and Lab Homework Due Project Due
1 Mon 18 Jun Course Introduction and Python Basics
(PDF (1pp) | PDF (6pp) | PPTX)
1.1 Lab 1    
Tue 19 Jun Functions and Applicative Model of Computation
(PDF (1pp) | PDF (6pp) | PPTX)
1.2–1.5 Discussion 1
Solutions
   
Wed 20 Jun Higher Order Functions
(PDF (1pp) | PDF (6pp) | PPTX)
1.6.1–1.6.5, 1.6.7–1.6.8 Lab 2    
Thu 21 Jun Higher Order Functions
(PDF (1pp) | PDF (6pp) | PPTX)
1.6.1–1.6.5, 1.6.7–1.6.8 Discussion 2
Solutions
   
Fri 22 Jun       Homework 1 (11:59 PM)
Solutions
 
2 Mon 25 Jun Applications of Higher Order Functions
(PDF (1pp) | PDF (6pp) | PPTX)
1.6.6 Lab 3    
Tue 26 Jun Recursion
(PDF (1pp) | PDF (6pp) | PPTX)
1.7.1–1.7.3 Discussion 3
Solutions
Homework 2 (11:59 PM)
Solutions
 
Wed 27 Jun Complexity and Orders of Growth
(PDF (1pp) | PDF (6pp) | PPTX)
1.7.4 Lab 4    
Thu 28 Jun Data Abstraction
(PDF (1pp) | PDF (6pp) | PPTX)
2.1–2.3 Discussion 4
Solutions
   
Fri 29 Jun       Homework 3 (11:59 PM)
Solutions
Project 1 (11:59 PM)
3 Mon 2 Jul Tuples, Ranges and
Immutable Recursive Lists
(PDF (1pp) | PDF (6pp) | PPTX)
2.4.1–2.4.2 Lab 5    
Tue 3 Jul Immutable Lists and Dictionaries
(PDF (1pp) | PDF (6pp) | PPTX)
2.4.2–2.4.3 Discussion 5
Solutions
Homework 4 (11:59 PM)
Solutions
 
Wed 4 Jul Independence Day Holiday (No Class) Lab 6    
Thu 5 Jul Immutable Trees
(PDF (1pp) | PDF (6pp) | PPTX)
2.4.4 Discussion 6
Solutions
   
Fri 6 Jul       Homework 5 (11:59 PM)
Solutions
 
4 Mon 9 Jul Immutable Trees
(PDF (1pp) | PDF (6pp) | PPTX)
2.4.4 Lab 7    
Midterm 1 (7:00 PM–9:00 PM, 2050 VLSB)
(Sample Exam | Exam | Survey |
Appendix | Solutions)
Tue 10 Jul Object Oriented Programming
(PDF (1pp) | PDF (6pp) | PPTX)
3.1, 3.3 Discussion 7
Solutions
Homework 6 (11:59 PM)
Solutions
 
Wed 11 Jul Object Oriented Programming
(PDF (1pp) | PDF (6pp) | PPTX | Code)
3.1, 3.3 Lab 8    
Thu 12 Jul Object Oriented Programming,
Mutable Lists
(PDF (1pp) | PDF (6pp) | PPTX | Code)
3.1, 3.3 Discussion 8
Solutions
   
Fri 13 Jul         Project 2 (11:59 PM)
Sat 14 Jul       Homework 7 (11:59 PM)
Solutions
 
5 Mon 16 Jul Mutable Lists and Dictionaries
(PDF (1pp) | PDF (6pp) | PPTX)
3.2 Lab 9    
Tue 17 Jul Environment Model of Computation
(PDF)
  Discussion 9
Solutions
Homework 8 (11:59 PM)
Solutions
 
Wed 18 Jul Environment Model: Functions, Data Structures
(PDF)
  Lab 10    
Thu 19 Jul Environment Model: Nonlocal State in Functions
(PDF)
3.4.1–3.4.5 Discussion 10
Solutions
   
Fri 20 Jul       Homework 9 (11:59 PM)
Solutions
 
6 Mon 23 Jul Object Oriented Programming: Implementation
(PDF (1pp) | PDF (6pp) | PPTX)
3.5 Lab 11    
Tue 24 Jul Scheme
(PDF (1pp) | PDF (6pp) | PPTX)
4.4.1 Discussion 11
Solutions
Homework 10 (11:59 PM)
Solutions: Code,
Environment Diagrams:
1, 2, 3, 4
 
Wed 25 Jul Interpretation
(PDF (1pp) | PDF (6pp) | PPTX)
4.1–4.3 Lab 12    
Midterm 2 (7:00 PM–9:00 PM, 2050 VLSB)
(Sample Exam | Exam | Appendix |
Solution | Group Solutions)
Thu 26 Jul Interpretation
(PDF (1pp) | PDF (4pp) | PDF (6pp) | PPTX)
  Discussion 12
Solutions
  Project 3 (11:59 PM)
Fri 27 Jul          
Sat 28 Jul       Homework 11 (11:59 PM)
Python Solutions
Scheme Solutions
 
7 Mon 30 Jul Streams and Iterators
(PDF (1pp) | PDF (6pp) | PPTX)
5.1, 5.2 Lab 13    
Tue 31 Jul Streams, Iterators, and Generators
(PDF (1pp) | PDF (6pp) | PPTX)
5.1, 5.2 Discussion 13
Solutions
Homework 12 (11:59 PM)
Solutions
 
Wed 1 Aug Logic Programming
(PDF (1pp) | PDF (6pp) | PPTX)
  Lab 14    
Thu 2 Aug Logic Programming: Implementation
(PDF (1pp) | PDF (6pp) | PPTX)
  Discussion 14
Solutions
   
Fri 3 Aug          
Sat 4 Aug       Homework 13 (11:59 PM)
Solutions
 
8 Mon 6 Aug Client/Server Programming
(PDF (1pp) | PDF (6pp) | PPTX)
6.1, 6.2 Lab 15    
Tue 7 Aug Parallelism
(PDF (1pp) | PDF (6pp) | PPTX)
6.3 Discussion 15
Solutions
Homework 14 (11:59 PM)
Solutions
Project 4 (11:59 PM)
Wed 8 Aug MapReduce, Social Implications of Computing
(PDF (1pp) | PDF (6pp) | PPTX)
An Investigation of the
Therac-25 Accidents

MapReduce paper (optional)
Blown to Bits (optional)
Lab 16    
Thu 9 Aug Conclusion and What's Next?
(PDF (1pp) | PDF (6pp) | PPTX)
       
Final (6:00 PM–9:00 PM, 1 Pimentel)
(Sample Exam | Appendix | Exam | Solutions)
Fri 10 Aug          

Resources


Acknowledgments

This is an incomplete list, as it would be infeasible to list every contribution to this course. First, we would like to thank Brian Harvey, Paul Hilfinger and John DeNero, who are responsible for teaching CS61A to the entire staff. We would also like to thank other prior instructors for the course, including George Wang, Min Xu, and Colleen Lewis, for their very helpful advice. The discussion notes are a product of the many hardworking teaching assistants and other staff members of the course in the past. Thanks also go out to Eric Tzeng for providing the initial design for the website.