CS 61A: Structure and Interpretation of Computer Programs

Spring 2021, Instructors: Pamela Fox, Paul Hilfinger
Jump to calendar

Monday, April 12
  • There's a lecture today (Monday) at the usual time and Zoom. This week we will be introducing various forms of declarative programming, which we'll see in assignments next week.
  • We have a few TBD lecture slots remaining and would like to know what topics would be most interesting to you. Please let us know in this survey.
  • There's another TA panel this Thursday. Ask them all your questions about classes, research, internships, etc!
  • The first checkpoint of the Scheme project is Tuesday night. Please post questions in Piazza when possible, since office hour queues can get quite long on checkpoint days.
  • The Midterm 2 reflection form is due Monday night.
  • Homework 7 recovery is Tuesday night.
  • Homework 8 is due Thursday night.
Friday, April 9
  • There's a lecture today (Friday) at the usual time and Zoom.
  • Our TAs are holding two panels, this Friday and next Thursday. Ask them all your questions about classes, research, internships, etc!
  • The Midterm 2 reflection form is due this Sunday night, for those of you who wish to reflect on the midterm problems and earn a point of extra credit.
  • Homework 7 recovery is next Tuesday night. See Piazza post for details on attending the session and submitting the form.
  • Homework 8 is now released, due next Thursday night.
Week 12 Class Material
Wednesday, April 7
  • There's a lecture today (Wednesday) at the usual time and Zoom.
  • Once you attend or watch a discussion orientation today, we encourage you to complete the vitamin, both for your own assessment (you can see how you did in the submission email) and for an additional EC point. You can find the vitamin linked from discussion 11.
  • Midterm 2 reflection session is Thursday night.
  • Homework 7 is due this Thursday night.
  • The final project, Scheme, is now released! The first checkpoint is April 13th. Start early so you can get your questions answered in office hours!
  • EECS announcements:

    • The EECS department would like to know about any incidents that lead to you feeling unwelcome or unsafe in our learning community. Please use this form to report anything.
    • Professor Ranade is holding a CS advising session on April 13th, where she'll answer your questions about courses, research, or the industry.
Week 12 Class Material
Monday, April 5
  • There's a lecture today (Monday) at the usual time and Zoom.
  • Regrade requests for Q8 of midterm 2 are due tonight. See Piazza @2535
  • Homework 6 recovery session is Tuesday night. See Piazza @2539
  • If you haven't read, please read the points plan for the rest of the semester. We've added several more learning opportunities for extra credit.
  • There will be a Midterm 2 reflection session and form for students who want to understand the MT2 problems better. See Piazza @2559
  • Homework 7 is due this Thursday night.
Week 12 Class Material
Wednesday, March 31
  • There's a lecture today (Wednesday) at the usual time and Zoom.
  • We have both discussions and tutorials this week. If you can't attend a live orientation, please watch Richard's pre-recorded orientation before attending tutorial. We also encourage you to complete the vitamin after orientation, but you have until Thursday at midnight to complete it. The vitamin is linked from the discussion 10 page.
  • Homework 6 is due Thursday night.
  • Midterm 2 regrade requests and Cats composition revisions are both due Friday.
  • We completed writing a midterm 2 guide, which includes a walkthrough of each question and related content. The final exam will be cumulative, so you'll want to have a solid understanding of the MT2 material.
Monday, March 29
  • Welcome back from spring break! 🌸 πŸ“Ί 🐈 🌞
  • Midterm 2 grades were released last week. Regrade requests are due Friday. See Piazza post @2388
  • Homework 5 recovery session is this Tuesday. Make sure you fill out the form if you'll be attending. See Piazza post @2434
  • We are now entering the Scheme phase of the class!
  • There's a lecture today (Monday) at the usual time and Zoom.
  • Lab 10 is released and due Tuesday night. Homework 6 is released and due Thursday night.
  • We added a contact page to the website to clarify all the ways you can contact us. It includes various ways to give anonymous feedback.
