CS 61B Spring 2024

Instructors: Justin Yokota, Peyrin Kao /Lecture: 1-2PM MWF, Dwinelle 155, Zoom

Weekly Schedule

Wk.DateLecture
(Zoom)
ReadingsDiscussion
LabHomeworkProject
1 Survey
Wed
Jan 17
1. Intro
[Intro Video 2D Reflections on Java ]
[1a Welcome to 61B Spring 2023]
[1b 61B Logistics]
[1C Phase 1 Overview]
[2A Hello World]
[2B Static Typing]
[2C Declaring Functions]
[Recording]
[Pacing 3a Compilation]
[3b IntelliJ Demo]
[3c HW0A Due Friday]
[Pacing Points- Lecture 1]
[Slides-Lecture 1]
[Ch 1.1]
[Ch 1.2]
[Ch 1.3]
[Ch 1.4]
No Discussion[Lab 1: Setup ]
[lab01-tip-Terminal]
[lab01-tip-windows]
[Pacing Points-Lecture 2 - Defining and Using Classes]
(due 1/19)
Slides-Lecture 2 - Defining and Using Classes [pdf]
[pptx]
[[Spring 2024] Lab 1.pdf]
[[Spring 2024] Lab 1.pptx]
Homework 0A
(due 1/19)
Fri
Jan 19
2. Defining and Using Classes
[Video]
[2a Defining and Instantiating Classes]
[2b Defining and Instantianing Classes]
[2c Terminology]
[2d Arrays of Objects]
[3a Static vs Instance Methods]
[3b Exercise]
[3c Exercise Solution]
[4a Managing Complexity LargerThanFourNeighbors]
[4b LargerThanFourNeighbors With No Helper Methods]
[4c LargerThanFourNeighbors With Helper Methods]
[Ch 2]Homework 0B
(due 1/22)
Project 0: 2048
(due 1/29)
2
Survey
Mon
Jan 22
3. Lists I: References, Recursion, and Lists
[Video]
[ 2023 Welcome]
[1 The Mystery of the Walrus]
[2 Primitive Types]
[3 Reference Types]
[4 Parameter Passing]
[5 Test Your Understanding of the GRoE]
[6 Instantiating Arrays]
[7 Introducing IntLists]
[8 IntList size]
[9 IntList iterativeSize]
[Pacing]
[Slides]
[Ch 3]1. Introduction to Java

