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

Extremely important: We expect you to do the reading before you come to class! Most class meetings will begin with a quiz on the day's topic, so you need to do the reading in advance to be fully prepared.

 

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