Course Description
This course presents an introduction to the techniques for designing efficient computer algorithms and analyzing their running times. General topics include asymptotics, solving summations and recurrences, algorithm design techniques, analysis of data structures, and introduction to NP-completeness.
This course presents an introduction to the techniques for designing efficient computer algorithms and analyzing their running times. General topics include asymptotics, solving summations and recurrences, algorithm design techniques, analysis of data structures, and introduction to NP-completeness.
Course Information
Instructor
- Clyde Kruskal (kruskal@cs.umd.edu), Office 2240 Brendan Iribe Center
Piazza
- Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2009). Introduction to Algorithms (3rd ed.). MIT Press (Any edition is fine)
- Parberry and Gasarch. Problems on Algorithms (free with small suggested donation)
Textbook (on reserve at McKeldin Library)
Supplementary Book
Exams
Syllabus
Office Hours
Class Resources
- Note on mathematical induction
- Maximum contiguous subsequence
- Sorting algorithms
- Growth Charts: Chart 1 Chart 2
- Integer addition
- Integer multiplication
- Heap sort animation
- Analysis of quick sort slides
- Counting Sort
- Radix Sort
- Selection
- Selection Worst Case
- Knuth's article: Estimating the Efficiency of Backtrack Programs
- Prim's minimum spanning tree algorithm
- Dijkstra's shortest paths algorithm
Online Resources
- David Mount's Lecture Notes
- CMSC351 Spring Spring 2011 Reference Pages