Announcements

Congratulations to the following winners of the Scheme Art Contest!

  • Featherweight:

    1. Submission 5: Waking with the Stars, by Anson Tsai (59.4% of votes)
    2. Submission 12: The All Seeing All Knowing Eye of Albert Wu, by Anish Prabhu (8.8% of votes)
    3. Submission 16: THE SCHEMING TREE, by Daniela Koch and Catherine Ashley (7.6% of votes)
  • Heavyweight:

    1. Submission 0: A Pair of Snowflakes, by James Lin (20.9% of votes)
    2. Submission 7: Cat Hiding in Circles, by Jianing Wang (20.1% of votes)
    3. 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:

    1. Submission 5: Waking with the Stars, by Anson Tsai (59.4% of votes)
    2. Submission 12: The All Seeing All Knowing Eye of Albert Wu, by Anish Prabhu (8.8% of votes)
    3. Submission 16: THE SCHEMING TREE, by Daniela Koch and Catherine Ashley (7.6% of votes)
  • Heavyweight:

    1. Submission 0: A Pair of Snowflakes, by James Lin (20.9% of votes)
    2. Submission 7: Cat Hiding in Circles, by Jianing Wang (20.1% of votes)
    3. 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!

Welcome to CS 61A! This site is still under construction. Our tentative 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

Looking for resources?
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

Calendar

Week Date Lecture Reading Handout Homework Project
1 Mon 6/22 Introduction and Basics
(01.py)
1.1
1.2
Lab 1: Setting up
(due Tue 6/23)
Homework 1
(due Fri 6/26) (Solutions)
Tue 6/23 Functions and Control Structures
(02.py)
1.3
1.4
1.5
Discussion 1: Functions (Solutions)
Wed 6/24 Higher Order Functions
(03.py)
1.6 Lab 2: Control structures
(due Thu 6/25)
Thu 6/25 Higher Order Functions
(04.py)
1.6 Discussion 2: Higher Order Functions and Environment Diagrams (Solutions) Homework 2
(due Mon 6/29) (Solutions)
Hog
(due Thu 7/2)
Fri 6/26 Diagnostic 1
2 Mon 6/29 Week 1 Review
(05.py)
Lab 3: Higher Order Functions and Lambdas
(due Tue 6/30)
Tue 6/30 Recursion
(06.py)
1.7 Discussion 3: Recursion (Solutions)
Wed 7/1 Tree Recursion
(07.py)
1.7 Lab 4: Recursion and Tree Recursion
(due Thu 7/2)
Hog Contest
(due Sun 7/12)
Thu 7/2 Orders of Growth
(08.py)
2.8 Discussion 4: Orders of Growth (Solutions) Homework 3
(due Tue 7/7) (Solutions)
Fri 7/3 Diagnostic 2
3 Mon 7/6 Lists, Sequences, and Dictionaries
(09.py)
2.3 Lab 5: Lists and Dictionaries
(due Tue 7/7)
Tue 7/7 Data Abstraction
(10.py)
2.1
2.2
Discussion 5: Data Abstraction (Solutions)
Wed 7/8 Linked Lists
(11.py)
2.3 Lab 6: Linked Lists
(due Thu 7/9)
Thu 7/9 Midterm 1 Review
(12.py)
Midterm 1
Discussion 6: Midterm 1 Review (Solutions) Homework 4
(due Tue 7/14) (Solutions)
Maps
(due Thu 7/16)
Fri 7/10 Diagnostic 3
4 Mon 7/13 Trees
(13.py)
2.3 Lab 7: Trees
(due Tue 7/14)
Homework 5
(due Sat 7/18) (Solutions)
Tue 7/14 Mutable Objects and Functions
(14.py)
2.4 Discussion 7: Nonlocal and Mutability (Solutions)
Wed 7/15 Object Oriented Programming
(15.py)
2.5 Lab 8: Object Oriented Programming
(due Thu 7/16)
Thu 7/16 Inheritance
(16.py)
2.5 Discussion 8: Inheritance (Solutions) Homework 6
(due Mon 7/20) (Solutions)
Fri 7/17 Diagnostic 4 Ants
(due Tue 7/28)
5 Mon 7/20 Mutable Linked Lists
(17.py)
2.9 Lab 9: Mutable Linked Lists
(due Tue 7/21)
Tue 7/21 Mutable Trees
(18.py)
2.9 Discussion 9: Mutable Trees (Solutions) Homework 7
(due Sat 7/25) (Solutions)
Wed 7/22 Interfaces
(19.py)
2.7 Lab 10: Interfaces
(due Thu 7/23)
Thu 7/23 Iterators
(20.py)
4.2 Discussion 10: Iterators and Generators (Solutions) Homework 8
(due Mon 7/27) (Solutions)
Fri 7/24 Diagnostic 5
6 Mon 7/27 Scheme
(21.scm)
3.1
3.2
Lab 11: Scheme
(due Sat 8/1)
Tue 7/28 Interpreters, Part 1
(22.scm)
3.3
3.4
Discussion 11: Scheme (Solutions)
Wed 7/29 Interpreters, Part 2
(23.py)
3.4
3.5
Lab 12: Interpreters
(due Sat 8/1)
Thu 7/30 Midterm 2 Review
(24.py)
Midterm 2
Discussion 12: Midterm 2 Review (Solutions) Homework 9
(due Mon 8/3) (Solutions)
Scheme
(due Mon 8/10)
Fri 7/31 Diagnostic 6
7 Mon 8/3 Tail calls and Streams
(25.scm)
3.5
4.2
Lab 13: Tail calls and Streams
(due Tue 8/4)
Homework 10
(due Fri 8/7) (Solutions)
Tue 8/4 SQL
(26.sql)
4.2 Discussion 13: SQL (Solutions)
Wed 8/5 Distributed Data
(27.py)
4.6 Lab 14: MapReduce
(due Thu 8/6)
Thu 8/6 Logic Programming
(28.logic)
4.4 Discussion 14: Logic (Solutions) Homework 11
(due Mon 8/10) (Solutions)
Fri 8/7 Diagnostic 7 Scheme Contest
(due Tue 8/11)
8 Mon 8/10 Machine Learning
(29.py)
Lab 15: Logic
(due Tue 8/11)
Tue 8/11 Computability and Complexity
(30.py)
Wed 8/12 Computational Biology
(31.py)
Homework 12
(due Wed 8/12) (Solutions)
Thu 8/13 Conclusion
(32.py)
Final