CS 61B Data Structures, Spring 2020
Instructor: Paul Hilfinger. Office hours Tu 3-4, Th. 4-5 on Zoom
Lecture: MWF 3-4PM, Wheeler 150. Online live lecture Zoom link.
If prompted for authentication, select "Sign In with SSO" to sign in with your @berkeley.edu email.
Announcements [Past Announcements]

Please also check our course Piazza for more announcements.

Date Category Announcement
5/9 Admin The final exam will be offered in a 24-hour period starting from Wednesday 5/13 4:00 p.m. PT until Thursday 5/14 4:00 p.m. PT. It will be online. You will have 3 hours to take the exam any time within that period. We will only be answering questions and supporting technical emergencies on 5/13 4-10 p.m. PT and 5/14 4-10 a.m. PT. Because the official time slot of our exam is 5/13 7-10PM, we encourage and expect the majority of students to be taking the exam some time in the Wednesday 4-10PM window. There will be no class-wide clarifications given.
4/1 Admin The MT2 Piazza is located here. If you are taking an alternate, you will be added before your exam time. Email cs61b@berkeley.edu if you are not in the Piazza.
3/30 Lectures Further lectures in this course will be Zoom meetings at https://berkeley.zoom.us/j/187065683.
3/20 Admin MT2 has been rescheduled to 4/1 5-7PM PT.
3/12 Projects Project 2 (Lines of Action) released! You can find a link to the spec in the calendar below. Due 4/6.
1/21 Lectures The first two lectures for this course (Wednesday and Friday) will be in Zellerbach Auditorium. Subsequent lectures will be in Wheeler, as on the class schedule.
1/21 Lectures Because the class is bigger than Wheeler will hold, we do not require lecture attendance. Feel free to use the screencasts and posted slides (linked to from the website) instead. After the first few sessions, enough people will use these resources exclusively that there will be room in Wheeler for all who prefer to attend in person.
1/21 Admin Announcements from outside groups will be kept on Piazza in the outside_postings folder. You can narrow your view to this category using the tab on the folder bar at the top of the Piazza page.
1/21 Admin Tests will be as follows:
  • Test #1: Thursday, 27 February 2020
  • Test #2: Wednesday 1 April 2020
  • Final: Wednesday, 13 May 2020 4:00PM PT to Thursday 14 May 2020 4:00PM PT, any 3 hour slot within this timeframe.
1/21 Admin To join the Piazza page for CS 61B, head over to this this link.
1/21 Admin The Scores tab above will show you what you have submitted and any logs produced by the autograder.
Calendar
Legend: Live Lecture Zoom Link: click here at the usual lecture times (3PM). If prompted for authentication, select "Sign In with SSO" to sign in with your @berkeley.edu email.
Week Date Reading Lecture Discussion Lab Assignments/Exams
1 Mon 1/20 No classes No discussion section javac, java, git HW0: A Few Java Exercises
(due 1/31)
Wed 1/22 HFJ 1-26 Intro, Hello World Java
[slides]
Fri 1/24 AJR 1.1-1.9 A Little Programming
[slides][code]
2 Mon 1/27 HFJ 27-36. AJR Chapter 4 Values and Containers
[slides][code]
Intro to Java
[Solution]
IntelliJ and IntLists [HW0 due 1/31]
HW1: JUnit testing, basic syntax, and linked lists
(due 2/7)
Project 0: Signpost
(due 2/18)
Wed 1/29 Simple Pointer Manipulation
[slides][code]
Fri 1/31 HFJ 670 Arrays
[slides][code]
3 Mon 2/3 HFJ 50-62 Developing a Sort, Unit Testing
[slides][code]
Pointers
[Solution]

Tutoring

[Solution]
IntDLists and Debugging
(due 2/10)
[HW1 due 2/7]
HW2: Arrays and Lists of Lists
(due 2/14)
Wed 2/5 HFJ 73-87 Object-Based Programming
[slides][code]
Fri 2/7 HFJ 168-191, 236-265, 287-293 Object-oriented Mechanisms
[slides]
4 Mon 2/10 HFJ 200-229 Interfaces and Abstract Classes
[slides]
Objects
[Solution]

Exam Prep

[Solution]

Tutoring

[Solution]

Pointers, Arrays,
& OOP ETS
Project 0 Office Hours
(No lab assignment)
(Please click through for schedule)
[HW2 due 2/14]
HW3: OOP, Interfaces, and Inheritance
(due 2/21)
Wed 2/12 HFJ 73-87 Interfaces and Abstract Classes
[slides][code]
Fri 2/14 Examples: Comparable and Reader
[slides][code]
5 Mon 2/17 Presidents' Day Inheritance
[Solution]

Exam Prep

[Solution]

Tutoring

[Solution]

