CS 61A: The Structure and Interpretation of Computer Programs
Fall 2015Instructor: John DeNero
MWF 2-3 in Wheeler Auditorium
Announcements
- Solutions to the Final Exam are posted
Check your grades on bCourses
- Regrade request form: https://goo.gl/5mnhJ5
Homework 11 due Thursday 12/10: complete the online course survey
- 1 extra credit point to all submitters if 85% of students submit
- Homework 12 due Thursday 12/10: vote for your favorite recursive art
- Seating assignments for the Final Exam will be emailed to you
- Review sessions on Thursday and Friday will be held during normal discussion times
- A video-only lecture on natural language parsing is posted
- 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
- 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.
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 |