CSC 411 Analysis of Algorithms

Official Course Description

This course presents the fundamental techniques for designing efficient computer algorithms, providing correctness, and analyzing the complexity of algorithms. General topics include methods for expressing and comparing the complexity of algorithms: worst and average cases, sorting, selection, graph algorithms, and basic algorithm design techniques such as divide-and-conquer, greedy method, backtracking, and dynamic programming.

Syllabus

Download syllabus (PDF)

Time and Place

Classroom: McCort Ward 209
Day/Time: Tue/Thu 2:10 PM - 3:25 PM

Schedule

Week Topic Class 1 Class 2 Resources
1 Algorithmic Problem Solving and Common Problem Types
2 Fundamentals of Algorithm Analysis Slides: Asymptotic Analysis Lean proofs for complexity
3 Asymptotic Analysis and Math Review Slides: Asymptotic Analysis Slides: Recurrence Analysis
4 Exhaustive Search Brute-Force Methods (PDF) Algorithms sandbox (GitHub)
5 Recursive Problems and Solutions
6 Divide and Conquer
7 Transformations and Reductions
8 Midterm exam
9 Spring Break
10 Tradeoffs Between Space and Time Complexity
11 Dynamic Programming
12 Dynamic Programming
13 Greedy Algorithms
14 Complexity Lower Bounds
15 Approximation Algorithms
16 Final Exam Review

Additional Resources

Algorithm Demos