Prerequisites: CS 100, CS 141; or equivalent
Description: Covers the design and implementation of sequential, parallel, cache-efficient, external-memory, and write-efficient algorithms for fundamental computational problems including sorting, searching, as well as a selection of problems in algebra, geometry, combinatorial optimization, and string processing. Emphasizes practical aspects of algorithm design, efficient implementation, and experimental methodology for performance evaluation.