CS211 Lecture Notes

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