Announcements

  • Homework 10 is to complete Lab 14, due Thursday 12/3
  • Quiz 4 due Thursday 12/3
  • Homework 11 due Wednesday 12/9: complete the online course survey (posted soon)

    • 1 extra credit point to all submitters if 85% of students submit
  • Homework 12 due Wednesday 12/9: vote for your favorite recursive art (posted soon)
  • Since only 24/25 homework points were assigned this semester, everyone gets a free point
  • Friday 12/4 is video-only (no live lecture)
  • Data 8 info session on Thursday 12/3 @ 1pm in 190 Doe Library
  • Homework 10 is to complete Lab 14, due Thursday 12/3

    • Come to lab: you need to set up a Databricks account
    • Unique chance to use a large computing cluster
  • Scheme Recursive Art Contest Entries due Monday 11/30

    • Submit by emailing code and a screenshot to art@cs61a.org
  • Ants composition revisions due Tuesday 12/1
  • Quiz 4 released Tuesday 12/1 due Thursday 12/3
  • Last day of lecture will be Wednesday 12/2

    • No videos on 12/2 (but there will be a screencast)
    • Please come on 12/2 (and fill out the HKN survey at the end)
    • Friday 12/4 is video-only (no live lecture)
  • Homework 9 due Wednesday 11/25
  • No lab Tuesday 11/24 or Wednesday 11/25
  • Scheme Recursive Art Contest Entries due Monday 11/30

    • Submit by emailing code and a screenshot to art@cs61a.org
  • Ants composition revisions due Tuesday 12/1
  • Quiz 4 released Tuesday 12/1 due Thursday 12/3
  • Last day of lecture will be Wednesday 12/2

    • No videos on 12/2 (but there will be a screencast)
    • Please come on 12/2 (and fill out the HKN survey at the end)
    • Friday 12/4 is video-only (no live lecture)
  • Homework 9 due Wednesday 11/25
  • Scheme Recursive Art Contest Entries due Monday 11/30

    • Submit by emailing code and a screenshot to art@cs61a.org
  • Ants composition revisions due Tuesday 12/1
  • Quiz 4 released Tuesday 12/1 due Thursday 12/3
  • Last day of lecture will be Wednesday 12/2

    • No videos on 12/2 (but there will be a screencast)
    • Please come on 12/2 (and fill out the HKN survey at the end)
    • Friday 12/4 is video-only (no live lecture)
  • Scheme project due Thursday 11/19
  • Homework 9 due Wednesday 11/25
  • Scheme Recursive Art Contest Entries due Monday 11/30
  • Ants composition revisions due Tuesday 12/1
  • Extra staff in office hours this week

    • B6 Evans is open 10am-8pm on Wed 11/18 and Thurs 11/19
  • Download SQLite (recommended) or use SQLite online to follow along with lectures 30-33
  • Scheme project due Thursday 11/19

    • 1 extra credit point for submitting Part 2 by Monday 11/16
  • Scheme Recursive Art Contest Entries due Monday 11/30
  • Extra staff in office hours next week

    • B6 Evans is open 10am-8pm Monday-Thursday
  • Extra lecture on logical programming languages Monday 11/16 @ 6:30pm in A1 Hearst Annex
  • Download SQLite (recommended) or use SQLite online to follow along with lectures 30-33
  • Scheme project due Thursday 11/19

    • 1 extra credit point for submitting Part 2 by Monday 11/16
  • Extra staff in office hours next week

    • B6 Evans is open 10am-8pm Monday-Thursday
  • Extra lecture on logical programming languages Monday 11/16 @ 6:30pm in A1 Hearst Annex
  • Download the latest version of Scheme to follow along with Lecture 29
  • Download SQLite (recommended) or use SQLite online to follow along with lectures 30-33
  • Download the latest version of Scheme to follow along with Lecture 29
  • Scheme project due Thursday 11/19

    • 1 extra credit point for submitting Part 1 by Tuesday 11/10
    • 1 extra credit point for submitting Part 2 by Monday 11/16
  • Extra staff in office hours this week and next week

    • B6 Evans is open 10am-8pm Monday-Thursday
    • No office hours on Wednesday 11/11
  • Extra lecture on lazy evaluation Monday 11/9 @ 6:30pm in A1 Hearst Annex
  • Quiz 3 due Friday 11/6
  • Scheme project due Thursday 11/19

    • 1 extra credit point for submitting Part 1 by Tuesday 11/10
    • 1 extra credit point for submitting Part 2 by Monday 11/16
  • Homework 8 due Wednesday 11/4
  • Quiz 3 released Wednesday 11/4 at 3pm due Friday 11/6
  • Scheme project due Thursday 11/19

    • 1 extra credit point for submitting Part 1 by Tuesday 11/10
    • 1 extra credit point for submitting Part 2 by Monday 11/16
  • Project 2 (Maps) composition revisions due Monday 11/2
  • Midterm 2 regrade requests due Monday 11/2
  • Homework 8 due Wednesday 11/4
  • Quiz 3 released Wednesday 11/4 at 3pm due Friday 11/6
  • Extra Lecture on Ray Tracing Monday 11/2 @ 6:30pm in A1 Hearst Annex
  • Read the Scalc example from lecture or the textbook
  • Project 2 (Maps) composition revisions due Monday 11/2
  • Midterm 2 regrade requests due Monday 11/2
  • Homework 8 due Wednesday 11/4
  • Quiz 3 due Friday 11/6
  • Homework 7 due Thursday 10/29
  • Project 2 (Maps) composition revisions due Monday 11/2
  • Midterm 2 regrade requests due Monday 11/2
  • Homework 8 due Wednesday 11/4
  • Quiz 3 due Friday 11/6
  • Midterm 2 was too hard (sorry!)

    • +5 points for all students to match Fall 14 & Spring 15 distributions
  • Homework 7 due Thursday 10/29

    • Ask questions in lab!
  • Project 2 (Maps) composition revisions due Monday 11/2
  • Homework 8 due Wednesday 11/4
  • Quiz 3 due Friday 11/6
  • Homework 6 due Wednesday 10/21

    • The only required portion is a mid-semester survey (5 minutes)
  • Midterm 2 on Thursday 10/22 @ 7pm

    • Seating assignments will be sent by email on Wednesday 10/21
    • No lecture Wednesday 10/21
    • No discussion Thursday 10/22 or Friday 10/23
    • Lecture Friday 10/23 is a video
  • Ants project due Friday 10/16

    • Don't copy someone else's solution to QueenAnt
    • Don't copy someone else's solution to the extra credit problem
    • If you did already, resubmit with those answers blank before the deadline
  • Homework 6 due Wednesday 10/21

    • The only required portion is a mid-semester survey (5 minutes)
    • Optional questions are intended to be useful (challenging) review
  • Midterm 2 on Thursday 10/22 @ 7pm

    • Focus on recursion, mutation, objects, & hierarchical data (e.g., trees)
    • Review sessions on Sunday 10/18, 6-7:30 PM and 7:30-9 PM in 155 Dwinelle
    • Seating assignments will be sent by email on Wednesday 10/21
    • alternate exam time requests and special seating requests are due Friday 10/16
    • No lecture next Wednesday 10/21
    • No discussion next Thursday 10/22 or Friday 10/23
    • Lecture next Friday 10/23 is a video, but a great video
  • Ants project due Friday 10/16

    • 2 bonus points for early submission by Wednesday 10/14
    • 1 bonus point for early submission by Thursday 10/15
    • Project party Thursday 6pm-9pm in B6 Evans
  • Midterm 2 on Thursday 10/22 @ 7pm

    • Focus on recursion, mutation, objects, & hierarchical data (e.g., trees)
    • TA review session on Sunday 10/18, 6-8 PM in 155 Dwinelle
    • Seating assignments will be sent by email on Wednesday 10/21
    • alternate exam time requests and special seating requests are due Friday 10/16
  • Homework 6 due Wednesday 10/21

    • The only required portion is a mid-semester survey
    • Optional questions are intended to be useful review
  • Guerrilla section Monday 10/12 7pm-9pm on objects
  • Quiz 2 due Monday 10/12 @ 11:59pm

    • Don't copy your friends' answers; the quiz is only 2 points
    • If you don't solve the problems, there's no need to panic
  • Ants project due Friday 10/16

    • 2 bonus points for early submission by Wednesday 10/14
    • 1 bonus point for early submission by Thursday 10/15
    • Project party Thursday 6pm-9pm in B6 Evans
  • Midterm 2 on Thursday 10/22 @ 7pm
  • Guerrilla section Monday 10/12 7pm-9pm on objects
  • Quiz 2 due Monday 10/12 @ 11:59pm

    • Please work alone
    • See Piazza for instructions on how to ask questions
  • Ants project (extended) due Friday 10/16

    • 2 bonus points for early submission by Wednesday 10/14
    • 1 bonus point for early submission by Thursday 10/15
  • Midterm 2 on Thursday 10/22 @ 7pm
  • Homework 5 due Wednesday 10/7

    • Homework Party Wednesday 10/7 7pm-9pm
  • Quiz 2 (extended) released Friday 10/9 is due Monday 10/12
  • Ants project (extended) due Friday 10/16

    • 2 bonus points for early submission by Wednesday 10/14
    • 1 bonus point for early submission by Thursday 10/15
  • Midterm 2 on Thursday 10/22 @ 7pm
  • Extra lecture Monday 10/5 6:30pm-8pm in A1 Hearst Annex on containers
  • Homework 5 due Wednesday 10/7

    • It's long because it covers multiple important topics
    • Ask questions about your homework after you finish the lab
    • Come to office hours earlier
    • Homework Party Wednesday 10/7 7pm-9pm
  • Quiz 2 released Friday 10/9 is due Monday 10/12
  • Ants project due Friday 10/16
  • Midterm 2 on Thursday 10/22 @ 7pm
  • Homework 5 due Wednesday 10/7
  • Quiz 2 released Wednesday 10/7 is due Friday 10/9
  • The Maps project is due Thursday 10/1 @ 11:59pm. Earn an extra credit point for submitting by Wednesday 9/30.

    • Project party Wednesday 9/30 6pm-9pm in B6 Evans.
  • The extra lecture schedule and extra homework 1 are posted.
  • Homework 4 due Monday 9/28 @ 11:59pm. Students taking the make-up exam automatically receive full credit.
  • The Maps project is due Thursday 10/1 @ 11:59pm. Earn an extra credit point for submitting by Wednesday 9/30.
  • Extra Lecture on Huffman Codes Monday 9/28 6:30pm-8pm in A1 Hearst Annex (John is lecturing; homework will be assigned for CS 98)
  • The Maps project is posted, due Thursday 10/1 @ 11:59pm
  • Students interrupted by the VLSB fire alarm will need to take a make-up exam 2:10pm-3pm Friday 9/25 in Wheeler Auditorium
  • Homework 4 due Monday 9/28 @ 11:59pm. Students taking the make-up exam automatically receive full credit.
  • Extra Lecture on Huffman Codes Monday 9/28 6:30pm-8pm in A1 Hearst Annex (John is lecturing; homework will be assigned for CS 98)
  • Homework 3 due Wednesday 9/23 @ 11:59pm
  • The Maps project is posted, due Thursday 10/1 @ 11:59pm
  • Students interrupted by the VLSB fire alarm will need to take a make-up exam 2:10pm-3pm Friday 9/25 in Wheeler Auditorium
  • Homework 4 due Monday 9/28 @ 11:59pm. Students taking the make-up exam automatically receive full credit.
  • Hog composition revisions due Tuesday 10/13 @ 11:59pm
  • Optional hog strategy contest due Monday 9/21 @ 11:59pm
  • Homework 3 due Wednesday 9/23 @ 11:59pm
  • The Maps project is posted, due Thursday 10/1 @ 11:59pm
  • Guest lecturer on Monday 9/21 (Sumukh Sridhara)
  • Extra lecture on lambda calculus Monday 9/21 6:30pm-8pm in A1 Hearst Annex by Chenyang Yuan
  • Students interrupted by the VLSB fire alarm will need to take a make-up exam 2:10pm-3pm Friday 9/25 in Wheeler Auditorium
  • Lost points on Hog composition can be regained by revising your project. Instructions will be posted after all composition grading is finished.
  • One-on-one tutoring is now being offered (see Piazza)
  • Optional hog strategy contest due Monday 9/21 @ 11:59pm
  • Homework 3 due Wednesday 9/23 @ 11:59pm
  • Guest lecturers on Friday 9/18 (Brian Hou) and Monday 9/21 (Sumukh Sridhara)
  • Extra lecture on lambda calculus Monday 9/21 6:30pm-8pm in A1 Hearst Annex by Chenyang Yuan
  • Lost points on Hog composition can be regained by revising your project. Instructions will be posted after all composition grading is finished.
  • One-on-one tutoring will be offered starting next week. Information will be posted on Piazza today.
  • Solutions to Midterm 1 are posted
  • Students interrupted by the VLSB fire alarm will need to take a make-up exam next week
  • Homework 2 due Monday 9/14 @ 11:59pm
  • Midterm 1 on Wednesday 9/16 8pm-10pm
  • Optional hog strategy contest due Monday 9/21 @ 11:59pm
  • Extra lecture on decision making in games Monday 9/14 6:30pm-8pm in A1 Hearst Annex by Kevin Chen and Cale Horeff
  • Sign up for adjunct sections that provide tutoring in small groups through CS Mentors, starting after Midterm 1
  • No lecture on Wednesday 9/16; no discussion on Thursday 9/17 or Friday 9/18
  • Guest lecturers on Friday 9/18 (Brian Hou) and Monday 9/21 (Sumukh Sridhara)
  • Homework 2 due Monday 9/14 @ 11:59pm
  • Midterm 1 on Wednesday 9/16 8pm-10pm

    • Review sessions Saturday 9/12 1pm-2:30pm & 2:30pm-4pm in 155 Dwinelle
    • HKN review session Sunday 9/13 1pm-4pm in 145 Dwinelle
  • Guerrilla section this Saturday 9/12 5pm-7pm in 271 Soda on Higher-Order Functions
  • Entries for the completely optional hog strategy contest are due Monday 9/21
  • Sign up for adjunct sections that provide tutoring in small groups through CS Mentors, starting after Midterm 1
  • Project 1 due Thursday 9/10 @ 11:59pm

    • Earn 1 extra credit point for completing it by Wednesday 9/9 @ 11:59pm
    • Project Party Wednesday 9/9 6pm-8pm in B6 Evans
  • Homework 2 due Monday 9/14 @ 11:59pm
  • Midterm 1 on Wednesday 9/16 8pm-10pm

    • Covers material through Friday 9/11
    • Review session Saturday 9/12 1pm-4pm in 155 Dwinelle
    • Info and practice exams posted later this week
  • Small group tutoring sign-ups start soon
  • Videos for the first additional topics lecture are posted
  • Quiz 1 due Friday 9/4 @ 11:59pm

    • 0/3: Please talk to a TA for advice on how to proceed
    • 1/3: Make sure to spend time understanding all lab & discussion questions
    • 2/3: Practice is extremely helpful in learning how to solve CS problems
  • Project 1 due Thursday 9/10 @ 11:59pm

    • Earn 1 extra credit point for completing it by Wednesday 9/9 @ 11:59pm
    • An extreme version exists for students who don't want guidance
    • There will be a few extra office hours this weekend if you want help
  • Midterm 1 on Wednesday 9/16 8pm-10pm
  • Earn extra P/NP units (1 per class) for learning more:

    • Practical Programming starts Friday 9/4 5pm-6:30pm in 306 Soda
    • Additional Topics in SICP starts Monday 9/7 (probably 6:30pm-8pm in A1 Hearst Annex)
  • Homework 1 due Wednesday 9/2 (graded on effort, but try hard for correctness)
  • Quiz 1 released Wednesday 9/2 due Friday 9/4 @ 11:59pm (but do it Thursday)

    • If you score 0/3, you will need to talk to someone on the course staff
    • Open-computer: You can use the Python interpreter, watch course videos, etc.
    • Closed-help: Please don't talk to your classmates, search for answers, etc.
  • Project 1 due Thursday 9/10 @ 11:59pm

    • Earn 1 extra credit point for completing it by Wednesday 9/9 @ 11:59pm
    • An extreme version exists for students who don't want guidance
  • Midterm 1 on Wednesday 9/16 8pm-10pm
  • Practical Programming starts Friday 9/4 5pm-6:30pm in 306 Soda
  • Additional Topics in SICP starts Monday 9/7 6:30pm-8pm in A1 Hearst Annex
  • Homework 1 due Wednesday 9/2 (graded on effort, but try hard for correctness)

    • Homework party on Tuesday 9/1 6pm-8pm in B6 Evans
    • You can ask questions about homework at the end of your lab section
  • Quiz 1 released Wednesday 9/2 due Friday 9/4 (graded on correctness)

    • 3 points, similar in format to homework, but graded for correctness
    • If you score 0/3, you will need to talk to someone on the course staff
    • Open-computer: You can use the Python interpreter, watch course videos, etc.
    • Closed-help: Please don't talk to your classmates, search for answers, etc.
  • Project 1 released this week due Thursday 9/10 @ 11:59pm

    • Earn 1 extra credit point for completing it by Wednesday 9/9 @ 11:59pm
  • Midterm 1 on Wednesday 9/16 8pm-10pm

    • Locations, topics, and review materials will be announced later
    • No lecture on Wednesday 9/16
    • No discussion on Thursday 9/17 or Friday 9/18
    • Attending lab & discussion will provide a midterm safety net
  • Waitlisted students can attend normal lab sections next week (where/when they are waitlisted)
  • Starting next week, attending lab & discussion will provide a midterm safety net
  • Homework 1 due Wednesday 9/2

    • All homework is graded on effort; you must make progress on every problem to receive 2/2
    • Homework party on Tuesday 9/1 6pm-8pm in B6 Evans
  • Qiuz 1 released Wednesday 9/2 due Friday 9/4 (graded on correctness)
  • The office hours schedule is posted: cs61a.org/office-hours.html
  • Environment diagram generator: tutor.cs61a.org

