CS 61A: Structure and Interpretation of Computer Programs

Fall 2020
Instructors: Hany Farid, John DeNero

Monday, December 7
  • Homework 10 extended, due Sunday 12/13.

  • Final exam 3pm-6pm Thursday 12/17.

    • The final exam will have a similar format to Midterm 2: reverse environment diagrams and fill-in-the-blank code completion.
    • You do not necessarily need to take the final to pass; 175 points are required for a P or C- grade. Check howamidoing.
    • Textbook content: Sections 1.1-3.5 and 4.3 of Composing Programs, excluding 1.6.5, 2.3.7, 2.4.11-13, 2.6, 2.8, 2.9.3, 3.5.4, and 4.3.6.
    • Lecture content: All lectures not marked optional.
    • Proctoring details (and exemption requests) will be posted to Piazza during RRR week.
    • You can use any number of pages of scratch paper and notes that you create yourself.
    • If you want to store your notes electronically, you must use a Google Doc and give edit access to cs61a@berkeley.edu.
    • You can use cs61a.org, the 61A Piazza, code.cs61a.org, and tutor.cs61a.org.
    • You cannot use the rest of the internet. No search engines. No Q&A sites. No Reddit.
    • You cannot communicate or collaborate with anyone else.
  • Request an alternate exam time by Friday 12/11 if:

    • The exam would start between 8pm and 6am (inclusive),
    • You have 3 finals on the same day, or
    • You have another exam at the same time.
  • Staff, HKN, and CSM review sessions next week.
  • Orientation & Exam Prep recordings are stored here.
Friday, December 4
  • Final exam 3pm-6pm Thursday 12/17.

    • The final exam will have a similar format to Midterm 2: reverse environment diagrams and fill-in-the-blank code completion.
    • You do not necessarily need to take the final to pass; 175 points are required for a P or C- grade. Check howamidoing.
    • Textbook content: Sections 1.1-3.5 and 4.3 of Composing Programs, excluding 1.6.5, 2.3.7, 2.4.11-13, 2.6, 2.8, 2.9.3, 3.5.4, and 4.3.6.
    • Lecture content: All lectures not marked optional.
    • Proctoring details (and exemption requests) will be posted to Piazza during RRR week.
    • You can use any number of pages of scratch paper and notes that you create yourself.
    • If you want to store your notes electronically, you must use a Google Doc and give edit access to cs61a@berkeley.edu.
    • You can use cs61a.org, the 61A Piazza, code.cs61a.org, and tutor.cs61a.org.
    • You cannot use the rest of the internet. No search engines. No Q&A sites. No Reddit.
    • You cannot communicate or collaborate with anyone else.
  • Request an alternate exam time by Friday 12/11 if:

    • The exam would start between 8pm and 6am (inclusive),
    • You have 3 finals on the same day, or
    • You have another exam at the same time.
  • Ants composition revisions due Sunday 12/6.
  • Staff, HKN, and CSM review sessions next week.
  • Homework 10 due Friday 12/11.
  • Important links (the passcode for all Zoom webinars in this course is 61a):

