CS 401 / MCS 401 Home Page     
Fall, 2007


CS 401 / MCS 401 is an advanced undergraduate course on computer algorithms.  Although many of the algorithms covered in this course are used heavily in computer programs, and some have been incorporated into programming libraries, MCS 401 / CS 401 is not itself a programming course; no programming assignments will be given.  The course covers general techniques for designing computer algorithms, as well as specific algorithms for a number of important computations (sorting, searching, shorted paths in graphs, etc.).  The objectives of the course are

Students are expected to have a reasonable knowledge of a computer language (preferably C, C++, or Java), a course on data structures, and a background in calculus, discrete mathematics, and very elementary statistics.


bullet

Organization of course 
bullet

General information  (textbook, exam dates, grading, etc; requires Adobe Acrobat Reader) 

bullet

Detailed syllabus  (requires Adobe Acrobat Reader)

bullet

Homework Assignments (from textbook, unless otherwise indicated)
bullet

Week #1 Exercises  (due Fri, Sep 7)

bullet

Week #2 Exercises (due Fri, Sep 14)

bullet

Week #3 Exercises  (due Fri, Sep 21)

bullet

Week #4 Exercises  (due Fri, Sep 28)

bullet

Week #5-6 Exercises  (due Fri, Oct 12)

bullet

Week #7 Exercises  (due Fri, Oct 19)

bullet

Week #8-9 Exercises (due Fri, Nov 2)

bullet

Week #10-11 Exercises (due Wed, Nov 14)

bullet

Week #12 Exercises (due Wed, Nov 21)

bullet

Week #13-14 Exercises (due Wed, Dec 5)

 

    

bullet

Homework Solutions
bullet

Solutions to Week #1 exercises

bullet

Solutions to Week #2 exercises 

bullet

Solutions to Week #3 exercises

bullet

Solutions to Week #4 exercises

bullet

Solutions to Week #5-6 Exercises

bullet

Solutions to Week #7 Exercises   (Error in Exercise K solution corrected 10/21/07.  Only last two pages are affected.)

bullet

Solutions to Week #8-9 Exercises

bullet

Solutions to Week #12 Exercises  (except 15-1 and 15-6, which I will attempt to go over in class)

bullet

Solutions to Week #13-14 Exercises (available afternoon of 12/07/07)
 

bullet

Exams (study guides, solutions)  
bullet

Solutions to Quiz #1

bullet

Solutions to Quiz #4

bullet

Final Exam Study Guide

bullet

Handouts (require Adobe Acrobat Reader) 
bullet

Fast Exponentiation

bullet

Rate of growth of functions: An example

bullet

Rate of growth of functions

bullet

Rate of growth: Exponentials, polynomials, and logarithms

bullet

Factorials

bullet

Summation by parts

bullet

Examples of iterative and recursive algorithms

bullet

Merging and Mergesort

bullet

Recurrences:  Approximating floor(n/2) and ceiling(n/2) by n/2

bullet

Solving recurrences: Recurrence Trees

bullet

Solving recurrences: The Master Theorem

bullet

An Extension to The Master Theorem

bullet

Sorting algorithm: Taking advantage of order present

bullet

Sorting algorithms: Stability

bullet

Straight insertion sort

bullet

Nearly complete binary trees and heaps  (extension to handout)

bullet

Example of heapsort

bullet

The heapsort algorithm

bullet

Examples of decision trees

bullet

Quicksort

bullet

Selection (finding the kth smallest) in linear expected time: Example

bullet

Selection (finding the kth smallest) in linear expected time:  The algorithm

bullet Order of Matrix Multiplication
bullet Longest Common Subsequence
bullet All-pairs Shortest Path Algorithm in Graphs
bullet

Minimal Spanning Trees

bullet

Prim's Algorithm

bullet Graphs and Digraphs
bullet

Breadth-first Search

bullet

Depth-first Search: Examples

bullet

The Depth-first Search Algorithm

bullet

Applications of Depth-First Search

bullet

String Matching with Finite Automata

bullet  

 

bullet

Useful links
bullet

Instructor's home page

bullet

MSCS Department home page

bullet

UIC home page