There is no lab this Wednesday 8/26!

Due to limited space in Wheeler Auditorium, Lectures 1 and 2 will be repeated multiple times in advance to accommodate all of the students. These lectures have same content as the normal lecture on Wednesday and Friday, respectively, but will be less crowded.

Lecture 1 will be given a day early on Tuesday, 8/25, at 3pm and again at 4pm in Wheeler Auditorium.

Lecture 2 will be given a day early on Thursday, 8/27, at 7pm in 155 Dwinelle.

Welcome to CS 61A! This site is still under construction.


Resource/Piazza Search
Search for terms like "recursion", "homework 3", or "practice"
Name Type Tags
Midterm 1 Exam
Midterm 1 Retake Exam
No Lecture: Midterm 2 on 10/22 Exam
Final Exam
Lecture 1: Functions (Video) (1pp) (1pps) (8pp) (01.py) Lecture
Readings: section 1.1 Reading
Readings: section 1.2 Reading
Lecture 2: Names (Video) (1pp) (1pps) (8pp) (02.py) Lecture
Readings: section 1.3 Reading
Readings: section 1.4 Reading
Lecture 3: Control (Video) (1pp) (1pps) (8pp) (03.py) Lecture
Readings: section 1.5 Reading
Lecture 4: Higher-Order Functions (Video) (1pp) (1pps) (8pp) (04.py) Lecture
Readings: section 1.6 Reading
Lecture 5: Environments (Video) (1pp) (1pps) (8pp) (05.py) Lecture
Readings: section 1.6 Reading
Lecture 6: Recursion (Video) (1pp) (1pps) (8pp) (06.py) Lecture
Readings: section 1.7 Reading
Lecture 7: Tree Recursion (Video) (1pp) (1pps) (8pp) (07.py) Lecture
Readings: section 1.7 Reading
Lecture 8: Function Examples (Video) (1pp) (1pps) (8pp) Lecture
Lecture 9: Data Abstraction (Video) (1pp) (1pps) (8pp) (09.py) Lecture
Readings: section 2.1 Reading
Readings: section 2.2 Reading
Lecture 10: Sequences (Video) (1pp) (1pps) (8pp) (10.py) Lecture
Readings: section 2.3 Reading
Lecture 11: Trees (Video) (1pp) (1pps) (8pp) (11.py) Lecture
Readings: section 2.3 Reading
Lecture 12: Mutable Values (Video) (1pp) (1pps) (8pp) (12.py) Lecture
Readings: section 2.4 Reading
Lecture 13: Mutable Functions (Video) (1pp) (1pps) (8pp) (13.py) Lecture
Readings: section 2.4 Reading
Lecture 14: Objects (Video) (1pp) (1pps) (8pp) (14.py) Lecture
Readings: section 2.5 Reading
Lecture 15: Inheritance (Video) (1pp) (1pps) (8pp) (15.py) Lecture
Readings: section 2.5 Reading
Lecture 16: Representation (Video) (1pp) (1pps) (8pp) (16.py) Lecture
Readings: section 2.7 Reading
Lecture 17: Composition (Video) (1pp) (1pps) (8pp) (17.py) Lecture
Readings: section 2.9 Reading
Lecture 18: Hierarchy (Video) (1pp) (1pps) (8pp) (18.py) Lecture
Readings: section 2.9 Reading
Lecture 19: Growth (Video) (1pp) (1pps) (8pp) (19.py) Lecture
Readings: section 2.8 Reading
Lecture 20: Sets (Video) (1pp) (1pps) (8pp) (20.py) Lecture
Readings: section 2.9 Reading
Lecture 21: Data Examples (Video) (1pp) (1pps) (8pp) (21.py) Lecture
Lecture 22: Users (Video) Lecture
Lecture 23: Scheme (Video) (1pp) (1pps) (8pp) (23.scm) Lecture
Readings: section 3.1 Reading
Readings: section 3.2 Reading
Lecture 24: Exceptions (Video) (1pp) (1pps) (8pp) (24.py) Lecture
Readings: section 3.3 Reading
Lecture 25: Calculator (Video) (1pp) (1pps) (8pp) (25.scm) Lecture
Readings: section 3.4 Reading
Lecture 26: Interpreters (Video) (1pp) (1pps) (8pp) Lecture
Readings: section 3.5 Reading
Lecture 27: Tail Calls (Video) (1pp) (1pps) (8pp) (27.scm) Lecture
Readings: section 3.5 Reading
Lecture 28: Iterators (Video) (1pp) (1pps) (8pp) (28.py) Lecture
Readings: section 4.2 Reading
Lecture 29: Streams (Video) (1pp) (1pps) (8pp) (29.scm) Lecture
Readings: section 4.2 Reading
Lecture 30: Declarative Programming (Video) (1pp) (1pps) (8pp) (30.sql) Lecture
Readings: section 4.3 Reading
Lecture 31: Tables (Video) (1pp) (1pps) (8pp) (31.sql) Lecture
Readings: section 4.3 Reading
Lecture 32: Recursive Select (Video) (1pp) (1pps) (8pp) (32.sql) Lecture
Readings: section 4.3 Reading
Lecture 33: Aggregation (Video) (1pp) (1pps) (8pp) (33.sql) Lecture
Readings: section 4.3 Reading
Lecture 34: Distributed Computing (Video) (1pp) (1pps) (8pp) Lecture
Readings: section 4.6 Reading
Lecture 35: Distributed Data (Video) (1pp) (1pps) (8pp) (35.py) Lecture
Readings: section 4.6 Reading
Lecture 36: Conclusion (1pp) (1pps) (8pp) Lecture
Lecture 37: Natural Language (Video) (1pp) (1pps) (8pp) (37.zip) Lecture
Lecture 1: Newton's Method (1pp) (1pps) (8pp) (e01.py) ExtraLecture
Readings: section 1.6 Reading
Lecture 2: Decisions (1pp) (1pps) (8pp) (e02.py) ExtraLecture
Lecture 3: Lambda (1pp) (1pps) (8pp) (e03.py) ExtraLecture
Lecture 4: Huffman (1pp) (1pps) (8pp) (e04.py) ExtraLecture
Lecture 5: Containers (1pp) (1pps) (8pp) (e05.py) ExtraLecture
Readings: section 2.4 Reading
Lecture 6: OOP (1pp) (1pps) (8pp) (e06.py) ExtraLecture
Readings: section 2.6 Reading
Lecture 7: Parallelism (1pp) (1pps) (8pp) (e07.zip) ExtraLecture
Readings: section 4.8 Reading
Lecture 8: Macros (1pp) (1pps) (8pp) (e08.scm) ExtraLecture
Lecture 9: Ray Tracing (1pp) (1pps) (8pp) (e09.py) ExtraLecture
Lecture 10: Lazy Evaluation (1pp) (1pps) (8pp) (e10.scm) ExtraLecture
Lecture 11: Logic Programming (1pp) (1pps) (8pp) (e11.logic) ExtraLecture
Readings: section 4.4 Reading
Lecture 12: Computability (1pp) (1pps) (8pp) (e12.scm) ExtraLecture
Lecture 13: Machine Learning (1pp) (1pps) (8pp) (e13.ipynb) ExtraLecture
Extra Homework 1 ExtraHomework
Homework 1 Homework
Homework 2 Homework
Homework 3 Homework
Homework 4 Homework
Homework 5 Homework
Homework 6 Homework
Homework 7 Homework
Homework 8 Homework
Homework 9 Homework
Homework 10 SpecialHomework
Homework 11 SpecialHomework
Homework 12 SpecialHomework
Quiz 1 (Solutions) Quiz
Quiz 2 (Solutions) Quiz
Quiz 3 (Solutions) Quiz
Quiz 4 (Solutions) Quiz
Hog Project
Hog Contest Project
Maps Project
Ants Project
Scheme Project
Lab 0: Workflow Lab
Lab 1: Expressions and Control Lab
Lab 2: Higher Order Functions and Lambdas Lab
Lab 3: Recursion and Midterm 1 Review Lab
Lab 4: Data Abstraction and Lists Lab
Lab 5: Trees Lab
Lab 6: Objects and Inheritance Lab
Lab 7: Recursive Objects Lab
Lab 8: Midterm 2 Review Lab
Lab 9: Scheme Lab
Lab 10: Interpreters Lab
Lab 11: Iterators and Generators Lab
Lab 12: SQL Lab
Lab 13: SeQueL (Optional) Lab
Lab 14: Spark Lab
Discussion 0: Lost on the Moon Discussion
Discussion 1: Control and Higher Order Functions Discussion
Discussion 2: Environment Diagrams and Recursion Discussion
Discussion 3: Sequences and Trees Discussion
Discussion 4: Dictionaries and Mutation Discussion
Discussion 5: Inheritance and Nonlocal Discussion
Discussion 6: Orders of Growth and Trees Discussion
Discussion 7: Scheme Discussion
Discussion 8: Tail Calls and Interpreters Discussion
Discussion 9: Delayed Expressions Discussion
Discussion 10: SQL Joins and Recursion Discussion
Discussion 11: Final Review 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
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 8/26 Functions
(Video) (1pp) (1pps) (8pp) (01.py)
1.1
1.2
Lab 0: Workflow
(due Thu 9/3)
Fri 8/28 Names
(Video) (1pp) (1pps) (8pp) (02.py)
1.3
1.4
Discussion 0: Lost on the Moon Homework 1
(due Wed 9/2)
2 Mon 8/31 Control
(Video) (1pp) (1pps) (8pp) (03.py)
1.5 Hog
(due Thu 9/10)
Wed 9/2 Higher-Order Functions
(Video) (1pp) (1pps) (8pp) (04.py)
1.6 Lab 1: Expressions and Control
(due Thu 9/3)
Quiz 1
(due Fri 9/4) (Solutions)
Fri 9/4 Environments
(Video) (1pp) (1pps) (8pp) (05.py)
1.6 Discussion 1: Control and Higher Order Functions
3 Mon 9/7 No Lecture: Labor Day
Wed 9/9 Recursion
(Video) (1pp) (1pps) (8pp) (06.py)
1.7 Lab 2: Higher Order Functions and Lambdas
(due Thu 9/10)
Homework 2
(due Mon 9/14)
Hog Contest
(due Mon 9/21)
Fri 9/11 Tree Recursion
(Video) (1pp) (1pps) (8pp) (07.py)
1.7 Discussion 2: Environment Diagrams and Recursion
4 Mon 9/14 Function Examples
(Video) (1pp) (1pps) (8pp)
Wed 9/16 Midterm 1 Lab 3: Recursion and Midterm 1 Review
(due Thu 9/17)
Fri 9/18 Data Abstraction
(Video) (1pp) (1pps) (8pp) (09.py)
2.1
2.2
Homework 3
(due Wed 9/23)
5 Mon 9/21 Sequences
(Video) (1pp) (1pps) (8pp) (10.py)
2.3 Maps
(due Thu 10/1)
Wed 9/23 Trees
(Video) (1pp) (1pps) (8pp) (11.py)
2.3 Lab 4: Data Abstraction and Lists
(due Thu 9/24)
Homework 4
(due Mon 9/28)
Fri 9/25 Midterm 1 Retake Discussion 3: Sequences and Trees
6 Mon 9/28 Mutable Values
(Video) (1pp) (1pps) (8pp) (12.py)
2.4
Wed 9/30 Mutable Functions
(Video) (1pp) (1pps) (8pp) (13.py)
2.4 Lab 5: Trees
(due Thu 10/1)
Fri 10/2 Objects
(Video) (1pp) (1pps) (8pp) (14.py)
2.5 Discussion 4: Dictionaries and Mutation Homework 5
(due Wed 10/7)
7 Mon 10/5 Inheritance
(Video) (1pp) (1pps) (8pp) (15.py)
2.5 Ants
(due Fri 10/16)
Wed 10/7 Representation
(Video) (1pp) (1pps) (8pp) (16.py)
2.7 Lab 6: Objects and Inheritance
(due Thu 10/8)
Fri 10/9 Composition
(Video) (1pp) (1pps) (8pp) (17.py)
2.9 Discussion 5: Inheritance and Nonlocal Quiz 2
(due Mon 10/12) (Solutions)
8 Mon 10/12 Hierarchy
(Video) (1pp) (1pps) (8pp) (18.py)
2.9
Wed 10/14 Growth
(Video) (1pp) (1pps) (8pp) (19.py)
2.8 Lab 7: Recursive Objects
(due Thu 10/15)
Homework 6
(due Mon 10/19)
Fri 10/16 Sets
(Video) (1pp) (1pps) (8pp) (20.py)
2.9 Discussion 6: Orders of Growth and Trees
9 Mon 10/19 Data Examples
(Video) (1pp) (1pps) (8pp) (21.py)
Wed 10/21 No Lecture: Midterm 2 on 10/22 Lab 8: Midterm 2 Review
(due Thu 10/22)
Fri 10/23 Users
(Video)
10 Mon 10/26 Scheme
(Video) (1pp) (1pps) (8pp) (23.scm)
3.1
3.2
Homework 7
(due Thu 10/29)
Wed 10/28 Exceptions
(Video) (1pp) (1pps) (8pp) (24.py)
3.3 Lab 9: Scheme
(due Thu 10/29)
Fri 10/30 Calculator
(Video) (1pp) (1pps) (8pp) (25.scm)
3.4 Discussion 7: Scheme Homework 8
(due Wed 11/4)
11 Mon 11/2 Interpreters
(Video) (1pp) (1pps) (8pp)
3.5 Scheme
(due Thu 11/19)
Wed 11/4 Tail Calls
(Video) (1pp) (1pps) (8pp) (27.scm)
3.5 Lab 10: Interpreters
(due Thu 11/5)
Quiz 3
(due Fri 11/6) (Solutions)
Fri 11/6 Iterators
(Video) (1pp) (1pps) (8pp) (28.py)
4.2 Discussion 8: Tail Calls and Interpreters
12 Mon 11/9 Streams
(Video) (1pp) (1pps) (8pp) (29.scm)
4.2
Wed 11/11 No Lecture: Veterans Day Lab 11: Iterators and Generators
(due Thu 11/12)
Fri 11/13 Declarative Programming
(Video) (1pp) (1pps) (8pp) (30.sql)
4.3 Discussion 9: Delayed Expressions
13 Mon 11/16 Tables
(Video) (1pp) (1pps) (8pp) (31.sql)
4.3
Wed 11/18 Recursive Select
(Video) (1pp) (1pps) (8pp) (32.sql)
4.3 Lab 12: SQL
(due Thu 11/19)
Fri 11/20 Aggregation
(Video) (1pp) (1pps) (8pp) (33.sql)
4.3 Discussion 10: SQL Joins and Recursion Homework 9
(due Wed 11/25)
14 Mon 11/23 Distributed Computing
(Video) (1pp) (1pps) (8pp)
4.6
Wed 11/25 No Lecture: Thanksgiving Lab 13: SeQueL (Optional)
(due Thu 12/10)
Fri 11/27 No Lecture: Thanksgiving
15 Mon 11/30 Distributed Data
(Video) (1pp) (1pps) (8pp) (35.py)
4.6 Homework 10
(due Thu 12/3)
Wed 12/2 Conclusion
(1pp) (1pps) (8pp)
Lab 14: Spark
(due Thu 12/3)
Quiz 4
(due Thu 12/3) (Solutions)
Fri 12/4 Natural Language
(Video) (1pp) (1pps) (8pp) (37.zip)
Discussion 11: Final Review Homework 11
(due Thu 12/10)
Homework 12
(due Thu 12/10)
16 Thu 12/17 Final