Schedule
  Lectures

Note: this schedule is just an approximation...

Further Note: this schedule is quite out of date. We are still following the approximate order shown here.

week day readings topic  
W
E
E
K

1
28 ch 1 OOP: Statics
(Intro. to Java)
Primitive Java
Memory organization
29 sec 7.1 Induction Formulas: iterative, closed, recursive forms
Weak & strong mathematical induction (over N)
30 sec 7.1-5 Recursion Iterative vs. recursive programs
Stack frames during recursion
1  none Recursion: Parsing Applications: expression parsing & calculating
2  ch 2 OOP: Dynamics Objects as instances of classes
Aliases, live and dead objects, garbage collection
Static and instance variables and methods
Basics of method dispatching & name resolution
W
E
E
K

2
5 - - (Holiday)
6 ch 3 OOP: Philosophy Heap allocation
Basic Java objects: String, Object, Array, etc.
Wrapper classes: Integer, Double, Boolean, etc.
7 sec 6.5, [ch 17] ADT: Lists Linked Lists and their operations
Variations on linked lists
8   ADT: Lists cont.
9 [sec 7.3.5, ch 18] ADT: Trees Trees and their operations
Traversals
Applications: parsing, searching
W
E
E
K

3
12   PRELIM I Induction, Recursion, Lists and Trees, OOP
13  sec 4.4 OOP: Interfaces Interface rules
Implementing
Sub-types and type checking
14  ch 4 OOP: Inheritance Overriding, hiding, shadowing
Static & dynamic binding
Keyword super
15 2.5, 5.6, 5.1-3 OOP: Exceptions Exceptions & Exception Handling
Searching Searching in arrays
Informal intro. to analysis
16  sec 4.7, 6.1-5, 15 Generic Programming Iterators
Inner classes, Anonymous classes
Adapters design pattern
W
E
E
K

4
19  8 Sorting Select, Merge, Quick
Complexity of searching
20  5 Complexity Big-O notation
Formal intro. to analysis
21  - Data Structures Intro. to data structures
Graphs, state spaces
sequence & search structures
22  6.6, 16 ADT: Sequences Motivation, definitions
Stacks, queues
23  6.9, 21 ADT: Sequences Stacks, queues, priority queues, heaps
W
E
E
K

5
26   PRELIM II Sort, search, analysis, OOP features, ADT sequences
27  18, 19.1-2 ADT: Searching Using lists, balanced trees, search trees
28  18, 19.1-2 ADT: Searching Using lists, balanced trees, search trees
29  6.7-8, 20 ADT: Hashing Hashing & Hash tables
30  14 Graphs & Theory  
W
E
E
K

6
2  14 Graphs & Theory  
3  14 Graphs & Theory  
4   Correctness (optional)
5   Structural Induction (optional)
6   GUIs (optional)
E
X
A
M
S
9   Exams / Projects  
10   Exams / Projects  
  Topics

We will be covering the following topics:

  • Program Organization and Development
    • Uses of modules/classes (information hiding, organizational, etc.)
  • Object Oriented Programming
    • Classes and objects
    • Sub-typing
    • Inheritance
    • Interfaces
    • Nested, inner and anonymous classes
  • Abstract Data Types (a.k.a. generic programming)
    • Lists, stacks, queues, priority queues, heaps, trees
    • Binary search trees, hash tables
  • Graphs and graph theory
  • Algorithms
    • Sorting
    • Searching
    • Basic graph theory and algorithms
  • Program Analysis
    • Asymptotic complexity (a.k.a. big-O notation)
    • Correctness of programs (pre/post conditions, etc.)
  • Recursion and Induction
    • Structural and mathematical induction
    • Recursive data structures
    • Recursive programming

The following topics will not be covered, or will be de-emphasized:

  • Graphical User Interfaces
    • Applets
    • Event-driven programming
    • Swing / AWT
  • Grammars and parsing
  • Networking (sockets, web, etc.)
  • File and advanced I/O processing
  • Programming Styles
    • Event-driven, program-driven, search-driven
    • Streams, GUIs, Components/Adapters, etc.
    • Functional programming
  • Java Features
    • Exceptions
    • Data types, toolkits, and libraries
  Prerequisites

The following topics are prerequisites for CS 211:

  • Basic Programming
    • Variables, arithmetic, order of operations, etc.
    • Simple control flow (if, while, and for loops)
    • Methods/Functions
  • Basic Java
    • Basic types (int, double, char, String, etc.)
    • Variables (int x; double y;)
    • Arithmetic and casting (double z = (double) x / 2)
    • Objects, Classes, Instances, Constructors
    • ‘this’, ‘super’, ‘public’, ‘private’, ‘protected’, etc.
    • Static and instance variables and methods
    • Simple input/output using console and files