*Please note: This is the syllabus from the 2021/22 academic year and subject to change.*
Advanced Algorithms is a second course on the design and analysis of efficient algorithms. This course will present many interesting and relevant algorithms and give students the tools to recognize and rigorously solve algorithmic problems in the real world.
- Data structures: Bloom filters, red-black trees, B-trees, skip lists, and more
- Methods of dealing with NP-completeness: approximation, randomization, branch and bound, local search
- Linear programming
- Computational geometry and advanced graph algorithms
with applications in computing, data science, and engineering.
Engaging weekly homework assignments will involve designing new algorithms in pseudocode and implementing selected algorithms in Python. Course goals are to prepare students with skills necessary to tackle algorithmic problems they are likely to encounter in software development.