logo Object-Oriented Programming and Data Structures


Schedule

Day Date Lecture Work due
Tue June 20 Lecture 1: Overview, structured programming, Java syntax, types
Reading: Transition to Java, slides,code, (more)
Assignment 1 [released]
Wed June 21 Mini-Lecture 2, Discussion 1: Integrated Development Environments (IDEs) And Types
handout, discussion code, slides, demo code
Discussion activity 1
Thu June 22 Lecture 3: Objects
Reading: Appendix B: Java Classes, Reference Semantics (more)
Abstraction, encapsulation
Reading: Prelude: Designing Classes—Encapsulation (more)
slides, demo code
Fri June 23 Lecture 4: Encapsulation cont, Specifications, testing, Scope, Arrays
Reading: Appendix A: Documentation and Programming Style (more), slides
Assignment 1 [due]
Assignment 2 [released]
Mon June 26 Lecture 5: Interfaces, subtyping
Inheritance, dynamic dispatch, equality
Reading: Appendix C: Creating Classes from Other Classes (more)
slides, demo code
Tue June 27 Test 1 Test 1
Wed June 28 Discussion 2: Arrays, Testing, Polymorphism and the Collections class in java
handout, discussion code
Discussion activity 2
Thu June 29 Lecture 6: Exceptions, Autoboxing, Bags, Generics
Reading: Java Interlude 2: Exceptions (more)
slides, demo code
Fri June 30 Lecture 7: Bags, Generics continued, linked dastructures
Reading:
Chapter 1: Bags;
Java Interlude 2: Generics
Chapter 2: Bag Implementations That Use Arrays;
(more)
Linked Structures
Reading: Chapter 3: A Bag Implementation That Links Data (more)
slides, demo code
Assignment 2 [due]
Assignment 3 [released]
Mon July 3 Lecture 8: Efficiency and Recursion
Reading:
Chapter 4: The Efficiency of Algorithms
Chapter 19: Searching
(more)
efficiency slides, recursion slides
Tue July 4 Holiday
Wed July 5 Discussion 3: Java ADTs, Efficiency
handout, discussion code
Discussion activity 3
Thu July 6 Lecture 9: Recursion
slides, demo code
Fri July 7 Lecture 10: Trees
slides, demo code
Assignment 3 [due]
Assignment 4 [released]
Mon July 10 Lecture 11: Loop Invariants, Searching, Sorting
slides, demo code
Tue July 11 Test 2
Wed July 12 Discusison 4: Invariants
handout, code
Discussion Activity
Thu July 13 Lecture 12: Searching and Sorting
slides, demo code
Fri July 14 Lecture 13: Introduction to Graphs
slides, demo code
Assignment 4 [due]
Assignment 5 [released]
Mon July 17 Lecture 14: Graph traversals
slides, demo code
Tue July 18 Shortest Paths, Priority Queues
slides
Wed July 19 Discussion 5: Work on A5 Discusison 5
Assignment 5 part 1 due as discussion
Thu July 20 Lecture 15: Finishing up Graphs
slides
Fri July 21 Lecture 16: Hash Tables
slides
Assignment 5 Checkpoint Due
Mon July 24 Lecture 17a: GUI and Concurrency
slides,demo code
Tue July 25 Test 3
Wed July 26 Discussion 6: Concurrency, Iterators and Hash Tables
handout, discussion code
Discussion activity 6
Thu July 27 Lecture 17b: Wrap Up Concurrency and Synchronization
slides,demo code
Fri July 28 Lecture 18: Design patterns and software engineering And The Java ecosystem [Last Lecture]
slides
Assignment 5 due
Mon July 31
Tue Aug 1 Final Exam