This module is an introductory module to algorithm analysis and design, somewhat of a continuation of CS2040/C/S. However, in contrast to CS2040/C/S, the module is a lot more theoretical, and familiarity with the content in CS1231/S would definitely help. Topics covered include dynamic programming, greedy algorithms, linear sorting, SSSP & APSP, randomized & approximation algorithms, and NP-hardness.
Lectures were recorded for this semester, and there were pre-recorded videos by the prof as well, which basically covered the same content. Tutorials were conducted by undergraduate and graduate students, and mostly delivered in a similar manner as most CS modules. However, some of the graduate tutors would go through some additional content beyond the lectures as well.
This module has biweekly written assignments consisting of two questions each, as well as two programming assignments (which can be done in any language). The assignments were tough, so be prepared to spend a lot of time on this module if you did not do so well in CS1231/S and CS2040/C/S. Luckily, prof was very accommodating throughout the semester, and he often replied swiftly to queries and gave hints on the forum to help students in the assignments.
Midterms and finals were both open-book. For this semester, the cohort average for midterms was rather disastrous, so the finals was made to be significantly easier.
Head over to our Shop for more module content!