Wednesday, March 17
  • We have a lecture today (Wednesday) at our usual time and Zoom. Find the links in the calendar below.
  • Midterm 2 is coming up this Friday!

    • Please read through the logistics post.
    • The lab is all midterm review questions and is optional. Work on the questions that seem like the most useful for your review. Everyone will get points for the lab regardless of completion.
    • A practice midterm 2 is available. See Piazza @2152. We are not doing a practice proctoring, however, so you can take it whenever works for you (or not take it at all).
    • The AYM organization is holding a review session Wedneday night. See Piazza @2169
  • Since this week is midterm week, there are some changes to our weekly schedule:

    • Tutorials are cancelled.
    • LOST sections and Exam Prep sections are cancelled.
    • Conceptual office hours on Friday/Saturday are cancelled.
    • All office hours on Friday are cancelled.
    • There is no lecture Friday.
  • Discussion orientations are still happening, and there's an associated vitamin linked from the discussion.
  • Both the discussion vitamin and Homework 5 are due Thursday, March 18th. Make sure you leave yourself time for studying!
Monday, March 15
  • We have a lecture today (Monday) at our usual time and Zoom. Find the links in the calendar below.
  • Midterm 2 is coming up this Friday!

    • Please read through the logistics post.
    • The lab is all midterm review questions and is optional. Work on the questions that seem like the most useful for your review. Everyone will get points for the lab regardless of completion.
    • A practice midterm 2 is available. See Piazza @2152. We are not doing a practice proctoring, however, so you can take it whenever works for you (or not take it at all).
  • Since this week is midterm week, there are some changes to our weekly schedule:

    • LOST sections and Exam Prep sections are cancelled.
    • Conceptual office hours on Friday/Saturday are cancelled.
    • All office hours on Friday are cancelled.
    • Tutorials are cancelled.
    • However, orientations are still happening and will focus on midterm review.
  • The Ants project is due Tuesday, March 16th, and Homework 5 is due Thursday, March 18th. Make sure you leave yourself time for studying!
  • Have you been pair programming on CS61A projects? πŸ‘©πŸ½β€πŸ’»πŸ‘¨πŸΏβ€πŸ’» We'd love to hear what technology you've been using! Please fill out this quick survey.
Friday, March 12
  • We have a lecture today (Friday) at our usual time and Zoom. Find the links in the calendar below.
  • Midterm 2 is coming up next Friday!

  • Have you been pair programming on CS61A projects? πŸ‘©πŸ½β€πŸ’»πŸ‘¨πŸΏβ€πŸ’» We'd love to hear what technology you've been using! Please fill out this quick survey.
Wednesday, March 10
  • We have a lecture today (Wednesday) at our usual time and Zoom. Find the links in the calendar below.
  • As with last week, there is a pre-recorded discussion orientation available. Please either watch that orientation or watch/attend one of the other orientations before attending tutorial.
  • To help you better reflect on the discussion orientation before you go to tutorial, we are introducing vitamins: quick forms that are intended to be completed either after going to discussion orientation or doing the discussion worksheet before tutorial. If you submit 5 of the next 6 discussion vitamins, you will get 1 full point of extra credit added to your final course grade (even if your answers are not fully correct). The vitamin for discussion 7 is due thursday at midnight. You may find it difficult to solve before discussion orientation, so we highly encourage you to go!
  • CSM is hosting a review session for midterm 2 this Saturday, and HKN is holding a review session this Sunday.
  • We've changed the office hours queuing process slightly. Instead of making a private Piazza post, we instead ask you to describe your problem in the ticket description. We won't pick up your ticket until the problem description is filled out. Learn more here
Monday, March 8
  • We have a lecture today (Monday) at our usual time and Zoom. Find the links in the calendar below.
  • Today's 3pm lab with Richard will be an old-style orientation with hints, and will be recorded. The other labs will be non-recorded new-style orientations with full walkthroughs. see Piazza thread @1860
  • The first checkpoint for the Ants project is coming up on Tuesday, March 9. Submit phases 1-2 for 1 point.
  • A homework recovery session will take place Tuesday 8-9PM. See Piazza thread @1785.
