CS2040S Data Structures and Algorithms

1 minute read

Published:

Academic Year 2021 - 2022
Semester 2

NUSMods Description

This module introduces students to the design and implementation of fundamental data structures and algorithms. The module covers basic data structures (linked lists, stacks, queues, hash tables, binary heaps, trees, and graphs), searching and sorting algorithms, and basic analysis of algorithms.

Review

This module was taught by Prof Seth Gilbert. Prof Seth tends to speed during the lecture, hence I was unable to understand, let alone internalise what he delivered. However, he is very passionate about algorithms.

There are 2 x 2hr lectures and 1 x 1hr recitation and 1 x 2hr tutorial.

There are 8 Problem Sets done on Coursemology with several optional PSets for the opportunity to gain for XPs, followed by a Midterm and a Final. The weightages are not disclosed.

I enjoyed this module very much despite the large workload. We were given a 1hr crash course on Java on our 2nd lecture which I do not really follow. For some reason. I personally learnt a lot for this module. It really deepens the way I think of using algorithms to solve problems. Sometimes, we just have to modify the problem and use the algorithm as a black box, otherwise, we can modify an aspect of the algorithm to solve a problem instance.

Recitations were taught by Jin Zhe, who is very encouraging. I always make the effort to voice out any ideas fearlessly and even managed to solve a question brilliantly. Recitations will introduce more materials which are also examinable. It mainly contains topics that could not be squeezed into the main lecture series, like B-trees, Heaps and Graph Transformation. I struggled a bit by Dynamic Programming as it is the last topic and was taught pretty rushed. I did average for Midterms but very well for the Finals. I think most importantly, we must learn to be flexible and exploit the advantages of several data structures to solve the problem effeciently. This really motivated me to pursue the Algorithms and Theory track. I highly recommend reading CLRS for a better grasp for the topics.