[Lab 2: Debugging I[Spring 2024] Lab 2.pdf]
[[Spring 2024] Lab 2.pptx]
(due 1/26)
Slides [pdf]
[pptx]
Wed
Jan 24
4. Lists II: SLLists
[Video]
[1A Introducing the SLList]
[1B Introducing the SLList Bureaucracy]
[1C Introducing the SLList SLList Methods]
[2 Access Control and Nested Classes]
[3 addLast and size]
[4 Caching]
[5 The Empty List]
[6 Sentinel Nodes]
[7 Invariants]
[ Pacing]
[Ch 4]Homework 1
(due 1/26)
Fri
Jan 26
5. Lists III: DLLists and Arrays
[Video]
[1 Summary of SLLists So Far]
[2 Why a Last Pointer Isnt Enough]
[3 Doubly Linked Lists]
[4 Generic Lists]
[5 Array Overview]
[6 Basic Array Syntax]
[7 2D Arrays]
[8 Arrays vs Classes]
[Pacing]
[Ch 5]
[Ch 6]
3
Survey
Mon
Jan 29
6. Testing
[Video]
[01Lecture 6 Spring 2023 Testing]
[02Testing Bonus Video on Testing Philosohpy]
[Pacing]
[Slides-Lecture 6 - Testing.pdf]
[Slides-Lecture 6 - Testing.pptx]
[Ch 7]2. Scope, Static, Linked Lists, Arrays
[Lab 3: Debugging II]
[[Spring 2024] Lab 3.pdf]
[[Spring 2024] Lab 3.pptx]
(due 2/2)
Wed
Jan 31
7. Lists IV: Arrays and Lists
[Video]
[1 Why Array Lists]
[2 The Naive AList]
[3 The Allegory of the Cave]
[4 removeLast]
[5 Resizing Arrays]
[6 Resizing Implementation]
[7 Basic Resizing Analysis]
[8 Harder Resizing Analysis]
[9 Making AList Fast ]
[Pacing]
[Slides-Lecture 7 - Lists 4_ Arrays and Lists.pdf]
[Slides-Lists 4_ Arrays and Lists.pptx]
[Ch 8]Project 1A: LinkedListDeque61B
(due 2/5)
Fri
Feb 02
8. Inheritance I: Interface and Implementation Inheritance
[Video]
[1 The Desire for Generality ]
[2 Hypernyms and Hyponyms ]
[3 The Interface and Implements Keywords ]
[4 Overriding vs Overloading ]
[5 Interface Inheritance]
[6 Implementation Inheritance and Default Methods]
[ 7 Overriding Default Methods]
[8 Dynamic Method Selection]
[9 Warning About Changes to Dynamic Method Selection in 61B]
[Conclusion Is a vs Has a Interface vs Implementation Inheritances]
[Pacing]
[Slides-Lecture 8 - Inheritance 1_ Interface and Implementation Inheritance.pdf]
[Slides-Lecture 8 - Inheritance 1_ Interface and Implementation Inheritance.pptx]
[Ch 9]
4
Survey
Mon
Feb 05
9. Inheritance II: Extends, Casting, Higher Order Functions
[Video]
[1 Basic Use of Extends ]
[2 Extends with Overriding]
[3 A Boring Constructor Gotcha /4A The Object Class]
[4b javautilStack /5 Encapsulation]
[6 How Inheritance Breaks Encapsulation]
[7 Type Checking and Casting]
[8 Higher Order Functions in Java]
[Pacing]
[Slides-Lecture 9 - Inheritance 2_ Extends, Casting, Higher Order Functions.pdf]
[Slides-Lecture 9 - Inheritance 2_ Extends, Casting, Higher Order Functions.pptx]
[ch10.1]
[ch10.2]
[ch10.3]
[ch10.4]
[ch10.5]
[Ch 10]
3. Inheritance

Project 1 Workday


Wed
Feb 07
10. Inheritance III: Subtype Polymorphism, Comparators, Comparable
[Video]
[0 Dynamic Method Selection Puzzle optional ]
[1 Subtype Polymorphism]
[2 The Max Function]
[3 OurComparable Example]
[4 Compilation Quiz]
[5 Comparables]
[6 Comparator]
[Pacing]
[Slides-Lecture 10 - Inheritance 3_ Subtype Polymorphism, Comparators, Comparable.pdf]
[Slides-Lecture 10 - Inheritance 3_ Subtype Polymorphism, Comparators, Comparable.pptx]
[Ch 11.1]
[Ch 11.2]
[Ch 11.3]
[Ch 11.4]
[Ch 11.5]
[Ch 11.6]
[Ch 11]
Project 1B: ArrayDeque61B
(due 2/12)
Fri
Feb 09
11. Inheritance IV: Iterators, Object Methods
[Video]
[01CS61B 2023 Lec 12 ArraySet and Setting the Stage]
[Part 3 exceptions]
[Part 4 Iterable]
[Part 5 toString]
[Part 6 this equals]
[Part 7 Summary /Part 8 EXTRA fancier to String and the of static method ]
[Pacing]
[Slides-Lecture 11 - Inheritance 4_ Iterators, Object Methods.pdf]
[Slides-Lecture 11 - Inheritance 4_ Iterators, Object Methods.pptx]
[Ch 12.1]
[Ch 12.2]
[Ch 12.3]
[Ch 12.4]
[Ch 12.5]
[Ch 12.6]
5
Survey
Mon
Feb 12
12. Asymptotics I
[Video]
[1 Welcome to the Second Half of 61B]
[2 Characterization 1 Clock Time]
[3 Technique 2 Operation Counting]
[4 Technique 2 Operation Counting Exercise]
[5 Why Scaling Matters]
[6 Worst Case Orders of Growth]
[7 Simplified Analysis]
[8 Big Theta]
[9 Big O]
[10 Big Omega]
[Pacing]
[Slides-Lecture 12 - Asymptotics 1.pdf]
[Slides-Lecture 12 - Asymptotics 1.pptx]
[Ch 13.1]
[Ch 13.2]
[Ch 13.3]
[Ch 13.4]
[Ch 13.6]
[Ch 13.7]
[Ch 13.8]
[Ch 13.9]
[Ch 13.10]
4. Comparators, Iterators

