ICS 23 Winter 2008
Course Schedule

Fundamental Data Structures
Norman Jacobson, Instructor

Readings in the Goodrich-Tamassia text are indicated in brackets after the lecture topic to which they correspond. (You will find the chapter, and, where applicable, the section numbers of the pages to read. For instance, [8] means read chapter 8; [4.3-4.5] means read chapter 4, sections 3 through 5, including any subsections of those sections.) Note that some topics we cover are not in the text. (No book we’ve found matches this course exactly.)

Entries in italics are Web pages that animate the algorithm indicated.

We will stick as closely as practical to this schedule, announcing any needed changes in lecture.

Week
Topics and Readings
1
Introduction to the course
Review of single-dimension arrays [3.1.1-3.1.3]
Multi-dimension arrays [3.1.5]
Review of linked lists, ArrayList, stacks & queues [3.2-3.4; 5.1-5.2; 6]
Priority queues; representing priority queues with lists [8.1-8.2]
Review of recursion [3.5]
Review of proof methods and other useful math [A; 4.1]
2
Generalized lists
Algorithm Analysis [4.2-4.3]
  Elementary analysis of algorithms; recurrence relations
  Analysis of time used by an algorithm: O, omega and theta notation
Trees
  General trees: properties and terminology [7.1-7.2]
  Binary Trees [7.3]
    Properties, traversals & implementations
    (Re)constructing a tree from “linear” data
MLK Day holiday, Monday, Jan. 21: first floor labs closed; no lab sections held
3
Some Applications of Trees
     heaps; representing priority queues with heaps [8.3]
    Decision trees
    Game trees
Binary search trees
   Properties; adding and deleting nodes; traversal [10.1]
4
   Balancing Binary Search Trees; AVL Trees [10.2]
http://webpages.ull.es/users/jriera/Docencia/AVL/AVL%20tree%20applet.htm
      www.site.uottawa.ca/~stan/csi2514/applets/avl/BT.html

Graphs
  Terminology & Representations [13.1-13.2]
  Traversals, Topological ordering, DAGs, Weighted [13.3-13.5]
5
Midterm Tuesday, February 5
Graphs, continued
  Shortest Path [13.6]
  Minimum Cost Spanning Trees [13.7.1]
  Introduction to P, NP, NP-complete, and (un)decidable problems
6
Sorting
  Sorting in n2 time
    Insertion sort
    "Outmoded" sorts
  Sorting in n log n time
    TreeSort
    Heapsort [8.3.5]
  Divide and conquer methods: Mergesort & Quicksort [11.1-11.2]
  Lower bound for direct key comparison sorting [11.3]
  Linear time sorting: radix and ProxmapSort[11.4; handout]
    ProxmapSearch as a consequence of ProxmapSort
  Comparing sorts[11.5]
      cg.scs.carleton.ca/~morin/misc/sortalg/
      maven.smith.edu/~thiebaut/java/sort/demo.html
7
Searching
  Review of searching unordered & ordered lists [9.3.3]
  Skip lists [9.4]
  Hashing [9.1-9.2]
    Review of division hashing & separate chaining
    Multiplicative hashing; random and uniform hash functions
    Overview of open addressing techniques
    Space & time results
  Bucket searches & ChainSearch [handout]
  ChainSort as a consequence of ChainSearch
  General issues
Presidents’ Day holiday, Monday, Feb. 18: first floor labs closed; no lab sections held
8
Sorting on External Media
  Adapting memory-based sorts to disk
  Mergesort & sorting on sequential media [14.4]
  Pros and cons of applying memory-based sorts
Searching on External Media
  Basic disk structure
  Random access
  Naive approaches
9
Searching on External Media, continued
  B-trees & B+ trees [14.3] Memory management [14.1]
  Dynamic memory allocation
    First fit
    Best fit
10
Memory management, continued
  Garbage Collection
  Managing disk space
  Standish’s algorithm
Union/find algorithm[11.6]
Review for Final
Final Exam
Thursday, March 20, 4:00 - 6:00 pm