Instructor: Joseph JaJa
Course Objectives: Mathematical modeling, analysis, and proof techniques related to computer algorithms and systems. Probability, combinatorics, and graph theory as they pertain to the design and performance of computer systems. Techniques for the design and analysis of algorithms and data structures. Study of efficient algorithms from areas such as graph theory and networks. Understanding of the inherent complexity of problems: polynomial time, NP-completeness, and approximation algorithms. The course emphasizes mathematical rigor.
Prerequisite topics: Properties of functions and basic combinatorial principles, relations, equivalence classes, partial orders and related topics, asymptotics and recurrences, elementary sorting algorithms, programming experience, and basic calculus.
Textbook: Introduction to Algorithms, T.H. Cormen, C.E. Leiserson, R.L. Rivest, and C. Stein, McGraw-Hill, Second Edition, 2001 (required).
Core Topics:
1. Introduction (Chapters 1-5)
Asymptotic Analysis of Algorithms
Recurrences and Summations
Counting and Probability
Some basic techniques for estimating the complexity of algorithms
2. Elementary Data Structures (Chapters 10-12)
Stacks, queues, and linked lists
Hashing techniques
Binary Search Trees
3. Overview of Elementary Sorting Algorithms (Chapters 6-8)
Heapsort and priority queues
Quicksort and randomized algorithms
Linear time sorting algorithms
4. Advanced Algorithmic Methodologies (Chapters 15-16)
Dynamic programming and some related applications
Greedy algorithms and related applications
5. Basic Graph Algorithms (Chapters 22-26)
Basic graph exploration techniques
Minimum Spanning Trees
Single-source shortest paths
All-pairs shortest paths
Network Flow
6. NP-completeness (Chapter 34)
Basic framework: polynomial time and reducibility
NP-completeness: basic notion and proof techniques
Some NP-complete problems
7. Linear Programming (Chapter 29)
Basic Concepts
The Simplex Algorithm
Duality
Applications to Graph Optimization Problems
8. Advanced Data Structures (Chapters 13-14,18, 21)
Red-Black trees
Interval trees
B-trees
Data structures for disjoint sets
Course Grade: Homework (20%); Midterms (25% each); and Final (30%).
Late Assignments: No late assignments will be accepted but assignment with lowest score will not be counted.
Midterm I: Thursday, October 2; Midterm II: November 6; Final: Monday, December 15, 8-10.
Office Hours: Tu, Th 3-4:30 or by appointment
Contact Information: joseph@umiacs.umd.edu; 301-405-1925.
The University of Maryland, College Park has a nationally recognized Code of Academic Integrity, administered by the Student Honor Council. This Code sets standards for academic integrity at Maryland for all undergraduate and graduate students. As a student you are responsible for upholding these standards for this course. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit http://www.studenthonorcouncil.umd.edu/whatis.html .