ICS 23 Spring 2012
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. Most appear to work best, and some work only, in Internet Explorer.

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://www.strille.net/works/media_technology_projects/avl-tree_2001/
      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.4]
5
Midterm Tuesday, May 1
Graphs, continued
  Shortest Path [13.5]
  Minimum Cost Spanning Trees [13.6]
  Introduction to P, NP, NP-complete, and (un)decidable problems
6
Sorting
  Sorting in n2 time
    Insertion sort
    "Outmoded" sorts (Selection sort, Shell sort, ...)
  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, ProxmapSort, ChainSort
    Proxmap handout
    ChainList handout
    ProxmapSearch as a consequence of ProxmapSort
    ChainSearch as a consequence of ChainSort
  Comparing sorts
      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.1]
  Skip lists [9.4]
      iamwww.unibe.ch/~wenger/DA/SkipList/

  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 [see ChainList handout, above]
  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]
    B-Tree deletion handout
Memory management [14.1]
  Dynamic memory allocation
    First fit
    Best fit
Memorial Day holiday, Monday, May 28: first floor labs closed
10
Memory management, continued
  Garbage Collection
  Managing disk space
  Standish’s algorithm
Union/find algorithm [11.4]
Review for Final
Final Exam
Thursday, June 14, 4:00 - 6:00 pm, in DBH 1100