Lecture 1: Data Definitions in Java |
Lecture 2: Data Definitions: Unions |
Lecture 3: Methods for simple classes |
Lecture 4: Methods for unions |
Lecture 5: Methods for self-referential lists |
Lecture 6: Accumulator methods |
Lecture 7: Accumulator methods, continued |
Lecture 8: Practice Design |
Lecture 9: Abstract classes and inheritance |
Lecture 10: Customizing constructors for correctness and convenience |
Lecture 11: Defining sameness for complex data, part 1 |
Lecture 12: Defining sameness for complex data, part 2 |
Lecture 13: Abstracting over behavior |
Lecture 14: Abstractions over more than one argument |
Lecture 15: Abstracting over types |
Lecture 16: Visitors |
Lecture 17: Mutation |
Lecture 18: Mutation inside structures |
Lecture 19: Mutation, aliasing and testing |
Lecture 20: Mutable data structures |
Lecture 21: ArrayLists |
Lecture 22: ArrayLists |
Lecture 23: For-each loops and Counted-for loops |
Lecture 24: While loops |
Lecture 25: Iterator and Iterable |
Lecture 26: Hashing and Equality |
Lecture 27: Introduction to Big-O Analysis |
Lecture 28: Quicksort and Mergesort |
Lecture 29: Priority Queues and Heapsort |
Lecture 30: Breadth-first search and Depth-first search on graphs |
Lecture 34: Implementing Objects |