CS 600 - Advanced Algorithm Design and Implementation

W 6:15pm-8:45pm - BC 219

DRAFT SYLLABUS - Sep 2, 2009 (Updated Oct 30, 2009)

This is a course on more complex data structures, and algorithm design and analysis. Topics include:  asymptotic complexity analysis; standard algorithm design techniques; graph algorithms;  sorting algorithms; and other "classic" algorithms that serve as examples of design techniques.                                  

Instructor:


Resources:

The GNU debugger gdb under NetBSD is documented here.

Your first resource for help with assignments is your textbook and then the instructor, in that order.

For typesetting text problems, please consider TeX.

When submitting a programming problem, use the Unix script command (e.g. see here) to record your input/output. Steps:
0. Start script 1. List (cat) your program 2. Compile your program, showing no compile errors 3. Do your test runs 4. Close script.
Include this script in your tar or ZIP file containing all program files.

Simple program timing can be done with the Unix time command, e.g. see here.

Grading:

There will be homework assignments (20%), up to four unannounced quizzes (30%), a midterm exam (25%), and a final exam (25%).

Policies:

Lectures:

You are responsible for material presented in lectures, including oral comments made by the lecturer.

This is the outline we will try to follow:

Date
Topics Covered
Reading
Assignments
Sep 2, 2009

Analysis of Algorithms, Insertion Sort, Mergesort
Chapters 1-2

Sep 9, 2009
Asymptotic Notation, Recurrences, Substitution, Master Method Chapters 3-4

Sep 16, 2009
Divide-and-Conquer: Strassen, Fibonacci, Polynomial Multiplication Sections 28.2 and 30.1 Do: Exercises 2.2-1, 2.2-2. 2.3-3.
Submit: Problems 2-1, 2-4
Do: Exercises 3.1-1, 3.1-2, 3-1.3, 3-1.4, 3-1.7, 3-1.8. 3.2-1, 3.2-2
Submit: Problem 3-3
Sep 23, 2009
Quicksort, randomized algorithms
Sections 5.1-5.3
Chapter 7
Submit: Exercise 2.3-5 (but: write real C code for both iterative and recursive approaches, implement the three parameter passing methods  from Problem 4-3 for the recursive version, do a test run with n =  10, 100, 1000, 10000, 100000, 1000000, time your results, include the script file as described above, and your conclusions about the respective running times for all 4 versions)
Do: Exercises 3.2-6, 4.1-1, 4.1-2, 4.1-6, 4.2-2, 4.2-3
Submit: Problems 4-1, 4-4
Sep 30, 2009
NO CLASS TODAY.
Linear-time Sorting: Lower Bounds, Counting Sort, Radix Sort
Sections 8.1-8.3

Oct 7, 2009
Order Statistics, Medians
Do: Problem 4-5, Exercises 5.2-3, 7.1-1
Submit: Exercise 5.2-4, Problems 5-1, 7-4
Oct 14, 2009
Applications of Median, Bucketsort Sections 9.1-9.3
Do:  Exercises 8.2-1, 8.3-1
Submit: Problem 8-3
Oct 21, 2009
Binary Search Trees, Red Black Trees - MIDTERM 
Chapters 12-13

Oct 28, 2009
Dynamic programming
Chapter 15
Nov 4, 2009
Greedy algorithms, minimum spanning trees
Chapter 16
Do: Exercises 9.1-1, 9.2-1, 9.3-1, 9.3-9
Submit: Problem 9.1 (a and c only)
Do: Exercise 11.2-1, 11.2-2
Submit: Exercise 11.4-3
Nov 11, 2009
Graph searching, BFS, DFS
Chapters 22-23
Do: Exercises 12.3-1 (in C), 12.3-3 (in C), 13.3-3
Submit: Problem 13-1 (also include C code for part b, for all required functions).

Nov 18, 2009
Shortest Paths: Bellman Ford, Dijkstra's algorithms. Chapter 24
Submit: 23-1 (a, b only)
Dec 2, 2009
Shortest paths II: all-pairs Shortest Paths, Matrix Multiplication, Floyd-Warshall, Johnson Chapter 25
Submit: Problem: You are a market trader dealing in international currencies. A colleague of yours, the smug programmer, has just been laid off. You are seeking a way to make money fast for your trading company, and have considered arbitrage, a technique described in Problem 24-3. Answer 24-3 a) and b), and add: c) implement it in C using sample data, e.g. from http://finance.yahoo.com/currency-investing#cross-rates or http://www.xe.com/ucc/
Dec 16, 2009
FINAL EXAM