The goal of the course is to familiarize students with algorithms, data structures and with the techniques needed for analyzing their eﬃciency.
Knowledge and understanding:
The main objective of this course is to acquire the tools and techniques needed to analyze and design practical algorithmic solutions to elementary real-world problems. This course gives students an in-depth understanding of a wide range of fundamental algorithms and data structures used in developing structured, efficient, reusable, and practical software.
Applying knowledge and understanding:
Students will be able to compare different algorithms for the same task, and predict or guarantee performance for large problems. Students will be able to study the inherent difficulty of the given problem, to model and implement efficient software solutions using appropriately selected algorithms and data structures.