CS 61A: The Structure and Interpretation of Computer Programs
Spring 2016Instructor: Paul Hilfinger
MWF 2-3 in Wheeler Auditorium
Announcements
- Vote for your favorite Scheme Art Contest entries by midnight tonight to get an EC point.
- Fill out the final survey now. If you fill it out by Sunday at 11:59pm you can get an extra credit point.
- Homework 9 has been released. It is completely optional, intended as practice for the final, but you can get EC for doing the first two problems, if desired.
- Mini Quiz 03 has been posted and is optional.
- Midterm and Final resources are located here
- There will be no Office Hours during dead week, but there will be topical review sessions. Check the OH/Weekly calendar or Piazza for more details.
- Vote for your favorite Scheme Art Contest entries!
- Midterm and Final resources located here
- There will be no Office Hours during dead week, but there will be topical review sessions, check the OH/Weekly calendar or Piazza.
- To use glookup (and to have final grades sent to the registrar) you must get an instructional account and register it here. Be sure to fill in and submit the form at the bottom of that page.
- Submit Scheme Recursive Art Contest here by Thursday, April 28. Check Piazza for more information.
- There will be no Office Hours during dead week, but there will be topical review sessions TBA.
- To use glookup (and to have final grades sent to the registrar) you must get an instructional account and register it here. Be sure to fill in and submit the form at the bottom of that page.
- Prospective Students: 2016 Cal Day Introductory CS/EECS course overview slides
- To use glookup (and to have final grades sent to the registrar) you must get an instructional account and register it here. Be sure to fill in and submit the form at the bottom of that page.
- Get an extra credit point by completing Part 1 of the Scheme project by Monday, April 18.
- Prospective Students: 2016 Cal Day Introductory CS/EECS course overview slides
- To use glookup (and to have final grades sent to the registrar) you must get an instructional account and register it here. Be sure to fill in and submit the form at the bottom of that page.
- Get an extra credit point by completing Part 1 of the Scheme project by Monday, April 18.
- Get an extra credit point by completing Part 1 of the Scheme project by Monday, April 18.
- Midterm 2 (Solutions) scores are available ons Gradescope.
- Make sure you have an instructional account here
- Homework 7 has been released.
- The Scheme project has been released. Due 4/25.
- Maps composition revisions are now open. See Piazza for more information.
- Midterm 2 (Solutions) scores are available on Gradescope.
- Mini Quiz 2 is available. It is due by Thursday 4/7 11:59pm
- Homework 5 is now due 3/28
- Mini Quiz 1 is due 3/18
- Ants is due 3/17
- Homework 5 is now due 3/28
- Homework 5 has been released.
- Ants has been released. Submit one day early to get a bonus point!
- Homework 4 has been released.
- Hog Composition revisions are now open. See Piazza for more information.
- The Hog contest results are in! Congratulations to everybody that participated.
- Homework 4 has been released.
- Hog Composition revisions are now open. See Piazza for more information.
- Ants will be released 3/4 and due on 3/17. Submit one day early to get a bonus point!
- The Maps project is due 3/1
- Homework 3 has been released
- The schedule for office hours is available here
- Homework 2 has been released.
- Midterm 1 will be on Thursday 2/18
Resource/Piazza Search
Search for terms like "recursion", "homework 3", or "practice"
Search for terms like "recursion", "homework 3", or "practice"
Name | Type | Tags |
---|---|---|
Midterm 1 | Exam | |
Midterm 2 | Exam | |
Final | Exam | |
Lecture 1: Functions (1pp) (6pp) (01.py) | Lecture | |
Readings: section 1.1 | Reading | |
Readings: section 1.2 | Reading | |
Lecture 2: Names (1pp) (6pp) (02.py) | Lecture | |
Readings: section 1.3 | Reading | |
Readings: section 1.4 | Reading | |
Lecture 3: Control (1pp) (6pp) (03.py) | Lecture | |
Readings: section 1.5 | Reading | |
Lecture 4: Higher-Order Functions (1pp) (6pp) (04.py) | Lecture | |
Readings: section 1.6 | Reading | |
Lecture 5: Environments (1pp) (6pp) (05.py) | Lecture | |
Readings: section 1.6 | Reading | |
Lecture 6: Recursion (1pp) (6pp) (06.py) | Lecture | |
Readings: section 1.7 | Reading | |
Lecture 7: Tree Recursion (1pp) (6pp) (07.py) | Lecture | |
Readings: section 1.7 | Reading | |
Lecture 8: Function Examples (1pp) (6pp) | Lecture | |
Lecture 9: Data Abstraction (1pp) (6pp) (09.py) | Lecture | |
Readings: section 2.1 | Reading | |
Readings: section 2.2 | Reading | |
Lecture 10: Sequences (1pp) (6pp) (10.py) | Lecture | |
Readings: section 2.3 | Reading | |
Lecture 11: Trees (1pp) (6pp) (11.py) | Lecture | |
Readings: section 2.3 | Reading | |
Lecture 12: Mutable Values (1pp) (6pp) (12.py) | Lecture | |
Readings: section 2.4 | Reading | |
Lecture 13: Mutable Functions (1pp) (6pp) (13.py) | Lecture | |
Readings: section 2.4 | Reading | |
Lecture 14: Objects (1pp) (6pp) (14.py) | Lecture | |
Readings: section 2.5 | Reading | |
Lecture 15: Inheritance (1pp) (6pp) (15.py) | Lecture | |
Readings: section 2.5 | Reading | |
Lecture 16: Expressivness (1pp) (6pp) (16.py) | Lecture | |
Readings: section 2.7 | Reading | |
Lecture 17: Iterators (1pp) (6pp) (17.py) | Lecture | |
Readings: section 2.9 | Reading | |
Lecture 18: Hierarchy (1pp) (6pp) (18.py) | Lecture | |
Readings: section 2.9 | Reading | |
Lecture 19: Growth I (1pp) (6pp) (19.py) | Lecture | |
Readings: section 2.8 | Reading | |
Lecture 20: Growth II (1pp) (6pp) (20.py) | Lecture | |
Readings: section 2.8 | Reading | |
Lecture 21: Sets (1pp) (6pp) (21.py) | Lecture | |
Readings: section 2.9 | Reading | |
Lecture 22: Data Examples (1pp) (6pp) (22.py) | Lecture | |
Lecture 23: Scheme (1pp) (6pp) (23.scm) | Lecture | |
Readings: section 3.1 | Reading | |
Readings: section 3.2 | Reading | |
Lecture 24: Exceptions (1pp) (6pp) (24.py) | Lecture | |
Readings: section 3.3 | Reading | |
Lecture 25: Calculator (1pp) (6pp) (25.scm) | Lecture | |
Readings: section 3.4 | Reading | |
Lecture 26: Interpreters (1pp) (6pp) | Lecture | |
Readings: section 3.5 | Reading | |
Lecture 27: Tail Calls (1pp) (6pp) (27.scm) | Lecture | |
Readings: section 3.5 | Reading | |
Lecture 28: The Halting Problem (1pp) (6pp) | Lecture | |
Lecture 29: Iterators (1pp) (6pp) (29.py) | Lecture | |
Readings: section 4.2 | Reading | |
Lecture 30: Streams (1pp) (6pp) (30.scm) | Lecture | |
Readings: section 4.2 | Reading | |
Lecture 31: Declarative Programming (1pp) (6pp) (31.sql) | Lecture | |
Readings: section 4.3 | Reading | |
Lecture 32: SQL (1pp) (6pp) (32.sql) | Lecture | |
Readings: section 4.3 | Reading | |
Lecture 33: Recursive Select (1pp) (6pp) (33.sql) | Lecture | |
Readings: section 4.3 | Reading | |
Lecture 34: Aggregation (1pp) (6pp) (34.sql) | Lecture | |
Readings: section 4.3 | Reading | |
Lecture 35: Concurrency (1pp) (6pp) | Lecture | |
Readings: section 4.6 | Reading | |
Lecture 36: Parallelism (1pp) (6pp) | Lecture | |
Readings: section 4.8 | Reading | |
Lecture 37: Logic Programming (1pp) (6pp) (37.zip) | Lecture | |
Readings: section 4.4 | Reading | |
Readings: section 4.5 | Reading | |
Lecture 38: Cryptography (1pp) (6pp) | Lecture | |
Lecture 39: Conclusion (1pp) (6pp) | Lecture | |
Homework 1 (Solutions) | Homework | |
Homework 2 (Solutions) | Homework | |
Homework 3 (Solutions) | Homework | |
Homework 4 (Solutions) | Homework | |
Homework 5 (Solutions) | Homework | |
Homework 6 (Solutions) | Homework | |
Homework 7 (Solutions) | Homework | |
Homework 8 (Solutions) | Homework | |
Homework 9 (Solutions) | Homework | |
Mini Quiz 1 (Solutions) | MiniQuiz | |
Mini Quiz 2 (Solutions) | MiniQuiz | |
Mini Quiz 3 (Solutions) | MiniQuiz | |
Hog | Project | |
Hog Contest | Project | |
Maps | Project | |
Hog Composition Revision | Project | |
Ants | Project | |
Maps Composition Revision | Project | |
Scheme | Project | |
Ants Composition Revision | Project | |
Lab 0: Workflow | Lab | |
Lab 1: Expressions and Control | Lab | |
Lab 2: Higher Order Functions, Recursion and Lambdas | Lab | |
Lab 3: Data Abstraction and Recursion/Lambdas Review | Lab | |
Lab 4: Lists and Linked Lists | Lab | |
Lab 5: Mutable Lists, Dictionaries and Trees | Lab | |
Lab 6: Nonlocal and Object-Oriented Programming | Lab | |
Lab 7: Recursive Objects | Lab | |
Lab 8: Sets, Orders of Growth and BST | Lab | |
Lab 9: Scheme | Lab | |
Lab 10: Interpreters | Lab | |
Lab 11: Iterators and Generators | Lab | |
Lab 12: SQL | Lab | |
Lab 13: Spark | Lab | |
Discussion 0: Lost on the Moon (Solutions) | Discussion | |
Discussion 1: Control and Higher Order Functions (Solutions) | Discussion | |
Discussion 2: Environment Diagrams and Recursion (Solutions) | Discussion | |
Discussion 3: Data Abstraction and Sequences (Solutions) | Discussion | |
Discussion 4: Midterm 1 Review | Discussion | |
Discussion 5: Trees and Mutation (Solutions) | Discussion | |
Discussion 6: Inheritance and Nonlocal (Solutions) | Discussion | |
Discussion 7: Orders of Growth (Solutions) | Discussion | |
Discussion 8: Scheme (Solutions) | Discussion | |
Discussion 9: Tail Calls and Interpreters (Solutions) | Discussion | |
Discussion 10: Iterators and Streams (Solutions) | Discussion | |
Discussion 11: SQL Joins and Recursion (Solutions) | Discussion | |
Discussion 12: Final Review (Solutions) | Discussion | |
Syllabus | Article | |
Composition Guide | Article | Programming |
Debugging Guide | Article | Programming |
Using OK | Article | OK |
UNIX Tutorial | Article | UNIX |
Sublime Text | Article | Text Editors |
Vim | Article | Text Editors |
Emacs | Article | Text Editors |
Weekly Schedule | Article | |
Staff | Article | |
Office Hours | Article | |
Windows: set up Python | Article | Setting up |
Windows: connecting from home (video) | Article | Setting up |
Windows: connecting form home (pdf) | Article | Setting up |
Mac: set up Python | Article | Setting up |
Mac: set up Emacs | Article | Setting up |
Mac: connecting from home (video) | Article | Setting up |
Mac: connecting from home (pdf) | Article | Setting up |
Online Python tutor | Article | Environment Diagrams |
Fall 2015 screencasts | Article | Video, John DeNero |
Spring 2015 screencasts | Article | Video, John DeNero |
Fall 2014 screencasts | Article | Video, John DeNero |
Fall 2013 screencasts | Article | Video, John DeNero |
Another UNIX tutorial | Article | UNIX |
Albert Wu's practice problems | Practice | |
Mark Miyashita's practice problems | Practice | |
Functions and expressions practice problems | Practice | Functions |
Control structures practice problems | Practice | Control Structures |
Higher Order Functions practice problems | Practice | Higher Order Functions |
Lambda expressions practice problems | Practice | Lambdas |
Recursion practice problems | Practice | Recursion, Tree Recursion |
Calendar
Week | Date | Lecture | Reading | Handout | Homework | Project |
---|---|---|---|---|---|---|
1 | Wed 1/20 | Functions
(1pp) (6pp) (01.py) |
1.1 1.2 |
Lab 0: Workflow (due Fri 1/22) |
||
Fri 1/22 | Names
(1pp) (6pp) (02.py) |
1.3 1.4 |
Discussion 0: Lost on the Moon (Solutions) | Homework 1 (due Wed 1/27) (Solutions) |
||
2 | Mon 1/25 | Control
(1pp) (6pp) (03.py) |
1.5 | |||
Wed 1/27 | Higher-Order Functions
(1pp) (6pp) (04.py) |
1.6 | Lab 1: Expressions and Control (due Fri 1/29) |
Hog (due Thu 2/4) |
||
Fri 1/29 | Environments
(1pp) (6pp) (05.py) |
1.6 | Discussion 1: Control and Higher Order Functions (Solutions) | |||
3 | Mon 2/1 | Recursion
(1pp) (6pp) (06.py) |
1.7 | |||
Wed 2/3 | Tree Recursion
(1pp) (6pp) (07.py) |
1.7 | Lab 2: Higher Order Functions, Recursion and Lambdas (due Fri 2/5) |
Hog Contest (due Mon 2/15) |
||
Fri 2/5 | Function Examples
(1pp) (6pp) |
Discussion 2: Environment Diagrams and Recursion (Solutions) | ||||
4 | Mon 2/8 | Data Abstraction
(1pp) (6pp) (09.py) |
2.1 2.2 |
Homework 2 (due Tue 2/16) (Solutions) |
||
Wed 2/10 | Sequences
(1pp) (6pp) (10.py) |
2.3 | Lab 3: Data Abstraction and Recursion/Lambdas Review (due Fri 2/12) |
|||
Fri 2/12 | Trees
(1pp) (6pp) (11.py) |
2.3 | Discussion 3: Data Abstraction and Sequences (Solutions) | |||
5 | Mon 2/15 | No Lecture: President's Day | ||||
Wed 2/17 | Mutable Values
(1pp) (6pp) (12.py) |
2.4 | Lab 4: Lists and Linked Lists (due Mon 2/22) |
|||
Thu 2/18 | Midterm 1 | |||||
Fri 2/19 | Mutable Functions
(1pp) (6pp) (13.py) |
2.4 | Discussion 4: Midterm 1 Review | Homework 3 (due Fri 2/26) (Solutions) |
Maps (due Tue 3/1) |
|
6 | Mon 2/22 | Objects
(1pp) (6pp) (14.py) |
2.5 | |||
Wed 2/24 | Inheritance
(1pp) (6pp) (15.py) |
2.5 | Lab 5: Mutable Lists, Dictionaries and Trees (due Fri 2/26) |
|||
Fri 2/26 | Expressivness
(1pp) (6pp) (16.py) |
2.7 | Discussion 5: Trees and Mutation (Solutions) | |||
7 | Mon 2/29 | Iterators
(1pp) (6pp) (17.py) |
2.9 | |||
Wed 3/2 | Hierarchy
(1pp) (6pp) (18.py) |
2.9 | Lab 6: Nonlocal and Object-Oriented Programming (due Fri 3/4) |
Homework 4 (due Wed 3/9) (Solutions) |
Hog Composition Revision (due Sun 3/20) |
|
Fri 3/4 | Growth I
(1pp) (6pp) (19.py) |
2.8 | Discussion 6: Inheritance and Nonlocal (Solutions) | Ants (due Thu 3/17) |
||
8 | Mon 3/7 | Growth II
(1pp) (6pp) (20.py) |
2.8 | |||
Wed 3/9 | Sets
(1pp) (6pp) (21.py) |
2.9 | Lab 7: Recursive Objects (due Fri 3/11) |
Homework 5 (due Mon 3/28) (Solutions) |
||
Fri 3/11 | Data Examples
(1pp) (6pp) (22.py) |
Discussion 7: Orders of Growth (Solutions) | ||||
9 | Mon 3/14 | Scheme
(1pp) (6pp) (23.scm) |
3.1 3.2 |
|||
Wed 3/16 | Exceptions
(1pp) (6pp) (24.py) |
3.3 | Lab 8: Sets, Orders of Growth and BST (due Fri 3/18) |
Mini Quiz 1 (due Fri 3/18) (Solutions) |
||
Fri 3/18 | Calculator
(1pp) (6pp) (25.scm) |
3.4 | Discussion 8: Scheme (Solutions) | |||
10 | Mon 3/21 | No Lecture: Spring Break | ||||
Wed 3/23 | No Lecture: Spring Break | |||||
Fri 3/25 | No Lecture: Spring Break | |||||
11 | Mon 3/28 | Interpreters
(1pp) (6pp) |
3.5 | |||
Wed 3/30 | Midterm 2 | Lab 9: Scheme (due Mon 4/4) |
||||
Fri 4/1 | Tail Calls
(1pp) (6pp) (27.scm) |
3.5 | Homework 6 (due Fri 4/8) (Solutions) |
Maps Composition Revision (due Fri 4/15) |
||
12 | Mon 4/4 | The Halting Problem
(1pp) (6pp) |
||||
Wed 4/6 | Iterators
(1pp) (6pp) (29.py) |
4.2 | Lab 10: Interpreters (due Fri 4/8) |
Mini Quiz 2 (due Thu 4/7) (Solutions) |
Scheme (due Mon 4/25) |
|
Fri 4/8 | Streams
(1pp) (6pp) (30.scm) |
4.2 | Discussion 9: Tail Calls and Interpreters (Solutions) | Homework 7 (due Fri 4/15) (Solutions) |
||
13 | Mon 4/11 | Declarative Programming
(1pp) (6pp) (31.sql) |
4.3 | |||
Wed 4/13 | SQL
(1pp) (6pp) (32.sql) |
4.3 | Lab 11: Iterators and Generators (due Fri 4/15) |
|||
Fri 4/15 | Recursive Select
(1pp) (6pp) (33.sql) |
4.3 | Discussion 10: Iterators and Streams (Solutions) | |||
14 | Mon 4/18 | Aggregation
(1pp) (6pp) (34.sql) |
4.3 | Ants Composition Revision (due Fri 4/29) |
||
Wed 4/20 | Concurrency
(1pp) (6pp) |
4.6 | Lab 12: SQL (due Fri 4/22) |
Homework 8 (due Wed 4/27) (Solutions) |
||
Fri 4/22 | Parallelism
(1pp) (6pp) |
4.8 | Discussion 11: SQL Joins and Recursion (Solutions) | |||
15 | Mon 4/25 | Logic Programming
(1pp) (6pp) (37.zip) |
4.4 4.5 |
|||
Wed 4/27 | Cryptography
(1pp) (6pp) |
Lab 13: Spark (due Fri 4/29) |
||||
Fri 4/29 | Conclusion
(1pp) (6pp) |
Discussion 12: Final Review (Solutions) | ||||
16 | Tue 5/3 | Homework 9 (due Mon 5/9) (Solutions) |
||||
Wed 5/4 | Mini Quiz 3 (due Sun 5/8) (Solutions) |
|||||
17 | Tue 5/10 | Final |