This schedule is subject to change. Any change will be announced in class and on the course web page.

Week Topic, Readings CloudCoder Exercises
Week 1 (May 19–23) Lecture 1: Introduction, Primitive Java, 1.1–1.6
Lecture 2: Objects/References, Constructors, JUnit, 2.1–2.3, 3.1–3.9
Lecture 3: Arrays, 2.4
Week 2 (May 26–30) Lecture 4: File I/O, Exceptions, 2.5–2.6
Lecture 5: Exceptions, 2.5
Lecture 6: GUIs
Week 3 (June 2–6) Lecture 7: Inheritance, 4.1–4.2
Lecture 8: ArrayList, Inheritance (continued), 4.3–4.4
Lecture 9: Type casts, instanceof, Object class, Interfaces
Week 4 (June 9–13) Lecture 10: Generic methods and classes, 4.5-4.7
Lecture 11: Generic methods, functors, 4.8
Week 5 (June 16–20) Lecture 12: Analysis of Algorithms, 5.1-5.3
Lecture 12a: Code Comments
Lecture 13: Big-O, 5.4-5.8
Week 6 (June 23–27) Lecture 14: Collections, Iterators, 6.1-6.3
Lecture 15: Generic Algorithms, 6.4
Exam 1
Week 7 (June 30–July 4)
Week 8 (July 7–11) Lecture 16: Lists, 6.5
Lecture 17: Parallel Programming with Threads
Week 9 (July 14–18) Lecture 18: Stacks and Queues, 6.6
Lecture 19: Sets and Maps, 6.7-6.8
Week 10 (July 21–25) Lecture 20: Recursion, 7.1, 7.3
Lecture 21: Proof by Induction, 7.2
Week 11 (July 28–Aug 1) Lecture 22: Memoization and Dynamic Programming, 7.6
Lecture 23: Insertion and Shell Sorts, 8.1-8.3
Week 12 (Aug 4–8) Lecture 24: Merge and Quick Sort, 8.5-8.6
Lecture 25: Singly and Doubly-Linked Lists, 17.1-17.3
Week 13 (Aug 11–15) Exam 2
Final Exam