[Lab 4: Git]
[[Spring 2024] Lab 4.pdf]
[[Spring 2024] Lab 4.pptx]
(due 2/20)
Slides
Wed
Feb 14
13. Ask Anything: Midterm 1
[Slides-Lecture 13 - Midterm 1 Q&A.pdf]
[Slides-Lecture 13 - Midterm 1 Q&A.pptx]
Project 1C: Deque61B Enhancements
(due 2/20)
Thu
Feb 15

Midterm 1 (7-9PM)


Fri
Feb 16
14. Disjoint Sets
[Video]
[1 Intro to Disjoint Sets]
[2 Quick Find]
[3 Quick Union]
[4 Weighted Quick Union]
[5 Weighted Quick Union with Path Compression and Summary]
[Pacing]
[Slides-Lecture 14 - Data Structures 1_ Disjoint Sets.pdf]
[Slides-Lecture 14 - Data Structures 1_ Disjoint Sets.pptx]
[Ch 14.1]
[Ch 14.2]
[Ch 14.3]
[Ch 14.4]
[Ch 14.5]
[Ch 14.6]
Homework 2
(due 2/26)
6
Survey
Mon
Feb 19

No Lecture (Academic Holiday)


5. Asymptotics, Disjoint Sets

[Lab 5: Disjoint Sets]
[[Spring 2024] Lab 5.pdf]
[[Spring 2024] Lab 5.pptx]
(due 2/26)
Wed
Feb 21
15. Asymptotics II
[Vidio]
[1 Simple Nested Loops in Big Theta]
[2 Nested For Loops with Geometric Outer Loop]
[3 There is No Magic Shortcut for these Problems]
[4 Tree Recursion]
[5 Binary Search Intuitive]
[6 Binary Search Exact]
[7 Merge Sort Prelude]
[8 Merge Sort]
[9 Summary]
[Pacing]
[Slides-Lecture 15 - Asymptotics 2.pdf]
[Slides-Lecture 15 - Asymptotics 2.pptx]
[Ch 15.1]
[Ch 15.2]
[Ch 15.3]
[Ch 15.4]
[Ch 15.5]
[Ch 15.6]
Project 2A: NGrams
(due 3/6)
Fri
Feb 23
16. ADTs, Sets, Maps, BSTs
[Vidio]
[1 ADTs and Maps]
[2 Inventing the BST]
[3 BST Definitions]
[4 BST Search]
[5 BST Insert]
[6 BST Deletion]
[7 Sets vs Maps Summary Tips for Lab]
[Pacing]
[Slides-Lecture 16 - Data Structures 2_ ADTs, BSTs.pdf]
[Slides-Lecture 16 - Data Structures 2_ ADTs, BSTs.pptx]
[Ch 16.1]
[Ch 16.2]
[Ch 16.3]
[Ch 16.4]
[Ch 16.5]
[Ch 16.6]
[Ch 16.7]
7
Survey
Mon
Feb 26
17. B-Trees (2-3, 2-3-4 Trees)
[Vidio]
[1 Tree Height Big O vs Worst Case]
[2 BST Performance]
[3 B Tree Basic Insertion]
[4 Splitting Non Leaf nodes Terminolgoy]
[5 Bushiness Invariants for B Trees]
[6 Runtime Analysis Summary]
[Pacing]
[Slides-Lecture 17 - Data Structures 3_ B-Trees.pdf]
[Slides-Lecture 17 - Data Structures 3_ B-Trees.pptx]
[Ch 17.1]
[Ch 17.2]
[Ch 17.3]
[Ch 17.4]
[Ch 17.5]
[Ch 17.6]
[Ch 17.7]
6. ADTs, Asymptotics II, BSTs
[Lab 6: BSTMap]
[[Spring 2024] Lab 6.pdf]
[[Spring 2024] Lab 6.pptx]
(due 3/01)
Wed
Feb 28
18. Red Black Trees
[Vidio]
[1 Intro Rotation]
[2 Balancing with Rotation]
[3 Red Black Tree Definition]
[4 Red Black Tree Properties]
[5 Red Black Tree Insertion]
[6 Red Black Tree Exercise Optional]
[7 Red Black Tree Exercise Solution Optional]
[8 Red Black Tree Performance and SummaryPacing]
[Slides-Lecture 18 - Data Structures 4_ Tree Rotation and Red-Black Trees.pdf ]
[Slides-Lecture 18 - Data Structures 4_ Tree Rotation and Red-Black Trees.pptx]
[Ch 18.1]
[Ch 18.2]
[Ch 18.3]
[Ch 18.4]
[Ch 18.5]
[Ch 18.6]
Fri
Mar 01
19. Hashing
[Vidio]
[Pacing]
[Slides-Lecture 19_ Hashing.pdf ]
[Slides-Lecture 19_ Hashing.pptx]
[Ch 19.1.1]
[Ch 19.1.2]
[Ch 19.1.3]
[Ch 19.1]
[Ch 19.2]
[Ch 19.3]
[Ch 19.4]
[Ch 19.5]
[Ch 19.6]
[Ch 19.7]
8
Survey
Mon
Mar 04
20. Hashing II
[Vidio]
[1 Hash Table Recap Default Hash Function]
[2 Distribution by Other Hash Functions and ChatGPT]
[3 Why Bother With Custom Hash Functions]
[4 HashSet Contains]
[5 Duplicate Items equals and hashcode]
[7 Dont Mutate Objects in a HashSet]
[8 A Peek Inside the Java HashSet]
[Pacing]
[Ch 20.1]
[Ch 20.2]
[Ch 20.3]
[Ch 20.4]
7. B-Trees, LLRBs, Hashing
[Slides-Lecture 20 - Hashing II.pdf]
[Slides-Lecture 20 - Hashing II.pptx]
[Lab 7: LLRBs]
[[Spring 2024] Lab 7.pdf]
[[Spring 2024] Lab 7.pptx]
(due 3/08)
Wed
Mar 06
21. Heaps and Priority Queues</br> [Vidio]
[1 Introducing the Priority Queue]
[2 Basic Use and Naive Implementations of the PQ]
[3 Introducing the Heap]
[4 Heap Operations]
[5 Tree Representations]
[6 PQ Implementation Considerations]
[7 Data Structures Summary]
[Pacing]
[Slides-Lecture 21 - Data Structures 5_ Priority Queues and Heaps.pdf]
[Slides-Lecture 21 - Data Structures 5_ Priority Queues and Heaps.pptx]
[Ch21.1]
[Ch21.2]
[Ch21.3]
[Ch21.4]
[Ch21.5]
Fri
Mar 08
22. Tree and Graph Traversals
[Vidio]
[1 Tree Traversals]
[2 Graph Definition]
[3 Graph Problems]
[4 s t Connectivity]
[5 DepthFirstPaths]
[6 Tree vs Graph Traversals]
[Pacing]
[Slides-Lecture 22 - Graphs 1_ Graphs and Traversals.pdf]
[Slides-Lecture 22 - Graphs 1_ Graphs and Traversals.pptx]
[Ch22.1]
[Ch22.2]
[Ch22.3]
[Ch22.4]
Project 2B/2C Checkpoint and Design Doc
(due 3/15)
9
Survey
Mon
Mar 11
23. Graph Traversals and Implementations
[Vidio]
[Pacing]
[Slides-Lecture 23 - Graphs 2_ DFS, BFS, Implementations.pdf ]
[Slides-Lecture 23 - Graphs 2_ DFS, BFS, Implementations.pptx]
[Ch23.1]
[Ch23.2]
[Ch23.3]
[Ch23.4]
8. Graphs, Heaps
[Lab 8: HashMaps]
[[Spring 2024] Lab 8.pdf]
[[Spring 2024] Lab 8.pptx]
(due 3/15)
Homework 3
(due 3/18)
Wed
Mar 13
24. Shortest Paths
[Vidio ]
[Pacing]
[Slides-Lecture 24 - Graphs 3_ Shortest Paths.pdf ]
[Slides-Lecture 24 - Graphs 3_ Shortest Paths.pptx]
[Ch24.1]
[Ch24.2]
[Ch24.3]
[Ch24.4]
[Ch24.5]
Fri
Mar 15
25. Minimum Spanning Trees
[Vidio]
[Pacing]
[Slides-Lecture 25 - Graphs 4_ Minimum Spanning Trees.pdf]
[Slides-Lecture 25 - Graphs 4_ Minimum Spanning Trees.pptx]
[Ch25.1]
[ch25.2]
[ch25.3]
[ch25.4]
[ch25.5]
10
Survey
Mon
Mar 18
26. Directed Acyclic Graphs
[Vidio]
[Pacing]
[Slides-Lecture 26 - Graphs 5_ Directed Acyclic Graphs.pdf]
[Slides-Lecture 26 - Graphs 5_ Directed Acyclic Graphs.pptx]
[Ch28.1]
[Ch28.2]
[Ch28.3]
[Ch28.4]
[Ch28.5]
9. Shortest Paths, MSTs

