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