Inheritance & Typing ETS
OOP with Collections, Iterators, and Iterables
(due 2/21)
[Project 0 (Signpost) due 2/18]
[HW3 due 2/21]
Project 1: The Enigma
(due 3/12)
Wed 2/19 HFJ 228-229. 250-256, 316-348 Additional OOP Details, Exceptions
[slides]
Fri 2/21 HFJ 154-160, 587-593, 665-668 Packages, Access, Loose Ends
[slides]
6 Mon 2/24 AJR 6.3, 6.4, HFJ 274-310 Integers
[slides]
Test Review
[Solution]

Exam Prep

[Solution]

Tutoring

[Solution]
Unit Testing and Integration Testing for Enigma
(due 3/2)
HW4: Scanners and Patterns
(due 3/6)
Wed 2/26 DSIJ Chapter 1 Integers
Thur 2/27 Test #1, 8-10PM
Fri 2/28 Complexity
[slides]
7 Mon 3/2 DSIJ Chapters 2 and 3 Collections, Amortization
[slides]
Bits and Algorithmic Analysis
[Solution]

Exam Prep

[Solution]

Tutoring

[Solution]
Project 1 Office Hours
(No lab assignment)
(Please click through for schedule)
[HW4 due 3/6]
HW5: Bit Operations, Asymptotic Analysis
(due 3/18)
Wed 3/4 DSIJ Chapter 4 Sequences, Some Design Patterns
[slides][code]
Fri 3/6 Sequences (II)
8 Mon 3/9 DSIJ Chapter 5 Trees
[slides]
More Algorithmic Analysis
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
Asymptoptics & Bits ETS
Practical Asymptotic Analysis and TreeMaps
(due 3/18)
[Project 1 (Enigma) due 3/12]
HW6: BSTs, Ranges, and Hashing
(due 3/23)
Project 2: LOA
(due 4/6)
Project 2 milestone
(due 4/3)
Wed 3/11 DSIJ Chapter 6 Tree searching
[slides][code]
Fri 3/13 Game trees
[slides]
9 Mon 3/16 DSIJ 6.4, 6.5 Priority Queues, Range Queries (updated 3/23)
[slides]
Binary Trees
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
Heaps and Priority Queues
(due 3/23)
[HW5 due 3/18]
Wed 3/18 DSIJ Chapter 7 Hashing (updated 3/24)
[slides]
Fri 3/20 AJR Chapter 10 Generics
[slides]
10 3/23 Spring Break No discussion section
Trees ETS
[HW6 due 3/23]
3/25 Spring Break
3/27 Spring Break
11 Mon 3/30 DSIJ 8 Sorting (updated 4/3)
[slides]
Heaps and Hashing
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
No Lab Assignment [Project 2 milestone due 4/3]
HW7: Sorting
(due 4/10)
Wed 4/1 Review
Wed 4/1 Test #2, 5-7PM
Fri 4/3 Sorting (II) (updated 4/3)
[slides]
12 Mon 4/6 sorting demos Sorting (III) (updated 4/7)
[slides]
Sorting
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
Sorting ETS
Files and Persistence
(due 4/10)
[HW7 due 4/10]
[Project 2 due 4/6]
HW8: Red Black Trees
(due 4/17)
Project 3: Gitlet
(due 5/4)
Project 3 milestone
(due 4/28 11:59AM)
Wed 4/8 DSIJ 9
balanced-search demos
Balanced Search Structures
[slides]
Fri 4/10 Balanced Search Structures (II)
[slides]
13 Mon 4/13 DSIJ 11 Git Internals
[slides]
Balanced Search
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
Software Engineering and Design
(due 4/17)
[HW8 due 4/17]
HW9: Graphs
(due 4/24)
Wed 4/15 DSIJ 12 Graphs, Introduction, Traversals
[slides]
Fri 4/17 A* Search, Minimal spanning trees, Union-findUpdated 5/8)
[slides]
14 Mon 4/20 Pseudo-Random Sequences
[slides][code]
Graphs
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
Tutoring

[Solution]
[Video]
Union Find and MSTs
(due 4/24)
[HW9 due 4/24]
Wed 4/22 DSIJ 10, HFJ pp. 489-516 Dynamic Programming, Enumeration Types
[slides]
Fri 4/24 Threads, Garbage Collection
[slides]
15 Mon 4/27 Continued from Friday A* Search
[Solution]
[Video]
Exam Prep

[Solution]
[Video]
No lab assignment [Project 3 milestone due 4/27]
Wed 4/29 Compression
[slides]
Fri 5/1 Summary, Survey
[slides]
16 Mon 5/4 RRR week No discussion section No labs [Project 3 (Gitlet) due 5/4]
Mon 5/6 RRR week
Mon 5/8 RRR week

Discussion and Lab Schedule

All in-person discussions and labs have been canceled.

The online live discussion schedule is below with Zoom call links in each event's description.

There are no more lab sections. Feel free to attend office hours and lab parties instead.

Discussions: You can find schedules for small section tutoring here.

Office Hours & Misc. Events Schedule

All in-person OH have been canceled.