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.
|
|
|
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] |
|
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 |
|
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] |
|
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] |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
Memory management, continued
Garbage Collection Managing disk space Standish’s algorithm Union/find algorithm [11.4] Review for Final |
|
Thursday, June 14, 4:00 - 6:00 pm, in DBH 1100 |