This course aims to provide the student with knowledge, skills and critical thinking ability in algorithm design and analysis. Inappropriate choice of algorithm and associated data structure can seriously impact on the performance of an application. The study of algorithm design and analysis provides techniques which help minimize the execution time of an algorithm. An emphasis is on the experimental performance analysis of algorithms. The second meeting of the class each week is entirely devoted to laboratory work where students tackle exercises and demonstrate their work. Larger algorithm projects are also undertaken. 

There is a written midterm exam and a written final exam. By the end of the course a student will have obtained an understanding of how algorithms have helped shape the modern world.