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 3215 AV Williams

### 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
- Merge Sort
- Heap sort animation
- Integer addition
- Integer multiplication
- Analysis of quick sort slides
- Counting Sort
- Radix Sort
- Selection
- Selection Worst Case
- Prim's minimum spanning tree algorithm
- Dijkstra's shortest paths algorithm
- Random numbers and random permutations
- Bloom filter animation

Online Resources

- David Mount's Lecture Notes
- CMSC351 Spring Spring 2011 Reference Pages