CS 2110: Object-Oriented Programming and Data Structures


Schedule

See the lectures page for a fine-grained list of chapter sections and online readings that contain core material for this course. See the recommended readings page for links to additional reference material associated with each lecture.

Day Date Lecture Discussion Work due
Tue Jan 24 Lecture 1: Overview, structured programming
Reading: Transition to Java (more)
slides
Discussion 1: Integrated Development Environments (IDEs)
handout, code, slides, solution
Wed Jan 25
Thu Jan 26 Lecture 2: Java syntax, types, objects
Reading: Appendix B: Java Classes (more)
slides
Fri Jan 27 Discussion activity 1
Mon Jan 30 Quiz 1
Tue Jan 31 Lecture 3: Abstraction, encapsulation
Reading: Prelude: Designing Classes—Encapsulation (more)
slides & code
Discussion 2: Object diagrams, arrays
handout, slides, solution
Syllabus quiz
Wed Feb 1 A1
Thu Feb 2 Lecture 4: Specifications, testing
Reading: Appendix A: Documentation and Programming Style (more)
slides
Fri Feb 3 Discussion activity 2
Mon Feb 6 Quiz 2, add deadline
Tue Feb 7 Lecture 5: Interfaces, subtyping
slides & code
Discussion 3: Designing and testing classes
handout, code, solution
Wed Feb 8
Thu Feb 9 Lecture 6: Inheritance, dynamic dispatch, equality
Reading: Appendix C: Creating Classes from Other Classes (more)
slides & code
Fri Feb 10 Discussion activity 3
Mon Feb 13 Quiz 3
Tue Feb 14 Lecture 7: Exceptions
Reading: Java Interlude 2: Exceptions (more)
slides
Discussion 4: Input/output
handout, slides, code, solution
Reading: Supplement 2: File Input and Output, Java I/O
Wed Feb 15
Thu Feb 16 Lecture 8: Bags, Generics
Reading:
Chapter 1: Bags;
Java Interlude 2: Generics;
Chapter 2: Bag Implementations That Use Arrays;
(more)
slides & code
A2
Fri Feb 17 Discussion activity 4
Mon Feb 20 Quiz 4
Tue Feb 21 Lecture 9: Linked Structures
Reading: Chapter 3: A Bag Implementation That Links Data (more)
slides & code
Discussion 5: Java collections
handout, slides, code, solution
Wed Feb 22
Thu Feb 23 Lecture 10: Ordered Collections
Reading:
Chapter 10: Lists;
Chapter 12: A List Implementation That Links Data
(more)
slides & code
Fri Feb 24 Discussion activity 5
Feb 25–28 February break
Wed Mar 1 (no discussion)
Thu Mar 2 Lecture 11: Efficiency
Reading:
Chapter 4: The Efficiency of Algorithms
Chapter 19: Searching
(more)
slides & code
Fri Mar 3
Mon Mar 6 A3, Quiz 5
Tue Mar 7 Lecture 12: Recursion
Reading: Chapter 9 (more)
slides & code
Discussion 6: prelim review
handout, slides (with TA solutions)
Wed Mar 8
Thu Mar 9 Lecture 13: Trees
Reading: Chapters 24–26 (more)
slides & code
Prelim 1
Fri Mar 10
Mon Mar 13 Quiz 6
Tue Mar 14 Snow Day Snow Day
Wed Mar 15
Thu Mar 16 Lecture 14A: Tree traversals
Reading: (same as lecture 13)
Lecture 14B: Loop Invariants, Searching
Reading: Program correctness, loop invariants,
linear search loop development, binary search loop development
(more)
slides & code
Fri Mar 17
Mon Mar 20 Quiz 7, drop deadline
Tue Mar 21 Lecture 15: Sorting
Reading: Chapters 15–16
slides & code
Discussion 7: Loop invariants
handout, solution code, solution
Wed Mar 22
Thu Mar 22 Lecture 16: Hash tables
slides & code
Reading: Chapters 20–23
Fri Mar 24 Discussion activity 7
Mon Mar 27 Quiz 8
Tue Mar 28 Lecture 17: Graphical User Interfaces (GUIs)
slides & code
Reading: none required (more)
Discussion 8: Hash tables
handout, code, solution code, solution
A4
Wed Mar 29
Thu Mar 30 Lecture 18: Event-driven programming
slides & code
Reading: none required (more)
Fri Mar 31 Discussion activity 8
Apr 1–9 Spring break
Mon Apr 10 Quiz 9 (optional)
Tue Apr 11 Lecture 19: Concurrency
slides & code
Discussion 9: Prelim review
handout, slides (with TA solutions)
Wed Apr 12
Thu Apr 13 Lecture 20: Synchronization
slides & code
Fri Apr 31 Discussion activity 9
Mon Apr 17 A5, Quiz 10
Tue Apr 18 Lecture 21: Graphs
Reading: Chapters 29–30 (more)
slides & code
Discussion 10: Synchronization
handout, code, solution code, solution
Wed Apr 19
Thu Apr 20 Lecture 22: Graph traversals
slides & code
Prelim 2
Fri Apr 21 Discussion activity 10
Mon Apr 24 Quiz 11
Tue Apr 25 Lecture 23: Shortest paths (Dijkstra’s algorithm)
slides & code
Discussion 11: Graph traversals
handout, code, solution code, solution
Wed Apr 26
Thu Apr 27 Lecture 24: Priority queues and heaps
slides & code
Fri Apr 28 Discussion activity 11
Mon May 1 Quiz 12
Tue May 2 Lecture 25: Design patterns and software engineering
slides & code
Discussion 12: Iterators
handout, solution code, solution
Wed May 3
Thu May 4 Course assessment
Fri May 5 Discussion activity 12
Mon May 8 Quiz 13
Tue May 9 Lecture 26: The Java ecosystem
slides & code
(no discussion) A6
Tue May 16 Final exam review session (4:30 PM, Gates G01)
slides (with TA solutions)
Thu May 18 Final exam