NUS Module Reviews

CS1231S Discrete Structures

Taken in AY22/23 Sem 1 under Prof Aaron Tan Tuck Choy


Hard, fun, don’t give up


See this link



Of the 100 mark finals only 18 marks were based on topics that were covered in midterms. Assignments are meant to be completed individually, but almost everyone gets close to full marks for assignments, so that rule is obviously ignored if you consider that the median for assessments hovers around 50%.

I was around the lower quartile for my assignments and just below the median for midterms. I was fully intent on S/U-ing, but sage advice from a senior told me to not completely give up because the second half of the module is fairly distinct from the first half, and contains topics that probably favours those with programming experience. I ended up far exceeding my expectations for finals (upper decile).


This module is known for being tough because most students will have 0 familiarity with any of the content prior to NUS. This however means that there’s a relatively even playing field, since most of the students who have prior background and would have ez no kick destroyed the bell curve are probably in MA1100 or MA1100T. That said, complete knowledge of pre-university level Mathematics is assumed, and as a former bad student I personally struggled with doing basic algebraic manipulation which you had to show steps for during the early topics. By the end, you could get away with just writing (by basic algebra) in your proofs.

Of all the modules I took in Sem 1, this had the most Δknowledge by far for me, and thus was my most satisfying (albeit difficult) module. Even though this was my only S/U-able module, the content, especially the later topics on cardinality/graphs/induction, was interesting enough for me to not have the discipline to stop reading the slides/tutorials and focus on saving my other modules even though I was fully intent on S/U-ing this module. Most of the content is really helpful for other CS mods, which I wouldn’t have predicted going into the module.

Something a bit weird that I would recommend is to find someone who takes MA1100T (the discrete math module for prospective Special Programme in Math students) and ask for their Cardinality slides/notes (I discovered this by accident because I was lucky enough to have a friend who was smart enough to be in MA1100T and helpful enough to teach me stuff the day before my finals). Cardinality will be the most difficult topic for most students because it feels so abstract and somewhat defies common sense. Their module goes far deeper in-depth than CS1231S, and a lot of “hard questions” in CS1231S that we would through are just trivial results and corollaries for those students. For example, the hardest MCQ question in this semester’s finals paper (Q17, 27.6% correct) asks you to verify statements that are trivial results in MA1100T lecture slides but incredibly difficult if you only have CS1231S resources and a normal human brain.


Lectures were taught by Prof Aaron with some taught by Prof Leong Hon Wai, and they were recorded. I did not attend or watch lectures. The slides are good and comprehensive enough to use to study, and my friends say that the lectures are good.

Tutorials are taught by 1 TA, who can be an undergraduate (usually assigned to 1 class) or a graduate student (usually take multiple classes). You are expected to have attempted the tutorial questions and thus have some familiarity with the content before the tutorials. My tutor was a grad student Sherman Yuen who was fantastic – I wasn’t the best student and often didn’t pay attention or attempt the worksheets before the tutorials, but when the stars aligned and I did both, his explanations were always very clear, his delivery was engaging, and he makes a huge effort to follow-up on doubts in class via email. If I had to choose between paying attention to the lectures XOR paying attention to (+ doing the worksheets for) the tutorials, I would choose the latter.

If you have a grad student TA, it is worth being friends with students who have undergraduate TAs, because they usually make Telegram groups where they dispense Past Year Papers and their Answer Schemes to their students. Otherwise, PYPs are uploaded without model answers.