Friday, March 5
  • We have a lecture today (Friday) at our usual time and Zoom. Find the links in the calendar below.
  • The LOST sections continue this week from 12-2pm and 4-6pm. Join from this Zoom link.
  • Exam Prep 5 is today from 3-4:30PM and focuses on trees and generators. See Piazza thread @1665.
  • Homework 5 is released and is due Thursday, March 18 (the deadline was extended by week from 3/11). However, it covers two topics (LinkedList and Tree class) that won't be covered in lecture/lab until Monday, so you may want to wait to start those questions.
  • The Ants project was released on Wednesday. The first checkpoint is coming up on March 9. Start early so you can get questions answered before office hour queues fill up!
  • We are still working through your midterm regrade requests and aim to have them done by tomorrow.
Week 7 Class Material
Wednesday, March 3
  • We have a lecture today (Wednesday) at our usual time and Zoom. Find the links in the calendar below.
  • The Ants project is now released! 🐜 The first checkpoint is March 9, the second checkpoint is March 12, and the final deadline is March 16. Get started early and post your questions in the relevant Piazza thread.
  • If you filled out the Ants partnering form, you should have gotten an email with your partner details. Email cs61a@berkeley.edu if any issues.
  • You can now watch pre-recorded videos of the discussion orientations. See Piazza thread @1600. This is an option for those of you who have a hard time making live orientations for scheduling reasons. Please make sure you watch or attend a discussion orientation somehow before attending tutorial section.
  • Please let us know what you thought of this week's experimental lab orientation format by filling out this survey.
  • We are still working through your midterm regrade requests and hope to have them done this week.
Week 7 Class Material
Monday, March 1
  • We have a lecture today (Monday) at our usual time and Zoom. Find the links in the calendar below.
  • A new lab format starts this week! The lab orientations will walk through each problem, but they will not teach mini-lectures and they will not be recorded. If you'd like a review of the lab topics, please watch the topic videos embedded in the lab page or re-watch the relevant lecture. Please let us know what you think by filling out this survey.
  • If you're looking for a partner for the upcoming Ants project, please fill out the partnering form by Tuesday 11:59 PST. See Piazza @1575. 🐜 πŸ‘©πŸ½β€πŸ’»πŸ‘¨πŸΏβ€πŸ’»
  • TAs are holding advising office hours this week; please sign up for an appointment if you're interested. See Piazza @1564
  • We are still working through your midterm regrade requests and hope to have them done this week.
Week 7 Class Material
Friday, February 26
  • We have a lecture today (Friday) at our usual time and Zoom. Find the links in the calendar below.
  • There's an exam prep right after lecture today that's focused entirely on trees. See Piazza thread @1443
  • We experimented with offering a pre-recorded discussion orientation video this week. If you watched that, please fill out the feedback survey! See Piazza thread @1394.
  • We have released the midterm grades. If you have regrade requests, please submit by tonight (Friday)! See Piazza thread @1322.
  • We've also published the midterm solutions PDF and a walkthrough of the problems.
  • The Cats project is due tonight (Friday). Submit a day early for one point EC. 😺 Please ask questions in the Piazza thread for each problem. Take a break by sharing your favorite cat pic in Piazza thread @1385. πŸˆβ€β¬›
  • Hog composition scores are released. Revisions are due tonight (Friday) at 11:59PM PST. To revise, go to okpy.org and read the comments left on the submission that has a "composition" tag. Fix the relevant problems and run python3 ok --revise (NOT --submit). If you did not receive a composition grade, submit a regrade request using this form.