Project 2 Workday


Project 2B: Wordnet
Project 2C: Enhancements
(due 4/1)
Wed
Mar 20
27. Software Engineering I
[Vidio]
[Slides-Lecture 27 - Software Engineering I.pdf]
[Slides-Lecture 27 - Software Engineering I.pptx]
[Ch27.1]
[Ch27.2]
[Ch27.3]
[Ch27.4]
[Ch27.5]
Thu
Mar 21

Midterm 2 (7-9PM)


Fri
Mar 22
28. Prefix Operations and Tries
[Vidio]
[Pacing]
[Slides-Lecture 28 - Tries.pdf]
[Slides-Lecture 28 - Tries.pptx]
[Ch26.1]
[Ch26.2]
[Ch26.3]
[Ch26.4]
[Ch26.5]
11Mon
Mar 25

No Lecture (Spring Break)


No Discussion

No Lab


Wed
Mar 27
Fri
Mar 29
12
Survey
Mon
Apr 01
29. Sorting I: Selection Sort, Heapsort
[Vidio]
[Pacing]
[Slides- Lecture 29 - Sorting 1_ Basic Sorts.pdf ]
[Slides- Lecture 29 - Sorting 1_ Basic Sorts.pptx]
[Ch 29.1]
[Ch 29.2]
[Ch 29.3]
[Ch 29.4]
[Ch 29.5]
[Ch 29.6]
10. Graphs II, Tries

