In this course, we will study the design and analysis of efficient algorithms. The focus will be on fundamental design techniques such as greedy approaches, divide and conquer, dynamic programming, network flow, and randomized algorithms. We will study measuring program performance using asymptotic notation.

The principle focus of the lectures will be theoretical. In addition to the lectures and their associated homework assignments, there will be a number of programming assignments, in which you will be required to implement algorithms.
Office Hours:

MW 3:30-4:30pm, 9-120A

Muhammad Sohaib Ayub, TA
Office Hours:

T 2-3pm, Th 5-6pm, CS Lounge

Wardah Khawar, TA
Office Hours:

M 12-1pm, Th 5-6pm, CS Lounge

Course Information

Class meetings

TTh 3:30-4:45pm, 10-401


Discrete Mathematics

Required text


Optional text



30%Quizzes (10 quizzes)
20%Assignments (4 assignments)

Tentative Schedule

Topic 1: Foundations

Topic 1: Time Complexity

Topic 1: Graphs


Last day to drop this course.

Topic 1: Greedy Algorithms


Last day to withdraw from this course.

Mid-term (TBD)


Final Examination