Week 6 Class Material
Wednesday, February 24
  • We have a lecture today (Wednesday) at our usual time and Zoom. You can find the HTML slides or PDF slides from the "html" and "full" links below.
  • You can now watch pre-recorded videos of the discussion orientations. See Piazza thread @1394. This is an option for those of you who have a hard time making live orientations for scheduling reasons. Please make sure you watch or attend a discussion orientation somehow before attending tutorial section.
  • We have released the midterm grades. If you have regrade requests, please submit by Friday night! See Piazza thread @1322.
  • We've also published the midterm solutions PDF and a walkthrough of the problems.
  • The Cats project is due Friday, 2/26. Submit a day early for one point EC. 😺 Please ask questions in the Piazza thread for each problem. Take a break by sharing your favorite cat pic in Piazza thread @1385. πŸˆβ€β¬›
  • Hog composition scores are released. Revisions are due Friday at 11:59PM PST. To revise, go to okpy.org and read the comments left on the submission that has a "composition" tag. Fix the relevant problems and run python3 ok --revise (NOT --submit). If you did not receive a composition grade, submit a regrade request using this form.
  • Congrats to the Hog contest winners: 1) okonoko, 2) 🐧🐧🐧, and 3) πŸͺCookEs-ultimate1(Version 1) github@ToiletCommander.
Week 6 Class Material
Monday, February 22
  • We have a lecture today (Monday) at our usual time and Zoom. You can find the HTML slides or PDF slides from the "html" and "full" links below.
  • We are still grading the midterms. We'll let you know when grades are available.
  • The Cats project is due Friday, 2/26. Submit a day early for one point EC. 😺 See project description
  • Lab 5 is released. You can ask questions in the relevant Piazza thread
  • Computer Science Mentors (CSM) still has open slots for students. See Piazza thread
  • The optional Hog challenges end tomorrow; you can design your own dice or enter the strategy contest.
Week 6 Class Material
Friday, February 19
  • We have a lecture today (Friday) at our usual time and Zoom.
  • We are still grading the midterms. We'll let you know when grades are available.
  • The Cats project is released! 😺 See project description
  • Next week, we will start releasing pre-recorded discussion orientations on Tuesday. We hope that's a resource for those of you who've found it difficult to attend the live discussion orientations.
Wednesday, February 17
  • There are no lecture, discussion orientations, or tutorials today.
  • Our first midterm is tonight (Wednesday) from 5-7pm! Please read through the Midterm 1 Logistics post and ask any questions now before the exam begins. If you're experiencing an outage due to the Winter storm, please let us know.
  • The Cats project will be released tonight. 😺 All students who filled out the Cats partnering form should have gotten their partner’s contact info at this point, please email cs61a@berkeley.edu if there are any issues. πŸ‘©πŸ½β€πŸ’»πŸ‘¨πŸΏβ€πŸ’»
Monday, February 15
  • Today is a holiday, so there is no lecture. There will also be no lab orientations, discussion orientations, or tutorials this week.
  • Our first midterm is coming up this Wednesday 5-7pm! Please read through the Midterm 1 Logistics post and ask any questions now before the exam begins.
  • We added study guides to the website, covering topics like HOFs, recursion, and reverse environment diagrams. See Piazza @808
  • The AYM organization is holding a review session tonight. See Piazza thread @953.
  • The Cats project will be released this week. 😺 Let us know if you're looking for a partner by filling out the partnering form by Tuesday night. πŸ‘©πŸ½β€πŸ’»πŸ‘¨πŸΏβ€πŸ’» See Piazza thread @962
Friday, February 12
  • Our first midterm is coming up this Wednesday 5-7pm!
  • We've added study guides to the website, covering topics like HOFs, recursion, and reverse environment diagrams. See Piazza @808
  • The LOST sections today will focus extensively on reverse environment diagrams and recursion, intended for midterm review. Join either 12-2PM or 4-6PM from this Zoom link: links.cs61a.org/lost
  • There's also an Exam Prep section today from 3-4:30PM. See Piazza @805
  • Two organizations are holding review sessions this Saturday: CSM from 11-12:30pm and HKN from 2:30-5:30pm.
