CS211 Lecture Notes

Unless otherwise indicated, Reading refers to the course text: Data Structures and Problem Solving Using Java (3/E), Addison Wesley, ISBN: 0-321-32213-4, 2006. See also Weiss's website for additional material.

Lecture Date Topics Examples/notes Reading Lecturer
Course review 5/4 Course review and thoughts about CS     ACM
Design Patterns 5/2 Design patterns vs. language features
Refactoring
Iterator, Bridge
Factory, Singleton
Adapter, Proxy
Observer
  Design Patterns: Java Companion ACM
More Graph Algorithms 4/27 Depth-first search
Cycle detection
Topological sort
Connected components
Notes 14.3-5 ACM
Principles of UI design 4/25 What makes a good UI?
UI as a dialogue
UI as a place
Visual design
Common design errors
Slides Foley and Van Dam, Computer Graphics, 8.2-3, 9
Cooper and Reimann, About Face 2.0
Tufte, Envisioning Information
ACM
GUIs and event-driven programming 4/20 Events
Listeners
Adapters
Painting
Slides
Notes on state machines
Examples: scribble, npuzzle, ...
Appendix B
Swing Tutorial
Writing Event Listeners Painting in AWT and Swing
ACM
GUI Statics 4/18 Components
Containers
Layout managers
Slides
Examples: Basic1, LayoutDemo, ...
Appendix B
Swing Tutorial
ACM
Graphs & Graph Algorithms 4/13 Graphs
Topological sort
Directed, undirected, acyclic, bipartite
Graph representations
Graph coloring
Breadth-first search
Single shortest path problem
Graphs & Graph Algorithms 14.1-3 ACM
Lower bounds and resizable arrays 4/11 Asymptotic lower bounds
Lower bounds on sorting
Amortized complexity
Resizable arrays
Resizing hash tables
Slides 8.7-8.8, 16.1 ACM
Hash tables 4/6 Direct address tables
Hash tables
Hash functions
Chaining and open addressing
Hash Tables Ch. 20 ACM
Standard ADTs 4/4 Ordered and unordered sets
Ordered and unordered maps
Queues and stacks
Priority queues
Standard ADTs 8.8
Ch. 6
Ch. 16
LM, NR
Sorting 3/30 InsertionSort
MergeSort
QuickSort
Sorting
BasicSorting.java
MergeSort.java
QuickSort.java (updated 4/7/2006)
8.1-8.3
8.5-8.6
AS, RD
Searching &
Asymptotic Complexity
3/28 Searching: linear, binary
Asymptotic time complexity
Big-O
Sorting
Searching & an Introduction to Asymptotic Complexity Chapter 5 ACM
Nested classes and packages 3/16 Packages
Package scope
Nested, inner, anonymous classes
  4.8.1-4.8.4 ACM
Iterators 3/14 Iteration abstractions
java.util.Iterator
Implementing Iterator
Coroutine iterators (C#)
  Notes on Iteration Abstraction
6.2-3
ACM
Equality and comparison 3/9 equals vs. ==
notions of equality
compareTo and Comparable
Uses of Comparable
Comparator
Slides 4.7-4.8.0 ACM
Exceptions and generics 3/7 Exception classes
try...catch
try...finally
parameterized types
parameter type constraints
Slides 4.7 ACM
More design advice 3/2 Exposing the rep
Inheritance vs. encapsulation
Avoiding duplication
lec12.pdf   ACM
Object-oriented progamming 2/28 Types and subtypes
Type hierarchy
Interface extension
Inheritance
Protected: the specialization interface
Overriding vs. Shadowing
Constructors
lec11.pdf Lecture Notes, 4.1-4.4 ACM
ADT Design 2/23 Designing interfaces
Mutable vs. immutable
Kinds of operations
Implementing an ADT
lec10.pdf
Rope.java
Branch.java
Leaf.java
Ropes.java
Lecture Notes ACM
Documenting Interfaces 2/21 Writing method specs
Using javadoc
Some programming advice
lec09.pdf
Interval.java
IntervalC.java
Lecture Notes, 3.3 ACM
Abstraction 2/16 Function and data abstractions
Interface vs. implementation
Abstract Data Types (ADTs)
Java visibility qualifiers and Java interfaces
Notes on abstraction Lecture Notes ACM
More on Lists & Trees 2/14 List & tree implementation
header objects
doubly-linked lists
removing elements from lists and trees
tree traversals
More on Lists & Trees
List.java
LinkedList.java
BST.java
19.1 ACM
Induction 2/9 Induction Induction
Proving binary search
Lecture Notes
7.1-7.2, 5.6.2
ACM
Lists & Trees 2/7 First dynamic data structure
Introduction to singly-linked lists
Building and searching
Insertion and deletion
Introduction to trees
Lists & Trees 17.1-17.4
18.1-18.3
ACM
Grammars and Parsing 2/2 Grammars
Parsing
Expression parsing
Code generation
Parsing
Notes on grammars
SimpleExpression.java
SimpleExpressionCodeGenerator.java
Lecture Notes ACM
Recursion 1/31 Recursive programs
Frames and recursive calls
Recursion (Fall 2005 slides)
Power.java
Hanoi-Recursive.java
Hanoi-Iterative.java
7.3-7.4
Lecture Notes
ACM
Quick Review of Java Concepts 1/26 Classes, objects, primitive and reference types, array representation, the Java API, command line interface, new features of J2SE 5.0, debugging and experimentation Java Review
Examples.zip
Skim Chapters 1, 2, and 3 (this should be review)
Java API
J2SE 5.0 in a Nutshell
ACM
Introduction 1/24 Course policies and procedures
8-Puzzle application
SaM application
Introduction
SaM
Puzzle
Preface
Introduction
Sam Loyd
ACM