This follow-on course to data structures (e.g., 605.202) provides a survey of computer algorithms, examines fundamental techniques in algorithm design and analysis, and develops problem-solving skills required in all programs of study involving computer science. Topics include advanced data structures (red-black and 2-3-4 trees, union-find), recursion and mathematical induction, algorithm analysis and computational complexity (recurrence relations, big-O notation, NP-completeness), sorting and searching, design paradigms (divide and conquer, greedy heuristic, dynamic programming, amortized analysis), and graph algorithms (depth-first and breadth-first search, connectivity, minimum spanning trees, network flow). Advanced topics are selected from among the following: randomized algorithms, information retrieval, string and pattern matching, and computational geometry.

Course prerequisite(s): 

605.202 Data Structures or equivalent. 605.203 Discrete Mathematics or equivalent is recommended.

Course note(s): 

The required foundation courses may be taken in any order but must be taken before other courses in the degree.

Course instructor(s): 
Boon, Chen, Gearhart, Guven, Lew, Rodriguez, Sadowsky, Sheppard

View Course Homepage(s) for this course.