Wednesday, February 10
  • Live lectures will continue M/W/F, you can always follow the "Lecture" link from the calendar below.
  • The drop deadline is today, Wednesday, February 10th. There are still seats open in CS10. See Piazza @329.
  • Please check Piazza @318 to make sure you can attend the exam times and fill out the exam conflict form by Thursday if you cannot.
  • Please remember to either attend or watch a discussion orientation before attending a tutorial section. The tutorials are designed to build upon what you've gone over in the discussion orientation. You can find the links in the calendar below or in the Piazza index thread. Please do this, we do not want to have to start taking attendance. πŸ₯Ί πŸ₯Ί
  • It is now possible to run doctests in code.cs61a.org, by clicking the red test tube button. Watch video demo here. Remember that you can use code.cs61a.org during the exam, but you cannot use your own IDE, so it is beneficial to get familiar with the interface now.
  • Homework 3 is due this Thursday, February 11th.
  • There are lots of mentoring spots still available for CSM (Computer Science Mentors). If you want the unit for CSM, you’ll need to get it before the add deadline. See Piazza @580
Monday, February 8
  • The ninth lecture will be live Monday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture9-qa).
  • The drop deadline is coming up this Wednesday, February 10th. There are still seats open in CS10. See Piazza @329.
  • TAs are holding advising office hours this week; please sign up for an appointment if you're interested. See Piazza @706
  • We're holding a practice midterm on Tuesday from 5-7PM, which will give you practice with the format, content, and proctoring setup. See Piazza @736
  • Please check Piazza @318 to make sure you can attend the exam times and fill out the exam conflict form if you cannot.
  • There are lots of mentoring spots still available for CSM (Computer Science Mentors). If you want the unit for CSM, you’ll need to get it before the add deadline. See Piazza @580
Friday, February 5
  • The eighth lecture will be live Friday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture8-qa).
  • The first set of grades has been released on howamidoing.cs61a.org. Regrade requests can be submitted on links.cs61a.org/okpy-regrades. Howamidoing will be updated with new scores once or twice a week, usually on Fridays.
  • Hog project is due Friday night. Since office hours queues have been quite long, we encourage you to first post questions on Piazza and link your office hours request to the Piazza post. If posting privately with code, please follow the private post template and link to your code backup on OKPy instead of screenshotting it.
  • When you are working on the Hog project (and future projects), we recommend using the skills we've covered so far in the class. If you use other features (such as lists, dicts, or string methods), you may lose composition points for that assignment.
  • Please fill out our Week 3 survey by Friday night! Your feedback helps us improve the course.
Wednesday, February 3
  • The seventh lecture will be live Wednesday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture7-qa).
  • Please remember to either attend or watch a discussion orientation before going to your tutorial section, since the tutorials assume you've seen the orientation content.
  • Hog project is due Friday night. Submitting the entire project by Thursday night earns 1 extra credit point. You can ask questions on Piazza in each problem's thread or come to office hours for help.
  • Homework 2 is due Thursday night.
  • Two optional extensions to the Hog project were just released: Hog Strategy Contest and Hog Dice Design Showcase.
  • When you are working on the Hog project (and future projects), we recommend using the skills we've covered so far in the class. If you use other features (such as lists, dicts, or string methods), you may lose composition points for that assignment.
  • Please fill out our Week 3 survey to help us improve the course!
Monday, February 1
  • The sixth lecture will be live Monday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture6-qa).
  • Phase 1 of the Hog project is due Tuesday night. Submitting the entire project by Thursday night earns 1 extra credit point. You can ask questions on Piazza in each problem's thread or come to office hours for help.
  • Lab 2 is due Tuesday night.
  • Homework 2 is due Thursday night.
  • There will be a lab party on Monday from 4-5:30pm and a project party on Tuesday from 7-8:30pm. See Piazza thread 430.
Friday, January 29
  • The fifth lecture will be live Friday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture5-qa).
  • It is important that you either attend or watch a discussion orientation before going to tutorial, because the work in tutorial builds on the topics discussed in discussion orientation. You can find the links and times in the calendar below.
  • We've announced the midterm dates and times. Please check Piazza thread 318 to make sure you can attend the times and fill out the conflict form if you cannot.
  • LOST sections start today, 12-2 and 4-6! Read Piazza thread 239 for more information.
  • Exam prep continues this week. We encourage you to try the questions in the worksheet before coming, if possible. See Piazza thread 220.
