CS 401 / MCS 401 Home Page     
Spring, 2008


CS 401 / MCS 401 is an advanced undergraduate course / beginning graduate 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 Wed, Jan 23)

bullet

Week #2 Exercises  (due Fri, Feb 1)

bullet

Week #3-4 Exercises  (due Mon, Feb 11)

bullet

Week #5 Exercises  (due Fri, Feb 22)

bullet

Week #6-7 Exercises (due Weds, Mar 5)

bullet

Week #8-9 Exercises (due Weds, Mar 19)

bullet

Week #10-11 Exercises (due Weds, Apr 9)

bullet

Week #13-14 Exercises (due Weds, April 30)
 

    

bullet

Homework Solutions
bullet

Solutions to Week #1 Exercises

bullet

Solutions to Week #2 Exercises

bullet

Solutions to Week #3-4 Exercises

bullet

Solutions to Week #5 Exercises

bullet

Solutions to Week #6-7 Exercises

bullet

Solution to Week 8-9 Exercises (P and Q only, others to be posted next week)

bullet

Solutions to Week 10-11 Exercises   (not covered on Quiz 3, but may be covered on Final)

bullet

Solutions to Week 13-14 Exercises (exercises V, W, X, Y)  (Use in studying for Quiz 3)
 

bullet

Exams (study guides, solutions)  
bullet

Final Exam Study Guide

bullet

Handouts (require Adobe Acrobat Reader) 
bullet

Fast exponentiation

bullet

Straight insertion sort

bullet

Rate of growth of functions

bullet

Factorials

bullet

Rate of growth:of exponentials, polynomials, and logarithms

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

Nearly complete binary trees, heaps, and priority queues

bullet

Heapsort

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 and Dijkstra'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