This course is about problem solving and computation via algorithms. We will cover a number of known algorithms (sorting, hashing, search, indexing) and their applications. We will discuss methods for analyzing existing algorithms and designing new algorithms. Finally, the students will be introduced to complexity classes, in particular the class of NP-completeness.

Course outline