CS 61A: The Structure and Interpretation of Computer Programs
Summer 2015Instructors: Albert Wu, Robert Huang
MTWTh 11-12:30 in 2050 VLSB
Announcements
Congratulations to the following winners of the Scheme Art Contest!
Featherweight:
- Submission 5: Waking with the Stars, by Anson Tsai (59.4% of votes)
- Submission 12: The All Seeing All Knowing Eye of Albert Wu, by Anish Prabhu (8.8% of votes)
- Submission 16: THE SCHEMING TREE, by Daniela Koch and Catherine Ashley (7.6% of votes)
Heavyweight:
- Submission 0: A Pair of Snowflakes, by James Lin (20.9% of votes)
- Submission 7: Cat Hiding in Circles, by Jianing Wang (20.1% of votes)
- Submission 13: Sunrise or Sundown, by Boyuan Yu (18.9% of votes)
Final scores have been released! If you have a regrade request, please submit it by Sunday, 11:59pm.
The Final information page has been released.
Congratulations to the following winners of the Scheme Art Contest!
Featherweight:
- Submission 5: Waking with the Stars, by Anson Tsai (59.4% of votes)
- Submission 12: The All Seeing All Knowing Eye of Albert Wu, by Anish Prabhu (8.8% of votes)
- Submission 16: THE SCHEMING TREE, by Daniela Koch and Catherine Ashley (7.6% of votes)
Heavyweight:
- Submission 0: A Pair of Snowflakes, by James Lin (20.9% of votes)
- Submission 7: Cat Hiding in Circles, by Jianing Wang (20.1% of votes)
- Submission 13: Sunrise or Sundown, by Boyuan Yu (18.9% of votes)
The Final information page has been released.
Vote for your favorite Scheme Art entries! Voting is due on Wednesday, 8/12 at 11:59 p.m.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
The Final information page has been released.
Participate in the Scheme Art Contest! Entries are due on Tuesday, 8/11 at 11:59 p.m.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
Midterm 2 scores have been released! If you have a regrade request, please submit it by Saturday.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
The Midterm 2 information page has been released.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
You can makeup labs 7 to 10: see Lab Makeup for more details.
The Midterm 2 information page has been released.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
Midterm 1 scores have been released! If you have a regrade request, please submit it by Tuesday.
Please fill out the mid-semester survey. We appreciate any feedback that you have for us; we want to know what works for you in this class and what doesn't.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
Please fill out the mid-semester survey. We appreciate any feedback that you have for us; we want to know what works for you in this class and what doesn't.
Tutoring feedback: Whenever you finish a tutoring session, please fill out the feedback survey.
The Midterm 1 information page has been released.
Sign up for tutoring! If you would like more time review Week 2 materials, sign up for tutoring.
Whenever you finish a tutoring session, please fill out the feedback survey.
Sign up for tutoring! If you would like more time review Week 1 materials, sign up for tutoring.
Office hours this week:
- Wednesday, 7/1 office hours from 1 - 5 pm will be in Wozniak Lounge
- Thursday, 7/2 office hours from 2 - 5 pm will be in Wozniak Lounge
Lab 1:
- Please fill out the OK Issues survey, even if you were able to submit Lab 1 successfully.
- Everyone will get credit for Lab 1 (counting towards midterm recovery points)
Tutoring starts this Saturday! If you would like more time review Week 1 materials, sign up for tutoring.
Here are the exam dates:
- Midterm 1: Thursday 7/9 from 6 - 8 pm
- Midterm 2: Thursday 7/30 from 6 - 8 pm
- Final: Thursday 8/13 from 3 - 6 pm
Lab 1:
- Please fill out the OK Issues survey, even if you were able to submit Lab 1 successfully.
- Everyone will get credit for Lab 1 (counting towards midterm recovery points)
Welcome to CS 61A! Our syllabus can be found here.
Here are the exam dates:
- Midterm 1: Thursday 7/9 from 6 - 8 pm
- Midterm 2: Thursday 7/30 from 6 - 8 pm
- Final: Thursday 8/13 from 3 - 6 pm
You may attend any lab and discussion section you want.
Please bring your laptop to the first lab!
Search for terms like "recursion", "homework 3", or "practice"
Name | Type | Tags |
---|---|---|
Midterm 1 | Exam | |
Midterm 2 | Exam | |
Final | Exam | |
Lecture 1: Introduction and Basics (01.py) | Lecture | Functions |
Readings: section 1.1 | Reading | Functions |
Readings: section 1.2 | Reading | Functions |
Lecture 2: Functions and Control Structures (02.py) | Lecture | Functions, Control Structures |
Readings: section 1.3 | Reading | Functions, Control Structures |
Readings: section 1.4 | Reading | Functions, Control Structures |
Readings: section 1.5 | Reading | Functions, Control Structures |
Lecture 3: Higher Order Functions (03.py) | Lecture | Higher Order Functions |
Readings: section 1.6 | Reading | Higher Order Functions |
Lecture 4: Higher Order Functions (04.py) | Lecture | Higher Order Functions |
Readings: section 1.6 | Reading | Higher Order Functions |
Lecture 5: Week 1 Review (05.py) | Lecture | Functions, Control Structures, Higher Order Functions |
Lecture 6: Recursion (06.py) | Lecture | Recursion |
Readings: section 1.7 | Reading | Recursion |
Lecture 7: Tree Recursion (07.py) | Lecture | Recursion, Tree Recursion |
Readings: section 1.7 | Reading | Recursion, Tree Recursion |
Lecture 8: Orders of Growth (08.py) | Lecture | Orders of Growth |
Readings: section 2.8 | Reading | Orders of Growth |
Lecture 9: Lists, Sequences, and Dictionaries (09.py) | Lecture | Lists, Strings, Dictionaries |
Readings: section 2.3 | Reading | Lists, Strings, Dictionaries |
Lecture 10: Data Abstraction (10.py) | Lecture | Data Abstraction |
Readings: section 2.1 | Reading | Data Abstraction |
Readings: section 2.2 | Reading | Data Abstraction |
Lecture 11: Linked Lists (11.py) | Lecture | Linked Lists |
Readings: section 2.3 | Reading | Linked Lists |
Lecture 12: Midterm 1 Review (12.py) | Lecture | |
Lecture 13: Trees (13.py) | Lecture | Trees |
Readings: section 2.3 | Reading | Trees |
Lecture 14: Mutable Objects and Functions (14.py) | Lecture | Mutation, Nonlocal |
Readings: section 2.4 | Reading | Mutation, Nonlocal |
Lecture 15: Object Oriented Programming (15.py) | Lecture | Object Oriented Programming |
Readings: section 2.5 | Reading | Object Oriented Programming |
Lecture 16: Inheritance (16.py) | Lecture | Object Oriented Programming, Inheritance |
Readings: section 2.5 | Reading | Object Oriented Programming, Inheritance |
Lecture 17: Mutable Linked Lists (17.py) | Lecture | Mutation, Linked Lists |
Readings: section 2.9 | Reading | Mutation, Linked Lists |
Lecture 18: Mutable Trees (18.py) | Lecture | Mutation, Trees |
Readings: section 2.9 | Reading | Mutation, Trees |
Lecture 19: Interfaces (19.py) | Lecture | Object Oriented Programming, Interfaces |
Readings: section 2.7 | Reading | Object Oriented Programming, Interfaces |
Lecture 20: Iterators (20.py) | Lecture | Iterators, Generators |
Readings: section 4.2 | Reading | Iterators, Generators |
Lecture 21: Scheme (21.scm) | Lecture | Scheme |
Readings: section 3.1 | Reading | Scheme |
Readings: section 3.2 | Reading | Scheme |
Lecture 22: Interpreters, Part 1 (22.scm) | Lecture | Interpreters, Tail calls |
Readings: section 3.3 | Reading | Interpreters, Tail calls |
Readings: section 3.4 | Reading | Interpreters, Tail calls |
Lecture 23: Interpreters, Part 2 (23.py) | Lecture | Interpreters |
Readings: section 3.4 | Reading | Interpreters |
Readings: section 3.5 | Reading | Interpreters |
Lecture 24: Midterm 2 Review (24.py) | Lecture | |
Lecture 25: Tail calls and Streams (25.scm) | Lecture | Streams, Tail Calls |
Readings: section 3.5 | Reading | Streams, Tail Calls |
Readings: section 4.2 | Reading | Streams, Tail Calls |
Lecture 26: SQL (26.sql) | Lecture | SQL |
Readings: section 4.2 | Reading | SQL |
Lecture 27: Distributed Data (27.py) | Lecture | MapReduce |
Readings: section 4.6 | Reading | MapReduce |
Lecture 28: Logic Programming (28.logic) | Lecture | Logic |
Readings: section 4.4 | Reading | Logic |
Lecture 29: Machine Learning (29.py) | Lecture | Extra Topics |
Lecture 30: Computability and Complexity (30.py) | Lecture | Extra Topics |
Lecture 31: Computational Biology (31.py) | Lecture | Extra Topics |
Lecture 32: Conclusion (32.py) | Lecture | |
Homework 1 (Solutions) | Homework | Functions, Control Structures |
Homework 2 (Solutions) | Homework | Higher Order Functions |
Homework 3 (Solutions) | Homework | Recursion, Tree Recursion |
Homework 4 (Solutions) | Homework | Lists, Data Abstraction |
Homework 5 (Solutions) | Homework | Linked Lists, Trees |
Homework 6 (Solutions) | Homework | Mutation, Object Oriented Programming, Inheritance |
Homework 7 (Solutions) | Homework | Mutation, Linked Lists, Trees |
Homework 8 (Solutions) | Homework | Scheme |
Homework 9 (Solutions) | Homework | Interpretation |
Homework 10 (Solutions) | Homework | Iterators, Generators, Streams |
Homework 11 (Solutions) | Homework | Logic |
Homework 12 (Solutions) | Homework | |
Hog | Project | Functions, Higher Order Functions, Control Structures |
Hog Contest | Project | Functions, Higher Order Functions, Control Structures |
Maps | Project | Data Abstraction, Lists, Strings, Dictionaries |
Ants | Project | Object Oriented Programming, Inheritance |
Scheme | Project | Scheme, Interpreters, Tail calls |
Scheme Contest | Project | Scheme |
Lab 1: Setting up | Lab | |
Lab 2: Control structures | Lab | Control Structures |
Lab 3: Higher Order Functions and Lambdas | Lab | Higher Order Functions, Lambdas |
Lab 4: Recursion and Tree Recursion | Lab | Recursion, Tree Recursion |
Lab 5: Lists and Dictionaries | Lab | Lists, Dictionaries |
Lab 6: Linked Lists | Lab | Linked Lists |
Lab 7: Trees | Lab | Trees |
Lab 8: Object Oriented Programming | Lab | Object Oriented Programming |
Lab 9: Mutable Linked Lists | Lab | Mutation, Linked Lists |
Lab 10: Interfaces | Lab | Object Oriented Programming, Interfaces |
Lab 11: Scheme | Lab | Scheme |
Lab 12: Interpreters | Lab | Interpreters |
Lab 13: Tail calls and Streams | Lab | Scheme, Tail calls, Streams |
Lab 14: MapReduce | Lab | MapReduce |
Lab 15: Logic | Lab | Logic |
Diagnostic 1 | Diagnostic | |
Diagnostic 2 | Diagnostic | |
Diagnostic 3 | Diagnostic | |
Diagnostic 4 | Diagnostic | |
Diagnostic 5 | Diagnostic | |
Diagnostic 6 | Diagnostic | |
Diagnostic 7 | Diagnostic | |
Discussion 1: Functions (Solutions) | Discussion | Functions |
Discussion 2: Higher Order Functions and Environment Diagrams (Solutions) | Discussion | Higher Order Functions, Environment Diagrams |
Discussion 3: Recursion (Solutions) | Discussion | Recursion |
Discussion 4: Orders of Growth (Solutions) | Discussion | Orders of Growth |
Discussion 5: Data Abstraction (Solutions) | Discussion | Data Abstraction |
Discussion 6: Midterm 1 Review (Solutions) | Discussion | |
Discussion 7: Nonlocal and Mutability (Solutions) | Discussion | Nonlocal, Mutation |
Discussion 8: Inheritance (Solutions) | Discussion | Object Oriented Programming, Inheritance |
Discussion 9: Mutable Trees (Solutions) | Discussion | Mutation, Trees |
Discussion 10: Iterators and Generators (Solutions) | Discussion | Iterators, Generators |
Discussion 11: Scheme (Solutions) | Discussion | Scheme |
Discussion 12: Midterm 2 Review (Solutions) | Discussion | |
Discussion 13: SQL (Solutions) | Discussion | SQL |
Discussion 14: Logic (Solutions) | Discussion | Logic |
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 | |
Tutoring | 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 |
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 |
Week 2 (Sat 06/27 to Fri 07/03): Basics, Control Structures, and Higher order functions (solutions) | Tutoring | Functions, Control Structures, Higher Order Functions |
Week 3 (Sat 07/04 to Fri 07/10): Higher Order Functions, Recursion, and Orders of Growth (solutions) | Tutoring | Higher Order Functions, Recursion, Tree Recursion, Orders of Growth |
Week 4 (Sat 07/11 to Fri 07/17): Lists, Sequences, Dictionaries, Data Abstraction, and Linked Lists (solutions) | Tutoring | Lists, Sequences, Dictionaries, Data Abstraction, Linked Lists |
Week 5 (Sat 07/18 to Thu 07/23): Trees, Mutability, and Object-Oriented Programming (solutions) | Tutoring | Trees, Mutation, Object-Oriented Programming, Inheritance |
Week 6 (Sat 07/25 to Thu 07/30): Mutable Linked Lists, Mutable Trees, Interfaces, and Iterators (solutions) | Tutoring | Mutation, Linked Lists, Trees, Interfaces, Iterators |
Week 7 (Fri 07/31 to Thu 08/06): Scheme and Interpreters (solutions) | Tutoring | Scheme, Interpreters |
Week 8 (Sat 08/08 to Wed 08/12): SQL, Streams, Tail recursion, and Logic (solutions) | Tutoring | SQL, Streams, Tail Calls, Logic |