CS211 Lecture Notes

Readings refer to the course text: Data Structures and Abstractions with Java, 2nd edition by Frank M. Carrano, Prentice Hall, ISBN: ISBN 0-13-237045-X, 2007.  See also the Prentice Hall website for additional material.

Lecture Date Topics Notes/Examples Reading
26. CS211 Review & Some Open Questions   Review of CS211
Some Open Questions
CS211 Review & Some Open Questions The Open Problems Project
25. The Java Virtual Machine II 5/1 Method Dispatch
Exception Handling
Java Security Model
Bytecode Verification
Stack Inspection
The JVM, Part II
Wallach paper
Fournet paper
Erlingsson paper
 
24. The Java Virtual Machine 4/26 The JVM
Class file format
Class loading and initialization
Object initialization
The JVM
Bytecode examples
 
23. Threads and Concurrency 4/24 Java Threads
Race Conditions
Deadlock
wait/notify
Threads and Concurrency  
22. Balanced Search Trees 4/19 Review of Binary Search Trees
AVL Trees
2-3 Trees
Balanced Search Trees
TreeSearch.java
Chapter 29
Prelim 2 Review 4/17
21. More Graphs 4/12 Breadth first search
Dijkstra's algorithm
Minimum spanning trees
Prim's algorithm
Greedy algorithms
More Graphs
Digraph.java
Chapters 30, 31
20. Graphs & Graph Algorithms 4/10 Graphs
Topological sort
Coloring, Planarity
Depth-first search
Breadth-first search
Dijkstra's algorithm
Graphs Chapters 30, 31
19. GUI Dynamics 4/5 Events
Listeners
Adapters
GUI Dynamics
Example programs
Swing Tutorial
18. GUI Statics 4/3 Components 
Containers 
Layout managers
GUI Statics
Intro.java
More examples
Swing Tutorial
17. Generic Types and the Java Collections Framework 3/29 Generic types in Java
Java Collections Framework
Generic Types & the JCF Java API
16. Priority Queues and Heaps 3/27 Priority Queues
Heaps
Priority Queues and Heaps Chapters 23, 24, 28
15. Standard ADTs 3/15 Stacks
Queues
Dictionaries
Hashtables
Standard ADTs
Stack.java
Queue.java
Chapters 17-22
14. Iteration & Inner Classes 3/13 Strategies for iteration
Iterators
Inner classes
Anonymous classes
Iteration & Inner Classes
ExampleIteration.java
Shark.java
 
Prelim 1 Review 3/8
13. Recurrences 3/6 Solving recurrences
Typical recurrences
Fast Fibonacci
Strassen's algorithm
Recurrences  
12. Sorting 3/1 Insertion Sort
Selection Sort
Merge Sort
Quick Sort
Stable sorting
Sorting
BasicSorting.java
MergeSort.java
QuickSort.java
Chapters 11, 12
11. Searching &
Asymptotic Complexity
2/27 Linear vs Binary Search
Runtime analysis
Big-O
Worst-case vs expected-case
Searching & Asymptotic Complexity
Search.java
SearchTest.java
Chapter 16
10. Software Design and Coding 2/22 Software design principles Software Design and Coding  
9. Interfaces & Types 2/20 Subtypes
Abstract classes
Java interfaces
Type hierarchy
Static vs dynamic types
Upcasting & downcasting
Interfaces & Types Chapter 3
8. Inheritance 2/15 Inheritance
Subtyping
Method overriding
Protected access
Inheritance
ShadowTest.java
ShowConstructorSuper.java
ShowConstructorThis.java
ShowSuperMethod.java
Chapter 14
7. Trees 2/13 Tree implementations
Binary Search Trees (BSTs)
Tree traversals
Trees
BST.java
BSTTest.java
Chapters 25-27
6. Lists 2/8 Singly-linked lists
Building and searching
Insertion and deletion
Doubly-linked lists
Lists
List.java
ArrayList.java
LinkedListIterative.java
LinkedListRecursive.java
Chapters 4-7
5. Induction 2/6 Induction Induction
Example of Strong Induction
Gauss
4. Grammars & Parsing 2/1 Grammars
Parsing
Code generation
Java Exceptions
Grammars & Parsing
SimpleExpression.java
SimpleExpressionCodeGenerator.java
Appendix B
3. Recursion 1/30 Recursive programs
Stack frames and recursive calls
Recursion
Power.java
Hanoi-Recursive.java
Hanoi-Iterative.java
Chapter 10
2. Java Review 1/25 Brief programming language history
Review of Java/OOP concepts
Some Java pitfalls
Java Review
CmdLineArgs.java
Widget.java
Equals.java
MultiArray.java
Generics.java
For.java
Enum.java
Java API
J2SE 5 in a Nutshell
Chapter 1
Appendix A
1. Introduction 1/23 Course policies and procedures
8-Puzzle application
Introduction
Puzzle.zip
Software Article
Sam Loyd