CS 4040/5040: Design and Analysis of Algorithms

Fall 2015

This course provides an introduction to the modern study of computer algorithms. Through this course students should be able to:

** Course materials**^{1}**:**

- Syllabus & Introduction
- Mathematical background
- Insertion Sort: proof of correctness
- Asymptotic analysis
- Merge Sort: analysis of time complexity
- Master Theorem
- Heapsort
- Quicksort
- Comparison Sort: lower bound
- Count & Radix Sort
- Selection
- Matrix Multiplication; Closest Pair
- Minimum Spanning Trees
- Single Source Shortest Paths
- Fractional Knapsack
- 0/1 Knapsack
- Matrix Chain Multiplication
- Longest Common Subsequence
- Coin-Changing
- All Pairs Shortest Paths
- Maximum Flow & Bipartite Matching
- Classes P & NP
- NP-completeness
- NP-complete problems

- Homework 1
- Homework 2
- Homework 3
- Homework 4
- Homework 5
- Homework 6
- Project and Sample files
- Homework 7

- Insertion Sort with Romanian folk dance
- How to Read and Do Proofs: An Introduction to Mathematical Thought Processes
- An Annotated List of Selected NP-complete Problems
- NP-complete problems on xkcd
- Sorting with the Sun version of Java SE 6 API
- Sorting with the SGI version of C++ STL
- Cars packed with up to 100 million lines of computer code