Schedule

Day Date Lecture Work due (6pm)
Mon June 24 Lecture 1: Overview, Structured programming, Java syntax, Types
[slides, code]
Tues June 25 Lecture 2: Types and Objects
[slides, code]

Discussion 1: Introductions and Debugging
[code]
Discussion activity 1
Weds June 26 Lecture 3: Abstraction, Encapsulation, Specifications
[slides, code]
Syllabus Quiz (Canvas)
Thurs June 27 Lecture 4: Specifications (cont), Testing
[slides, code]

Discussion 2: Object diagrams, Arrays
[code]
Discussion activity 2
Fri June 28 Lecture 5: Interfaces, Subtyping, Inheritance, Dynamic dispatch, Equality
[slides, code]
A1
Mon July 1 Lecture 6: Exceptions, I/O
[slides, activity code, demo and activity solution code]
A2 Partnerships
Tue July 2 Lecture 7: Bags, Generics
[slides, code]

Discussion 3: Designing and testing classes
[code]
Discussion activity 3
Wed July 3 Test 1
[study guide]

Lecture 8: Linked structures
[slides, code]
Thu July 4 Holiday
Fri July 5 Lecture 9: Ordered collections
[slides, code, preview code]
A2
Mon July 8 Lecture 10: Efficiency
[slides, experiment]
A3 partnerships
Tues July 9 Lecture 11: Recursion
[slides, code, preview code]

Discussion 4: Java Collections
[code]
Discussion 4
Weds July 10 Test 2
[study guide, additional practice problems]

Lecture 12: Trees I
[slides, code]
Thurs July 11 Lecture 13: Trees II, Set ADT, Comparables
[slides, code, preview code]

Discussion 5: Binary Search Trees
Discussion 5
Fri July 12 Lecture 14: Wrap up Recursion & Trees
[slides, code, preview code]
A4
Mon July 15 Lecture 15: Loop Invariants and Searching
[slides, code]
A4 Partnerships
Tues July 16 Lecture 16: Sorting
[slides, code, code (zipped)]

Discussion 6: Loop Invariants
[code]
Discussion 6
Weds July 17 Test 3
[study guide, additional practice problems]

Lecture 17: Intro to Graphs
[slides, code]
Thurs July 18 Lecture 18: Classic Graph Data Structures, Breadth-first Search
[slides, code, preview code, handout]
Fri July 19 Lecture 19: Depth-first Search, Shortest paths
[slides, code, preview code, handout]
A4
Mon July 22 Lecture 20: Shortest paths
[slides, code, preview code, handout]
A5 Partnerships
Tues July 23 Lecture 21: Priority Queues and Heaps
[slides, preview code]

Discussion 8: Heaps
Discussion 8
Weds July 24 Test 4
[study guide, additional practice problems]

Assignment 5 workshop
Thurs July 25 Lecture 22: Hash Maps
[slides, preview code, handout]

Discussion 9: Hash Maps
[code (same as preview code for lecture)]
Discussion 9
Fri July 26 Lecture 23: Graphical User Interfaces
[slides, code]
Mon July 29 Lecture 24: Event-driven programming
[slides, code, preview code]
Tues July 30 Lecture 25: Concurrency
[slides, code, preview code]
Weds July 31 Test 5
[study guide, additional practice problems]

Lecture 26: Synchronization
[slides, preview code]
Thurs Aug 1 Lecture 27: Synchronization (cont), Software engineering
[slides, handout, preview code]
Fri Aug 2 Lecture 28: The Java ecosystem
[slides]
A5
Tues Aug 6 Final exam
[study guide]