CS211 Fall 2000 - TENTATIVE TOPIC LIST - M. Morgenstern - WORKING DRAFT
++ signifies Accel/Proj Stream
We likely will not cover all the items listed here, in either Stream.
* Overview & Concepts
- Agenda/topics, you should know Java
Recitations, attendance, homeworks, grading
Newsgroup, Online Hw submission
Objects, data, methods/operators/procedures
- Classes:
arrays
constructors and instantiation
static variables and methods
reference variables, parameter passing, return values
++Proj: design environment, CodeWarrior in labs
programs: arrays, I/O (CS211 I/O package?)
book exercises
* Inheritance:
extending classes
polymorphism
interfaces
abstract classes
the instanceof operator
casting
the class called Class
basic Reflection
++Proj: program generation of combinations,
program with subclassing and inheritance, instances
fix given program with errors, add doc, then run,
book exercises
* Access, I/O, Exceptions, Recursion, Induction:
- access control modifiers
packages, streams, serialization
exceptions: throw and throws
try, catch and finally
- Recursion and induction
tail recursion
how it works: parameters, execution stack
induction proofs
++Proj: Recursion programming,
book exercises
* Program Design
- top down, bottom up, middle out design
UML
pseudo-code
program stubs
- Javadoc and comments
testing
conditional compilation and inlining (newer compilers)
debugging
program/system lifecycle
++Proj: interface and module design,
UML, pseudo-code
- Modify previous recursion program given revised spec
- book exercises
* Building GUIs:
- JFC (Java Foundation Classes)
AWT, Swing
containers
events and listeners
inner classes
command line args
intro to applets
++Proj: Game of Life
book exercises
* GUI and Algorithms
- GUIs continued
- Analyisis of algorthims and Big-O notation
Abstract data types and operators
arrays (review), sets, multi-sets, collections
implicit vs explicit representation (eg priority queue 'tree')
linked lists, cf LISP
++Proj: #2 Game of Life: GUI issues
book exercises
* ADTs and Trees
- stacks, and uses: expression evaluation, execution stack
queues, use in simulation
ADTs
- binary and n-ary trees
tree traversal
expression representation trees
decision trees
game trees
++Proj: Code Interpretation: parse fully parenthesized expression
and execute simple code (pairwise instructions) to compute
result using stack as needed. too much?
* Search Trees and Hashing
- search trees: binary, balanced (AVL)
B-Trees and indices
- Hashing
Hash fcn, overflow methods
analysis
extensible hashing
++Proj: #2 Modifying Code Interp project: generate log of
intermediate operations and their results
(extra: B-Tree and indices)
* Graphs
- types of graphs,
graph representation and applications
graph traversal, breadth, depth, best,
distance and Dijkstra's shortest path
++Proj: Introduce major project:
(game, interpreter/compiler, database indexing, graph algs)
book exercises
* More on Graphs, Search
- Topological sort
spanning tree and algorithm
Search: linear, binary if sorted
- Sorts: Selection, Merge
Binary heap, priority queue, Heapsort
++Proj: topological sort (or heapsort)
book exercises
* Sorting and Alg Analysis
- Quicksort, details, analysis
- Divide and conquer strategy
- Algorithm analysis, asymptotic complexity
analysis of Heapsort and MergeSort