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
[preview slides, preview code, handout]
A4
Mon July 22 Lecture 20: Shortest paths (cont), Priority Queues and Heaps A5 Partnerships
Tues July 23 Lecture 21: Hash maps

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

Lecture 22: Graphical User Interfaces
Thurs July 25 Lecture 23: GUIs (cont)

Discussion 9: Hash Maps
Discussion 9
Fri July 26 Lecture 24: Event-driven programming
Mon July 29 Lecture 25: Concurrency
Tues July 30 Lecture 26: Synchronization

Discussion 10: Shared buffers
Discussion 10
Weds July 31 Test 5

Lecture 27: Synchronization (cont)
Thurs Aug 1 Lecture 28: Software engineering

Discussion 11: GUIs
Discussion 11
Fri Aug 2 Lecture 29: The Java ecosystem A5