Wednesday, December 2
Monday, November 30
Monday, November 23
Week 14 Class Material
  • Lecture 35: Tail Calls (optional)
  • Week 14 Readings:
  • Week 14 Resources
    Friday, November 20
    Wednesday, November 18
    Monday, November 16
    Friday, November 13
    • Homework 7 due Thursday 11/12 @ 11:59pm.
    • Lab 12 due Tuesday 11/17; solve a few SQL problems.

      • Do it Monday! Lab parties 3-4 and 7-8 Monday 11/16.
    • Homework 8 (shortened) due Thursday 11/19; practice Scheme expression manipulation.
    • Scheme project is due Tuesday 11/24.

      • Project party Tuesday 11/17 7-9pm.
      • Checkpoint 1: Tuesday 11/17.
      • Checkpoint 2: Friday 11/20.
      • Early submission bonus point for completing it by Monday 11/23.
    • Only 3 more required lectures in the whole course (including today's lecture).
    • Important links (the passcode for all Zoom webinars in this course is 61a):

    Monday, November 9
    Wednesday, November 4
    Monday, November 2
    Friday, October 30
    Wednesday, October 28
    • Wednesday 10/28:

      • Instructor office hours were recorded here.
      • No discussion, no tutorials, no lecture.
      • No staff office hours Wednesday through Friday.
    • Friday 10/30:

      • No instructor office hours.
      • Instructor ask-us-anything 2:10-3pm (not recorded).
      • No exam prep section.
    • Midterm 2 Prep

    • Midterm 2 Wednesday 10/28 @ 7pm PT.

      • Textbook content: Sections 1.1 through 2.9 of Composing Programs, excluding 1.6.5, 2.3.7, 2.4.11-13, 2.6, 2.8, and 2.9.3.
      • Lecture content: Through Composition (10/16), excluding Binary Numbers (9/28) and Circuits (9/30).
      • Proctoring: You will record your screen and your head using Zoom or another recording technology (such as a phone).
      • You can use any number of pages of scratch paper and notes that you create yourself.
      • If you want to store your notes electronically, you must use a Google Doc and give edit access to cs61a@berkeley.edu.
      • You can use cs61a.org, the 61A Piazza, code.cs61a.org, and tutor.cs61a.org.
      • You cannot use the rest of the internet. No search engines. No Q&A sites. No Reddit.
      • You cannot communicate or collaborate with anyone else.
    • Important links (the passcode for all Zoom webinars in this course is 61a):

    Monday, October 26
    Friday, October 23
    • Ants due Friday 10/23.

      • Earn an early submission bonus point for submitting by Thursday 10/22.
    • Homework 5 due Monday 10/26.

      • The only required part of Lab 9 on 10/26 will be to finish Homework 5.
      • There will still be a lab orientation about the optional Lab 9 questions.
    • Midterm 2 Prep

    • Midterm 2 Wednesday 10/28 @ 7pm PT.

      • Textbook content: Sections 1.1 through 2.9 of Composing Programs, excluding 1.6.5, 2.3.7, 2.4.11-13, 2.6, 2.8, and 2.9.3.
      • Lecture content: Through Composition (10/16), excluding Binary Numbers (9/28) and Circuits (9/30).
      • Proctoring: You will record your screen and your head using Zoom, Loom, or another recording technology of your choosing (such as a phone). You may use Zoom web recording if you prefer it to Loom.
      • Alternate times & conflicts: Fill out this alternate time request form by Sunday 10/25 @ 11:59 PT.
      • You can use the Midterm 1 Study Guide and Midterm 2 Study Guide.
      • You can use any number of pages of scratch paper and notes that you create yourself.
      • If you want to store your notes electronically, you must use a Google Doc and give edit access to cs61a@berkeley.edu.
      • You can use cs61a.org, the 61A Piazza, code.cs61a.org, and tutor.cs61a.org.
      • You cannot use the rest of the internet. No search engines. No Q&A sites. No Reddit.
      • You cannot communicate or collaborate with anyone else.
      • You can request an exemption from the proctoring policy, due Sunday 10/25. (If you filled this out for Midterm 1, you do not need to fill it out again.)
    • Important links (the passcode for all Zoom webinars in this course is 61a):

    Wednesday, October 21
    Monday, October 19
    Friday, October 16
    Wednesday, October 14
    Monday, October 12
    Friday, October 9
    Wednesday, October 7
    Monday, October 5
    Friday, October 2
    Wednesday, September 30
    Monday, September 28
    Wednesday, September 23
    Monday, September 21
    Friday, September 18
    Wednesday, September 16
    Monday, September 14
    • Midterm 1 is Monday 9/14 7pm-9pm.

    • No lab this week
    • No lecture today
    • CSM section sign-ups open 6:00pm Sunday 9/13.
    • The completely optional Hog Strategy Contest will end Monday 9/21 @ 11:59pm.

      • Create any final_strategy you want that is a deterministic function of the player scores.
      • One new rule: On all extra turns, roll 8-sided dice.
    Friday, September 11
    Wednesday, September 9
    Friday, September 4
    Wednesday, September 2
    Monday, August 31
    Friday, August 28
    • Instructor "Ask Us Anything" session 2:10pm-3:00pm Friday 8/28.
    • Lab 0 is posted, due Monday 8/31 @ 11:59pm PT.

      • Office hours for lab 0: 6pm-8pm Thursday 8/27 and 12pm-2pm Friday 8/28.
    • Lab 1 will be posted Monday 8/31 and is due the same day.

      • Lab orientations will be held at 2pm, 6pm, and 9pm Monday 8/31.
      • Lab orientations for students without much prior programming experience will be held at 2pm and 7pm Monday 8/31.
      • Pick any lab orientation you want; you don't need to attend more than one.
      • Opportunities to collaborate with other students will be described in the orientation.
      • Links to Lab orientations will appear below once they are set up.
    • Homework 1 will be posted Friday 8/28 (probably at night) and is due Thursday 9/3 @ 11:59pm PT.
    • Important links:

    Wednesday, August 26
    Monday, August 24
    Week Date Lecture Textbook Orientation Links Lab and Discussion Links Homework & Project
    1 Wed
    8/26
    Computer Science
    Lab 00: Getting Started
    Tue 9/1
    Fri
    8/28
    Functions
    HW 01: Variables & Functions, Control
    Thu 9/3
    2 Mon
    8/31
    Control
    Lab 01: Variables & Functions, Control
    Tue 9/1
    Wed
    9/2
    Higher-Order Functions
    Disc 01: Environment Diagrams, Control
    Hog
    Fri 9/11
    Fri
    9/4
    Environments
    Lab 02: Higher-Order Functions, Lambda Expressions
    Tue 9/8
    3 Mon
    9/7
    No Lecture: Labor Day
    Wed
    9/9
    Design
    Disc 02: Higher-Order Functions, Self Reference
    Fri
    9/11
    Function Examples
    4 Mon
    9/14
    Midterm 1
    Wed
    9/16
    Recursion
    Disc 03: Recursion
    Hog Contest
    Mon 9/21
    Fri
    9/18
    Tree Recursion
    HW 02: Recursion
    Thu 9/24
    5 Mon
    9/21
    Containers
    Lab 04: Recursion, Tree Recursion, Python Lists
    Tue 9/22
    Wed
    9/23
    Data Abstraction
    Disc 04: Tree Recursion, Python Lists, Data Abstraction
    Cats
    Fri 10/2
    Fri
    9/25
    Trees
    6 Mon
    9/28
    Binary Numbers (optional)
    Lab 05: Data Abstraction, Trees
    Tue 9/29
    Wed
    9/30
    Circuits (optional)
    Disc 05: Trees, Binary Numbers
    Fri
    10/2
    Mutable Values
    HW 03: Trees, Data Abstraction
    Thu 10/8
    7 Mon
    10/5
    Mutable Functions
    Lab 06: Nonlocal, Mutability
    Tue 10/6
    Wed
    10/7
    Iterators
    Disc 06: Nonlocal, Mutability, Iterators
    Fri
    10/9
    Objects
    HW 04: Nonlocal, Iterators
    Thu 10/15
    8 Mon
    10/12
    Inheritance
    Lab 07: Object-Oriented Programming, Iterators
    Tue 10/13
    Ants
    Fri 10/23
    Wed
    10/14
    Representation
    Disc 07: Object-Oriented Programming
    Fri
    10/16
    Composition
    HW 05: Object-Oriented Programming, Linked Lists, Trees
    Mon 10/26
    9 Mon
    10/19
    Efficiency (optional)
    Lab 08: Linked Lists, Mutable Trees
    Tue 10/20
    Wed
    10/21
    Decomposition
    Disc 08: Linked Lists, Trees, Representation
    Fri
    10/23
    Data Examples
    Sat
    10/24
    Lab 09: Midterm Review
    Tue 10/27
    10 Mon
    10/26
    Users (optional)
    Wed
    10/28
    Midterm 2
    Fri
    10/30
    Ethical AI & Data (optional)
    11 Mon
    11/2
    Scheme
    Lab 10: Scheme
    Wed 11/4
    HW 06: Scheme
    Thu 11/5
    Wed
    11/4
    Exceptions
    Disc 10: Scheme, Scheme Lists
    Fri
    11/6
    Calculator
    HW 07: Scheme Lists
    Thu 11/12
    12 Mon
    11/9
    Interpreters
    Lab 11: Interpreters
    Tue 11/10
    Scheme
    Tue 11/24

    Scheme Challenge Version
    Tue 11/24
    Wed
    11/11
    No Lecture: Veterans Day Disc 11: Interpreters
    Fri
    11/13
    Declarative Programming
    HW 08: Scheme
    Thu 11/19
    13 Mon
    11/16
    Tables
    Lab 12: SQL
    Tue 11/17
    Scheme Contest
    Mon 11/30
    Wed
    11/18
    Aggregation
    Disc 12: SQL
    Fri
    11/20
    Databases (optional)
    HW 09: SQL
    Thu 12/3
    14 Mon
    11/23
    Tail Calls (optional)
    Lab 13: More SQL
    Tue 11/24
    Wed
    11/25
    No Lecture: Thanksgiving
    Fri
    11/27
    No Lecture: Thanksgiving
    15 Mon
    11/30
    Macros (optional)
    Lab 14: Final Review
    Tue 12/1
    Wed
    12/2
    Final Examples
    Disc 14: Final Review
    Fri
    12/4
    Conclusion
    HW 10: Finale
    Sun 12/13

    Scheme Gallery
    Sun 12/13
    16 Thu
    12/17
    Final (3-6 PM)