In this course, one learns how to design efficient algorithms and becomes familiar with common real-world algorithms. Examples include algorithms for data compression, error correcting codes, common graph algorithms such as shortest paths and network flow, and more. The course also includes algorithm techniques such as divideand-conquer, greedy algorithms, and dynamic programming.
Prerequisites: at least one of the following courses: MTH 3150, 4000, 4010, 4030, 4200, 4210, 4215, 4220, 4240 or 4315 and (CIS 2300 or MTH 3300 or CIS 3100 or CIS 4100) with a grade of C+ or higher