ICS 23 Spring 2009
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 in lecture any needed changes.

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
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 tree applet.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, April 28
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]
      www.sorting-algorithms.com/
      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]
       iamwww.unibe.ch/~wenger/DA/SkipList/
      ww3.algorithmdesign.net/handouts/SkipLists.pdf

  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
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
Memorial Day holiday, Monday, May 25: first floor labs closed; no lab sections held
10
Memory management, continued
  Garbage Collection
  Managing disk space
  Standish’s algorithm
Union/find algorithm[11.6]
Review for Final
Final Exam
Thursday, June 11, 4:00 - 6:00 pm