The lecture notes posted here are from previous semesters. My lectures may be slightly different.
Week | Date | Lecture | Topics | Examples/notes | Reading |
---|---|---|---|---|---|
1 | June 26 | Introduction |
Course policy and procedures, Course overview, Primitive and reference types, Arrays, Memory |
Java Overview | Weiss Ch. 1-3 |
June 27 | Linked Lists |
Recursive data types, Linked lists, List traversal and manipulation |
Lists and Trees More Lists and Trees |
Weiss Ch. 6.5 and Ch. 17 | |
June 28 | Recursion and Induction |
Recursive functions, Tracing recursive calls, Induction, Strong induction |
Recursion Induction Hanoi-Recursive.java |
Weiss Ch. 7.1-7.4 | |
June 29 | Strong Induction |
Strong induction, Binary/linear search, Proving correctness |
Induction Proving Binary Search |
Weiss Ch. 18 | |
June 30 | Week 1 Recitation |
Introduction Assignment 1 Lists Recursion Induction |
|||
2 |
July 3 July 4 |
Happy Holiday! |
Independence Fireworks Barbeque |
The Declaration | |
July 5 | Trees |
Doubly Linked Lists Tree Definitions General Structure Binary Trees Abstract Syntax Trees Traversal |
Lists & Trees More Lists & Trees |
Weiss Ch. 18 | |
July 6 | Grammars and Parsing |
Grammars, Parsing, Expressions |
Parsing Grammars |
Weiss Ch. 11 | |
July 7 | Exceptions and Interfaces |
Exception basics Contracts Interface Rules Implementing an Interface interface Comparable Collections Generic Programming |
Exceptions | Java Collections API | |
3 | July 10 | Programming Advice |
Process Separation of Concerns Abstraction Documentation Debugging |
Design Advice | |
July 11 | Object-Oriented Programming |
Inheritance More on Types Overloading, Shadowing Static vs. Dynamic dispatch Access protection |
Inheritance | Weiss Sec. 4.1, 4.2, 4.4 | |
July 12 | More OOP |
The Object hierarchy The Exception hierarchy | Exceptions | Weiss Ch. 4 | |
July 13 | Breaking the type system |
Casting instanceof Visitor Pattern Generics |
Generics | Weiss Ch. 4 | |
July 14 | Week 2-3 recitation |
Last-minute project help Trees Parsing OOP Design and Patterns |
|||
4 | July 17 | GUI Statics |
Batch-job vs. event driven Overview of JFC facilities Swing Components |
GUI Statics | Weiss Ap. B.3-B.3.1 |
July 18 | GUI Dynamics |
Events Listeners and Adapters Inner classes |
GUI Dynamics | Weiss Ap. B3 | |
July 19 | Design Patterns |
What are Design Patterns? Visitor Iterator Composite Observer |
Design patterns Java companion | ||
July 20 | Asymptotic Complexity |
Running time Big-O notation Analysis of searching |
Big-O and Searching | Weiss Ch. 5 | |
July 21 | Prelim | Everything through GUI statics | Prelim Solutions | ||
5 | July 24 | Prelim review | Prelim solutions | ||
July 25 | Sorting |
Slightly more on binary search Insertion sort Quicksort | Sorting | Weiss Ch. 8.1-8.3, 8.6 | |
July 26 | Heaps |
Priority Queues Heapsort Heap analysis |
Weiss Ch. 21.1-21.5 | ||
July 27 | Sorting Odds & Ends Balanced Search Trees |
Heap implementation Other kinds of sorts Balanced search trees AVL trees Red-black trees |
Sorting AVL Trees |
Weiss Ch. 8.5, 19.4 | |
July 28 | Week 3-4 recitation |
Big-O analysis Data structures and algorithms Lingering prelim questions A4 questions |
|||
6 | July 31 | Hashtables |
Hash functions Hashtables Open and closed chaining Dynamically sized arrays |
Hash tables | Weiss Ch. 20.1, 20.2, 220.5-7 |
August 1 | Graphs |
Graph definitions Graph applications Adjacency lists Adjacency matrices Depth-first and Breadth-first search |
Graphs and Graph Algorithms More Graph Algorithms |
Weiss Ch. 14.1-14.2 | |
August 2 | More graphs |
Dijkstra's Algorithm Floyd-Warhall's Algorithm Recursive DFS Topological Sort |
Graphs and Graph Algorithms More Graph Algorithms |
Weiss Ch. 14.3, 14.5 | |
August 3 | Course Wrap-up |
Where to go from here Different programming languages What I do |
|||
August 4 | Final section |
Hashtables Graphs Final review A5 help |
|||
7 | August 8 | Final exam | Everything |