Wednesday, January 27
  • The fourth lecture will be live this Wednesday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture4-qa).
  • Homework 1 is due Thursday, Jan 28 @ 11:59 PST.
  • Project 1: Hog will be released Wednesday and is due Friday, Feb 5 @ 11:59 PST.
  • Lost sections start this week, with one session Friday 12-2 and another from 4-6. See this Piazza thread
  • 9 new tutorial sections just got added, mostly at very popular times. Check tutorials.cs61a.org
Monday, January 25
  • The third lecture will be live this Monday @ 2:10 over Zoom (links.cs61a.org/lecture). Post questions in Piazza (links.cs61a.org/lecture3-qa).
  • Due this week:

    • Lab0 is due Tuesday, Jan 26 @ 11:59 PST.
    • Lab1 will be released Monday and is also due Tuesday @ 11:59 PST.
    • Homework 1 is due Thursday, Jan 28 @ 11:59 PST.
  • Lots of ways to get help are starting this week:

    • Orientations! Lab orientatations are on Mondays and discussion orientations are on Wednesdays. Find links to Zooms in the Piazza index thread or calendar below. Orientations will be recorded.
    • Office hours! There are various flavors of office hours. You can sign up for regular office hours for debugging/assignment help or drop by conceptual office hours to explore topics. See office hours schedule.
    • Parties! There will be a lab party on Monday and a homework party on Tuesday. More information in this Piazza thread.
    • Lost sections! There'll be two offerings on Friday and one will be recorded. Stay tuned for more info.
  • Course staff can help you find a partner for pair programming on the Hog project. See this Piazza thread.
  • A few additional tutorial sections will be opening up, as we've just hired new tutors. Check tutorials.cs61a.org
Friday, January 22
  • Homework 1 will be released Friday and is due Thursday, Jan 28.
  • Course staff are holding a Tech Support office hours this week to help with Lab 0 installation. See office hours schedule
  • The first Exam Prep session is this 3-4:30pm on Friday and will discuss exam format, studying advice, and tips for succeeding in the course. Join Zoom at links.cs61a.org/examprep
  • Check the Piazza index thread for orientation Zoom links and other resources.
  • DSP students, please submit your accomodation letters ASAP. Thank you!
  • Important links for this week:

Wednesday, January 20
Monday, January 18
  • Welcome to CS 61A!
  • Join Piazza for announcements and answers to your questions.
  • The first lecture will be 2:10pm-3pm Wednesday 1/20 on Zoom (@berkeley.edu login required). Please attend, but it will be recorded and posted to this site if you miss it.
  • We will hold an optional session 1:10pm-2pm Thursday where you can meet the instructors and ask us anything. Link will be posted here.
  • The Fall 2020 website has moved to fa20.cs61a.org.
  • All events below are listed in Pacific Time
  • Important links for this week:

Week Date Lecture Textbook Orientation Links Lab, Discussion, & Exam Prep Links Homework & Project
1 Wed
1/20
Introduction
Lab 00: Getting Started
Due Tue 1/26
Fri
1/22
Functions
HW 01: Variables & Functions, Control
Due Thu 1/28
2 Mon
1/25
Control
Lab 01: Variables & Functions, Control
Due Tue 1/26
Wed
1/27
Higher-Order Functions
Disc 01: Environment Diagrams, Control Hog
Due Fri 2/5
Fri
1/29
Environments
(Optional) Exam Prep 01: Control, Higher-Order Functions
(Optional) Lost 01: Control, Environment Diagrams
HW 02: Higher-Order Functions
Due Thu 2/4
3 Mon
2/1
Recursion
Lab 02: Higher-Order Functions, Lambda Expressions
Due Tue 2/2
Wed
2/3
Tree Recursion
Disc 02: Higher-Order Functions, Self Reference, Lambda Expressions (Optional) Hog Dice Design
Due Tue 2/23

