This is the course webpage for CS 401: Computer Algorithms I. Please check this webpage frequently for information regarding the class. Below are many useful information and links for the course.


Course syllabus (basic information about the course, grading, policies, final examination and so forth)

Course Number CS 401 (3 or 4 credits)
Call Number 20264 (for graduate students)
10671 (for under-graduate students)
Course Title Computer Algorithms I
Course Webpage http://www.cs.uic.edu/~i401
Lectures Tuesday and Thursday, 12:30 PM to 1:45 PM
Room 220 DH
Instructor Prof. Bhaskar DasGupta
Office: 933 SEO Bldg
Phone: 312-355-1319
Email: dasgupta@cs.uic.edu
Instructor Office Hours Tuesday and Thursday, 4:00 PM to 5:30 PM
And at other times by appointment only
Please make an appointment if you wish to see me outside my office hours
TA Lakshmi Kaligounder
Email: lkalig2@uic.edu
Office: 932 SEO
Office phone: (312)-996-5941
TA Office hours Tuesday and Thursday, 10:00 AM to 12:00 noon
And at other times by appointment
Textbook Algorithms Design
Jon Kleinberg and Eva Tardos
Addison Wesley, 2006, ISBN 0-321-29535-8
Date of final examination
(as set by the university)
Friday December 14, 8:00 AM to 10:00 AM

In this course, we will cover basic technique for the design and analysis of efficient computer algorithms for solving various kinds of problems. The prerequisites for this course include Data Structures and Discrete Mathematics. Hence, you are assumed to have already familiar with basic data structures like stacks, queues, tress, linked lists etc., and basic concepts of discrete mathematics, such as basic mathematical identities, series summations and recurrences.

The course webpage will contain many materials (for example, assignments) related to the course. Please check the course webpage frequently (for example, at least once in every two days). You will be responsible for missing an assignment posted on the course webpage if you do not check the webpage frequently.

Evaluation Criteria (grading)

The following information on assignments and gradings are tentative and subject to change depending on the progress in the class. It is expected that there will be 3 assignments, 2 quizzes and 1 final examination. The final exam will be comprehensive. Each assignment will involve solving some excercise problems and/or writing programs implementing some algorithm. Assignments must be handed in class on the date specified. No late assignments will be accepted. Discussions with other students about assigments is allowed, but the work handed in must be the student's own work. Tentative weights of the assignments and exams in the final grading is as follows:

Assignments (3) 30%
Midterm 1 20%
Midterm 2 20%
Final 30%
Total 100%

Topics to be covered tentatively includes the following (they are subject to change if necessary):

  • Some representative problems
    • Stable matching type problems
    • Five representative problems
  • Basics of Algorithm Analysis
    • Computational Tractability
    • Asymptotic Order of Growth
    • Common Running Times
  • Graphs
    • Basic Definitions and Applications
    • Graph Traversal
    • Testing Bipartiteness
    • Connectivity in Directed Graphs
    • DAGs and Topological Ordering
  • Greedy Algorithms
    • Interval Scheduling and Partitioning
    • Scheduling to Minimize Lateness
    • Optimal Caching
    • Shortest Paths in a Graph
    • Coin Changing Problems
    • Selecting Breakpoints
    • Minimum Spanning Tree
    • Clustering
  • Divide and Conquer approach
    • Mergesort
    • Counting Inversions
    • Closest Pair of Points
    • Integer Multiplication
    • Matrix Multiplication
    • Convolution and FFT (if time permits)
  • Dynamic Programming approach
    • Weighted Interval Scheduling
    • Segmented Least Squares
    • Knapsack Problem
    • RNA Secondary Structure
    • Sequence Alignment (only if we have extra time)
    • Shortest Paths
    • Detecting Negative Cycles in a Graph
  • Computational Intractability
    • Polynomial-Time Reductions
    • Definition of complexity classes P,NP,EXP
    • NP-Completeness
    • co-NP and the Asymmetry of NP
    • NP-completeness reductions


Information about assignments and other important dates

Assignment 1 (first two problems) (PDF file, deadline: September 27 in class)

Assignment 1 (remaining two problems) (PDF file, deadline: October 18 in class)

Assignment 2 (first two problems) (PDF file, deadline: November 13, in class)

Assignment 2 (remaining third problems) (PDF file, deadline: November 27, in class)

Midterm I will be on Thursday October 18 in class. The syllabus is from the beginning (first class) up to and including the last lecture on greedy method taught on September 27

Midterm 2 will be on Tuesday November 27 in class. The syllabus covers the divide-and-conquer and the dynamic programming chapters

Assignment 3 (PDF file, deadline: December 6, in class)

All graded assignments are avaiable outside the office of the instructor (933 SEO)


Slides of the lectures

Please note that these slides are only accessory material for the class. We may teach in the class materials not discussed in details here. Please be advised not to skip class hoping that studying these slides will suffice.