James A. Foster


Analysis of Algorithms (Spring 2005)

CS 395/Math 395


Instructor: Dr. James A. Foster. Office: Janssen 229, Phone 208 885 7062, email (prefered!) foster at cs dot uidaho.edu.

In this course, we will learn mathematical techniques for quantifying the inherent efficiency of algorithms in an implementation independent way. We will then discuss several ways to design better algorithms. In particular, we will look at divide and conquer strategies, dynamic programming, backtracking, branch and bound, probabilistic algorithms, and approximation algorithms. The focus of the course is on answering the questions: how good is my best algorithm for a given task, and what do I do if that isn't good enough?

The course webpage, with announcements, grades, and more, is available for registered students on WebCT. This webpage is general public information.

Office Hours

Tues 15.30-16.45 in JEB 229, Wed 11.00-11.20 Online in the chat room.

TA: Tim Meekhoff (email at timothym at cs dot uidaho dot edu) is available in the CSAC (2nd floor of JEB) 9.00-10.30 MW and 9.30-010.30 Fr.


The (required) textbook for the course is: Fundamentals of Algorithmics, Brassard and Brately. Prentice Hall, 1995.


We will have two exams, regular homework, and a semester long project. In-class discussion is a vital part of the course as well. Here is the lecture syllabus.


My philosophy on grading is to give you the highest grade I can without embarassing either of us. I will round down for the midterm grades, which will be based on homework and the Midterm exam, and will consider class participation and any upward/downward trends in the project, homeworks, or exams when rounding scores for the final grades. Grades will be determined approximately as follows:
bullet Midterm: 35%
bullet Final: 35%
bullet Project: 20%
bullet Homework: 10% (approximately eight assignments)
bullet Classroom participation will be considered

Supplementary notes

bullet Here is an old example of dynamic programming algorithms for protein alignment (like DNA, only more than {A,C,G,T}). The cost matrix (a BLOSUM matrix) is empirically determined, and is more complex than the example in class. The gap cost is 8 in this example, and we're trying to minimize the score (rather than maximize). Skip the second page. the third page is a blank form in case you want to try your hand at filling in an array. The next two are Smith-Waterman and Needleman-Wunsch example. Skip the last page.
bullet where does Stirling's approximation come from?
bullet Here are notes on NP completeness
bullet Here are some notes on P, NP, and all that jazz
bullet Here are notes on electing a leader in a ring (a Las Vegas algorithm).
bullet Here is an instance generator for three processor scheduling, written by Jason Evans (a CS alumnus).
bullet Here's another instance generator, written by Kent Crossin!
bullet Here is a perl script to compute the closed form for a linear homogeneous recurrence relation, given the roots and multiplicities of a characteristic polynomial. Feel free to copy it and play with it. (if anyone would like to translate this into a java applet I would be immensely grateful).

Past Exams (very old!)

bullet Midterm from 1994 (in pdf)
bullet Midterm from 1996 (in pdf)
bullet Final from 1994 (in pdf)
bullet Final from 1996 (in pdf)


Last Updated Thursday, May 5, 2005 16:37