This page lists the schedule for the course. Please note that the schedule may change: any changes will be announced in class and listed here (on the course website).

Important: Do the readings in advance. The clicker quizzes will test material from the readings.

Date Topics/Readings
Aug 27 Lecture 1: Introduction, Primitive Java, 1.1–1.6
Aug 29 Lecture 2: Objects/References, Constructors, JUnit, 2.1–2.3, 3.1–3.9
Sep 3 Lecture 3: Arrays, 2.4
Sep 5 Lecture 4: File I/O, Exceptions, 2.5–2.6
Sep 10 Lecture 5: Exceptions, 2.5
Sep 12 Lecture 6: GUIs
Sep 17 Lecture 7: Inheritance, 4.1–4.2
Sep 19 Lecture 8: ArrayList, Inheritance (continued), 4.3–4.4
Sep 24 Lecture 9: Type casts, instanceof, Object class, Interfaces
Sep 26 Lecture 10: Generic methods and classes, 4.5-4.7
Oct 1 Lecture 11: Generic methods, functors, 4.8
Oct 3 Exam 1
Oct 8 Lecture 12: Analysis of Algorithms, 5.1-5.3
Lecture 12a: Code Comments
Oct 10 Lecture 13: Analysis of Algorithms, Big-O, 5.4-5.8
Oct 15 Lecture 14: Collections, Iterators, 6.1-6.3
Oct 17 Lecture 15: Generic Algorithms, 6.4
Oct 22 Lecture 16: Lists, 6.5
Oct 24 Lecture 17: Parallel Programming with Threads
Oct 29 Lecture 18: Stacks and Queues, 6.6
Oct 31 Lecture 19: Sets and Maps, 6.7-6.8
Nov 5 Lecture 20: Recursion, 7.1, 7.3
Nov 7 Lecture 21: Proof by Induction, 7.2
Nov 12 Lecture 22: Memoization and Dynamic Programming, 7.6
Nov 14 Work day (on your own): Advanced recursion lab
Nov 19 Exam 2
Nov 21 Lecture 23: Insertion and Shell Sorts, 8.1-8.3
Dec 3 Lecture 24: Merge and Quick Sort, 8.5-8.6
Dec 5 Exam 2 Programming Do-Over