(Optional) Hog Contest
Due Tue 2/23
Fri
2/5
Design + Exceptions
(Optional) Exam Prep 02: Higher-Order Functions, Self Reference
(Optional) Lost 02: Higher-Order Functions, Self Reference, Environment Diagrams
HW 03: Recursion
Due Thu 2/11
4 Mon
2/8
Function Examples
Lab 03: Recursion, Tree Recursion
Due Tue 2/9
Wed
2/10
Containers
Disc 03: Recursion, Tree Recursion
Fri
2/12
Data Abstraction
(Optional) Exam Prep 03: Recursion, Tree Recursion
Lab 04: Midterm Review
Due Tue 2/16

(Optional) Lost 03: Recursion, Tree Recursion
5 Mon
2/15
No Lecture: Presidents' Day
Wed
2/17
Midterm 1 Cats
Due Fri 2/26
Fri
2/19
Trees
6 Mon
2/22
Mutable Values
Lab 05: Python Lists, Data Abstraction, Trees
Due Tue 2/23
Wed
2/24
List mutation + Identity + Nonlocal
Disc 05: Python Lists, Trees, Mutability
Fri
2/26
Iterators + Generators
(Optional) Exam Prep 04: Trees
(Optional) Lost 04: Python Lists, Data Abstraction, Trees
HW 04: Trees, Data Abstraction
Due Thu 3/4
7 Mon
3/1
Objects + Classes
Lab 06: Nonlocal, Mutability, Iterators and Generators
Due Tue 3/2
Wed
3/3
Inheritance + Composition
Disc 06: Object-Oriented Programming, Iterators and Generators Ants
Due Tue 3/16
Fri
3/5
Special Object Methods
(Optional) Exam Prep 05: Iterators and Generators
(Optional) Lost 05: Trees, Object-Oriented Programming
HW 05: Object-Oriented Programming, Linked Lists, Iterators and Generators
Due Thu 3/18
8 Mon
3/8
Recursive Objects
Lab 07: Object-Oriented Programming, Linked Lists, Mutable Trees
Due Tue 3/9
Wed
3/10
Complexity
Disc 07: String Representation, Efficiency, Linked Lists, Mutable Trees
Fri
3/12
Memoization
(Optional) Exam Prep 06: Object-Oriented Programming, Trees, Linked Lists
(Optional) Lost 06: Object-Oriented Programming, Linked Lists, Orders of Growth
9 Mon
3/15
Generics
Lab 08: Midterm Review
Due Tue 3/16
Wed
3/17
Fun with Iterables
Disc 08: Midterm Review
Fri
3/19
Midterm 2
10 Mon
3/22
No Lecture: Spring Recess
Wed
3/24
No Lecture: Spring Recess
Fri
3/26
No Lecture: Spring Recess
11 Mon
3/29
Scheme
Lab 10: Scheme
Due Tue 3/30
HW 06: Scheme
Due Thu 4/1
Wed
3/31
Scheme Examples
Disc 10: Scheme, Scheme Lists
Fri
4/2
Calculator
(Optional) Exam Prep 07: Scheme
(Optional) Lost 07: Scheme
HW 07: Scheme, Scheme Lists
Due Thu 4/8
12 Mon
4/5
Interpreters
Lab 11: Interpreters
Due Tue 4/6
Wed
4/7
Undecidability
Disc 11: Interpreters
Scheme
Due Tue 4/20

Scheme Challenge Version
Due Tue 4/20
Fri
4/9
Macros
(Optional) Exam Prep 08: Scheme HW 08: Tail Recursion, Interpreters, Scheme
Due Thu 4/15
13 Mon
4/12
Declarative Programming
Lab 12: Tail Recursion, Scheme
Due Tue 4/13
Wed
4/14
Regular Expressions
(Optional) Scheme Contest
Due Wed 4/28
Fri
4/16
BNF (Backus–Naur form)
HW 09: Regular Expressions, BNF
Due Thu 4/22
14 Mon
4/19
TBD
Lab 13: Regular Expressions, BNF
Due Tue 4/20
Wed
4/21
TBD
Fri
4/23
Final Examples
HW 10: Finale
Due Thu 4/29
15 Mon
4/26
Conclusion
Lab 14: Final Review
Due Tue 4/27
Wed
4/28
TBD
Fri
4/30
TBD
16 Tue
5/11
Final (11:30-2:30 PM)