*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) |
||||
4 | 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 |
![]() |
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 |