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 |