*New* Video Notes

All lectures are taped and are available to watch on a streaming feed located on VideoNote. Log in with your net-id from a machine on the Cornell campus network and then select "group" cs2110; You should be able to get to all of the lectures within two or three days after the class. We've blocked access from outside of Cornell.

The video people will aim the camera at the instructor when he is speaking, which means you won't have the slide in front of you unless he walks over to it to point to something. To follow these videos, you also need to have the slides printed or open in a viewer.

Lecture Notes

Readings refer to the course text: Data Structures and Abstractions with Java, 2nd edition by Frank M. Carrano, Prentice Hall, 2007. ISBN 0-13-237045-X. See also the Prentice Hall website for additional material.  Readings are intended to be complementary to the lecture: you can do the reading before class, or after class, but should certainly read the chapter at some point to make sure you fully understand the material.  Exams tend to focus on things we covered in class.

LECTURE DATE TOPICS NOTES/EXAMPLES READING
1 Introduction 8/26 Course policies and procedures
2110 versus cs111x or cs3110
A motivating application
Why this course is important
Lecture Notes
Lecture Notes (6up)
Software Article
Sam Loyd Proof
The 15 Puzzle
About Sam Loyd
Chapter 1
Appendix A
2. Java Review 8/31 Brief programming language history
Basic Java/OO concepts
Tour of the Java API
Java tips, tricks, and pitfalls
Type hierarchy and subtyping
Inheritance
Method overriding
Debugging
Lecture Notes
Lecture Notes (6up)
CommandLineArgs.java
Enum.java
Equals.java
FileIO.java
Generics.java
MultiArray.java
Widget.java
ShadowTest.java
ConstructorSuper.java
ConstructorThis.java
SuperMethod.java
Chapter 2
Appendix B
Appendix
3 Software Design 9/2 Some left-over topics from Lecture 2..., then
Top-Down, Bottom-Up Design
Software Process (briefly)
Modularity
Information Hiding, Encapsulation
Principles of Least Astonishment and “DRY”
Refactoring
Lecture Notes
Lecture Notes (6up)
 
Interfaces and Types 9/7 Interfaces
Abstract classes
Static vs dynamic types
Up- and downcasting
Maintaining abstraction boundaries
Lecture Notes
Lecture Notes (6up)
Chapter 3
5 Testing 9/9 JUnit testing
The Software Life Cycle
Quality Assurance in commercial software
Lecture Notes
Lecture Notes (6up)
 
6 Recursion  9/14 Recursive programs
Stack frames and recursive calls
The induction principle
Lecture Notes
Lecture Notes (6up)
Power.java
HanoiRecursive.java HanoiIterative.java
Chapter 10
7 Parsing 9/16 Grammars
Parsing
Biscuit visiting Lecture Notes
Lecture Notes (6up)
SimpleExpression.java
SimpleExpressionCodeGenerator.java
Appendix B
8 Lists 9/21 Singly-linked lists
Building and searching
Insertion and deletion
Doubly-linked lists
Lecture Notes
Lecture Notes (6up)
List.java
ArrayList.java
LinkedListIterative.java
LinkedListRecursive.java
ListTest.java
Chapters 4-7
9 Trees 9/24 Tree implementations
Binary Search Trees (BSTs)
Tree traversals
Lecture Notes
Lecture Notes (6up)
BST.java
BSTTest.java
BSP.jar
Chapters 25-27
10 Graphical User Interfaces: Static 9/28 Components
Containers
Layout managers
Lecture Notes
Lecture Notes (6up)
Intro.java
Basic1.java
Basic2.java
Calculator.java
ComponentExamples.java
LayoutDemo.java
Statics1.java
Statics2.java
Statics3.java
Swing Tutorial
11 Graphical User Interfaces: Dynamics 9/30 Event-driven programming
Java event model
Events
Listeners
Adapters
Lecture Notes
Lecture Notes (6up)
Example1.java
ListenerExample1.java
ListenerExample2.java
ListenerExample3.java
AdapterExample.java
Scribble.java
Swing Tutorial
12 Searching and Asymptotic Complexity 10/5 Linear vs Binary Search
Runtime analysis
Big-O
Worst-case and expected-case
Lecture Notes
Lecture Notes (6up)
Search.java
SearchTest.java
Chapter 16
13 Searching 10/7 Insertion Sort
Selection Sort
Merge Sort
Quick Sort
Stable sorting
Lower bound for comparison sorts
Lecture Notes
Lecture Notes (6up)
Sorter.java
InsertionSort.java
SelectionSort.java
MergeSort.java
QuickSort.java
SortTest.java
Chapters 11, 12
No lecture (Fall Break is 10/9-10/13/2010)  
14 Generic Types and Java Collections 10/14 Generic types
Java Collections Framework
Lecture Notes
Lecture Notes (6up)
Chapter 3, 8, 14
15 Software Design Principles III 10/19 Contracts (pre- and postconditions)
Pair programming
Duplication of state
Sanity checks and the Java assert statement
The design/code/debug cycle
Javadoc
Error handling
Design Patterns
Lecture Notes
Lecture Notes (6up)
Observable.java
Observer.java
ObserverTest.java
TreeNode.java
Visitor.java
VisitorTest.java
 
16 Standard ADTs 10/21 Stacks
Queues
Dictionaries
Hashtables
Lecture Notes
Lecture Notes (6up)
Chapters 17-22
17 Priority Queues and Heaps 10/26 Priority Queues
Heaps
Lecture Notes
Lecture Notes (6up)
Chapters 23, 24, 28
18 Graphs I 10/28 Graphs
Topological sort
Coloring, Planarity
DFS
BFS
Dijkstra's Algorithm
Lecture Notes
Lecture Notes (6up)
Chapters 30, 31
19 Graphs II 11/2  Dijkstra's algorithm
Minimum spanning trees
Prim's algorithm
Lecture Notes
Lecture Notes (6up)
Digraph.java
Chapters 30, 31
20 Threads and Concurrency I 11/4 Java threads
The event dispatch thread
Locking and synchronization
Lecture Notes
Lecture Notes (6up)
Chapters 30, 31
21 Threads and Concurrency II 11/9 Locking, synchronization
Deadlock
Hardware update ordering concerns
Lecture Notes
Lecture Notes (6up)
 
22 Inductive proofs 11/11 The Induction Principle
Induction and Recursion
Lecture Notes
Lecture Notes (6up)
 
23 Proving correctness of concurrent programs using linearizability, induction 11/16 Safety, liveness
Linearizability
Inductive proofs of deadlock-freedom
Bohrbugs, Heisenbugs
Lecture Notes
Lecture Notes (6up)
 
24 The Java Virtual Machine I 11/18 Platform independence
Class file format
Bytecode examples
Class loading and initialization
Object initialization
Lecture Notes
Lecture Notes (6up)
BytecodeExamples.zip
 
25 The Java Virtual Machine II 11/23 Instance Method Dispatch
Exception Handling
The Java Security Model
Bytecode Verification
Stack Inspection
Lecture Notes
Lecture Notes (6up)
Some papers on stack inspection:
Erlingsson
Fournet
Wallach
Thanksgiving break: Nov 24-Nov 28
26 Distributed Computing 11/30 Distributed Computing
Web Services
Lecture Notes
Lecture Notes (6up)
 
27 Quantum Computing 12/2 Will quantum computers transform computer science?  What could a "quantum object" do? Lecture Notes
Lecture Notes (6up)
Brian Green
Final exam review: To be scheduled (Johnathon Schultz will do it)
Final exam: Thu, Dec 16   2:00 PM   Barton Hall 100 West-Main Floor