[Lab 9: Getting Started on Project 3]
[[Spring 2024] Lab 9.pdf]
[[Spring 2024] Lab 9.pptx]
(due 4/05)
Wed
Apr 03
30. Sorting II: Mergesort and Insertion Sort
[Vidio]
[Pacing]
[Slides- Lecture 30 - Sorting 2_ Mergesort, Insertion Sort, and Quicksort.pdf]
[Slides- Lecture 30 - Sorting 2_ Mergesort, Insertion Sort, and Quicksort.pptx]
[Ch 30.1]
[Ch 30.2]
[Ch 30.3]
[Ch 30.4]
[Ch 30.5]
Project 3A: World Generation
(due 4/15)
Fri
Apr 05
31. Software Engineering II
[Slides-Lecture 31 - Software Engineering II.pdf ]
[Slides-Lecture 31 - Software Engineering II.pptx]
[Ch 31.1]
[Ch 31.2]
[Ch 31.3]
[Ch 31.4]
[Ch 31.5]
13
Survey
Mon
Apr 08
32. Sorting III: Quicksort
[Vidio]
[Pacing]
[Slides-Lecture 32 - Sorting 3_ More Quicksort, Quick Select, Stability.pdf]
[Slides-Lecture 32 - Sorting 3_ More Quicksort, Quick Select, Stability.pptx]
[Ch 32.1]
[Ch 32.2 /Ch 32.3]
[Ch 32.4]
[Ch 32.5]
11. Sorting

[Lab 10: Tetris]
[[Spring 2024] Lab 10.pdf]
[[Spring 2024] Lab 10.pptx]
(due 4/12)
Wed
Apr 10
33. Sorting IV: Sorting and Algorithmic Bounds
[Vidio]
[1 Math Warmup]
[2 Simple Bounds for TUCS]
[3 Puppy Cat Dog]
[4 Puppy Cat Dog]
[Pacing]
[Slides-Lecture 34 - Sorting 4_ Theoretical Bounds on Sorting.pdf]
[Slides-Lecture 34 - Sorting 4_ Theoretical Bounds on Sorting.pptx]
[Ch 34.1]
[Ch 34.2]
[Ch 34.3]
[Ch 34.4]
[Ch 34.5]
Fri
Apr 12
34. Software Engineering III
[61B SP24] Lecture 34 - Software Engineering III.pdf
[61B SP24] Lecture 34 - Software Engineering III.pptx
[Ch 33.1]
[Ch 33.2]
[Ch 33.3]
[Ch 33.4]
[Ch 33.5]
14
Survey
Mon
Apr 15
35. Sorting V: More Quicksort, Radix Sorts
[Vidio]
[Pacing]
[Slides-Lecture 35 - Sorting 5_ Radix Sorts.pdf]
[Slides-Lecture 35 - Sorting 5_ Radix Sorts.pptx]
[Ch 35.1]
[Ch 35.2]
[Ch 35.3]
[Ch 35.4]
[Ch 35.5]
12. More Sorting

Project 3 Workday


Wed
Apr 17
36. Sorting VI: Radix vs. Comparison Sorting
[Vidio]
[1 Intuitive Analysis of Radix Sort vs Comparison Sort]
[2 Cost Model Analysis of Radix Sort vs Comparison Sort]
[3 Hypothesis that Merge Sort will be Slower]
[4 Running Our Empirical Analysis]
[5 The Just In Time Compiler]
[6 Rerunning Our Experiment with the JIT Disabled]
[7 Radix Sorting Integers]
[8 Sorting Summary]
[Pacing]
[Slides-Lecture 36 - Sorting 6_ Radix vs. Comparison Sorting.pdf]
[Slides-Lecture 36 - Sorting 6_ Radix vs. Comparison Sorting.pptx]
[Ch 36.1]
[Ch 36.2]
[Ch 36.3]
[Ch 36.4]
[Ch 36.5]
Project 3B/C: Interactivity + Ambition
(due 4/22)
Fri
Apr 19
37. Software Engineering IV
[Slides-Lecture 37 - Software Engineering IV.pdf ]
[Slides-Lecture 37 - Software Engineering IV.pptx]
[Ch 37.1]
15
Survey
Mon
Apr 22
38. Compression
[Vidio]
[1]
[2 codes morse code]
[3 prefix free codes]
[4 shannon fano codes]
[5 huffman coding]
[6 data structures for huffman coding]
[7 huffman encoding demo]
[8 huffman encoding demo]
[9 proof that universal compression is impossible an alternate model for compression]
[10 HugPlant]
[Slides- Lecture 38 - Compression.pdf]
[Slides- Lecture 38 - Compression.pptx ]
[Pacing]
[Ch 38.1]
[Ch 38.2]
[Ch 38.3]
[Ch 38.4]
[Ch 38.5]
[Ch 38.6]
[Ch 38.7]
[Ch 38.8]
13. Goodbye, FunProject 3 Checkoffs
Wed
Apr 24
39. Complexity and P=NP?
[Vidio]
[1 model 2 compression re explained]
[2 compressing the hugplant]
[3 kolmogorov complexity]
[4 space and time bounded compression]
[5 does P NP]
[6 almost like gods]
[7 short but not comprehensible fractal sound]
[Slides- Lecture 39 - Computability.pdf]
[Slides- Lecture 39 - Computability.pptx]
[Ch 39.1]
[Ch 39.2]
[Ch 39.3]
[Ch 39.4]
[Ch 39.5]
Homework 4
(due 4/28, extendable to 5/3)
Fri
Apr 26
40. Summary, Fun
16Mon
Apr 29

No Lecture (RRR Week)


No Discussion

No Lab


Wed
May 01
Fri
May 03
17Tue
May 07

Final Exam (May 7th, 8-11AM)