Module Reviews: Y2S1

CS1231: Discrete Structures

Lecturers: Prof. Tay Yong Chiang and Prof. Wong Tin Lok
TA: Dev Kishor Anand

Assessment:
20% Quiz 1
20% Quiz 2
20% Assignment
40% Finals

Module Difficulty
This modules introduces us to mathematical concepts that are useful in CS. It's pretty much similar with MA1100, just taught by different profs.

We started with logics, quantifiers, then sets, relations, functions, cardinality, combinatorics, and then ended up with graphs. If you have learnt this in high school or olympiad mathematics then I guess you will pass this module with flying colors.

The workload below is measured weekly.
Lectures - 3h (2h + 1h)
Both profs will teach us in turns. Prof Tay taught the first two topics and then Prof Wong continues up to cardinality, then back to Prof Tay. All lectures are recorded, so there shouldn't be any worry of missing that.

Content-wise, it's digestable. If you feel that numbers are overwhelming you, this is the chance to ponder upon the thought process when solving a problem, as there's an emphasis on proving questions as well. Sometimes, these kind of questions are not memorisable unless you understand the concept behind it, which is why concept reviews are important on top of a cheatsheet.

Tutorials - 2h
Dev goes through the tutorial questions which are not starred as they will be covered by Prof Tay during the starred tutorials section. The non-starred questions are within the scope of the tutorial, so Dev will review some lecture concepts for the first hour and then discuss the questions afterwards.

Starred Tutorials - around 1.5h-2h
The starred tutorial questions, are slightly harder than the normal tutorial questions, which is probably why Prof Tay wanted to keep it a separate session. This actually also serves as an extra consultation session. Note that this session is optional, but I tried to go for it for some extra reinforcements.

Exams and Personal Opinion
The two quizzes are only about 40 minutes each and are definitely doable if you study the sample quizzes and have the lecture notes on your hands. Probably prone to small mistakes, but generally quite easy to do. The first quiz focuses on logics and induction. The second quiz focuses on sets and relations as well as cardinality.

The one and only assignment focuses on sets, relations, and also equivalence relations, which is very doable given the long amount of time.

The emphasis on proving questions was however a bit late because they were announced after the quizzes but I understood their purpose. Regardless, I managed to do the proving questions in finals well enough, which is why I have to say that the exams were doable.

Overall, a good introductory course for both CS and math concepts. I also like how instead of just the concepts and the questions, Prof Tay always tried to relate it into real-world examples that makes the module look indeed like a CS mod instead of just a math mod.

Update: I need to thank the other reviewer for mentioning that this mod isn't bell-curved with CS1231S. Otherwise, it would be just a wrecking chaos.

Expected grade: A

CS2030: Programming Methodology II

Lecturer: Prof. Chia Wai Kit, Henry

Assessment:
5% Participation (GitHub, mostly)
5% LumiNUS Quizzes
5% Labs (9 of them)
15% PA1
20% PA2
10% Project (the legendary Discrete Event Simulator)
40% Finals

Module Difficulty
The module teaches you an introduction to a whole new world, Java and how to design programs well with the principles of object-oriented programming (OOP). It also introduces you to some of the useful Java API tools like Java streams and asynchronous programming. If you are new to Java, might as well quick learn these syntaxes, shortcuts (Vim, particularly) so that you won't be left behind.

GitHub participation is the easiest place to obtain marks. Just contribute actively there and you'll gain the double benefit of peer learning. Also a fun time to actually start learning GitHub.

The workload below is measured weekly.
Lectures - 2h
I'm amazed by how there's always at most 16 slides every week yet the content seems so compact. Try your best to come for lectures as there are in-lecture quizzes as well.

Recitations - 1h
Prof Henry will discuss the provided recitation question and also provide consultation should you have some questions about the lecture unanswered during the lecture itself.

Labs - 2h
This is where the assessments get pretty much out of control. Labs are not easily done in 2 hours as you have another week to finish the whole thing. The stressful part is either you need to solve it in one night full or take 4-5 days to solve it and still maintain your sleep schedule :)

It's very advisable to learn all the vim shortcuts and the command line shortcuts as they will help you navigate around the code much easier.

Now that I mentioned the Discrete Event Simulator project being legendary, that's because it will take you a lot, really lot of time. Some say it will take at least 30 hours of coding, some say 150 hours. It's just that time consuming. Probably this will still the project in a long time, so brace yourselves.

Exams and Personal Opinion
The PAs are rewarding once you managed to get it but try your best to get to the solution as closest as possible as they will mark the PE based on how far your final is modified from the post-lab attempt.

The final exam itself... is hard. It's just hard if you can't think of it. Sometimes you really need ideas to come down from the sky but overall it's a pleasant journey.

Personally, despite the hardship I think this module is a fun ride. In the end, I learned a lot more about programming methodology which can be applied outside Java as well. You're not alone in this pain, so it's amazing to see a lot of encouragements that you get from the peer learning.

Expected grade: A-

CS3244: Machine Learning

Lecturers: Prof. Kan Min Yen and Prof. Brian Lim

Assessment:
10% Assignment
10% Participation
20% Midterm
25% Team Project
35% Finals

Module Difficulty
I'd say this module is not impossible but what makes it hard is more towards the bell curve. Probably most people taking this module is already incredibly good at machine learning that this module is a review rather than an introduction.

The workload below is measured weekly.
Lectures - 3h (2h + 1h)
Both profs will teach us in turns. Prof Min covered the first half of the semester + the final week and Prof Brian covered the rest. What Prof Min covered revolves around the notion of machine learning and some of the well-known ML algorithms such as DT (decision tree) and SVM (support vector machine). Meanwhile, Prof Brian covers on evaluation metrics as well as deep learning (CNN and RNN, convolutional and recurrent neural networks). Due to time constraints, they left out RL (reinforcement learning) and some of the coding parts to mostly the tutorials and your own learning. Therefore, this semester the course's content seemed to be made more general rather than technical.

Tutorials - 1h
Tutorials were okay but I'd actually love to see it being 2 hours because there is actually more to discuss than less than 5 questions. You are expected to attend this because participation marks are taken.

Project, Exams, and Personal Opinion
The midterms and the final exams are all doable. They are mostly multiple choice or calculation questions with justifications in case you are wrong and can get partial marks for it. However, the bell curve game is strong here, so that affected me as well.

The group project is probably the most interesting part of the module since you get to explore the various problems and applications within machine learning. You are given around half a semester to complete this project. Just make sure you can come up with a good motivation and problem statement so that the project can run smoothly.

Nonetheless, it's a good module if you want to reinforce your machine learning fundamentals.

Expected grade: B

DSA2101: Essential Data Analytics Tools: Data Visualisation

Lecturer: Prof. Vik Gopal

Assessment:
10% DataCamp assignments
30% Tutorials (each 2% except the 7th which is 10%)
20% Midterm
40% Finals

Module Difficulty
The module difficulty actually depends on whether you know R well or not. It is very useful to understand how to read R help pages and the main star of this module, dplyr and ggplot2.

For the first few weeks you are refreshed upon the basic R commands, and how you should try to program functionally instead of declaratively, i.e. use the apply command family such as sapply and lapply instead of the well-known control flows like for and while or even repeat.

Next up is about importing data, where it can be from an HTML page, some API, excel files, you name it. This just opens our mind to what kinds of data storage are there out in the wild. You will also touch the concept of simple feature objects (sf) which is useful for spatial data.

Starting the middle of the semester we were introduced to dplyr which is very convenient to use when manipulating data. It feels like method chaining at its finest with the help of the pipe operator.

With all data importing and manipulating skills in hand, it's time to output and visualize the data as the module title says, which is using ggplot2. There are many ways of visualizing the same data, and we also went through the rationale on visualizing different types of data, such as considering the data-ink ratio, the accuracy of the data, and how the visualization is approachable to layman people.

As a supplementary material but not examinable, we were also introduced to Tableau on the last week, and how the basic tools work.

The workload below is measured weekly.
Lectures - 4h (2 x 2h)
Prof decided to use Microsoft Teams as the main communication platform, which I had no complain about. He will definitely provide the recording, but his lectures are just so calming I'd actually come for it. He also touched on some extra information such as some statistical methods that might be useful for further modules. It's a good idea to graze on these so as to give us awareness of their existence, e.g. how does the loess method work, instead of just using it in lm's method.

He also has a website that basically displays his code live, and we can comment on the code that he's currently explaining or copying them for easy reference and learning. It's just such easy to work around with these.

Tutorials - 1h
Basically, for every week, there will be a tutorial worksheet released to be done in a week by submitting Rmd files (R markdown). As someone who's been familiar with GitHub Markdown files, I had no trouble familiarizing myself with Rmd files, but learning this becomes crucial when you have to always submit everything in this file format.

The one-hour session is to simply discuss about these problems for you as a help to solve these questions. It is also recorded.

Personally, the questions take a while to solve (at least 3 hours?) but I enjoy exploring these datasets provided beforehand. There's actually more insights you can gain the moment you explore them.

DataCamp assignments
Prof used DataCamp for non-tutorial submissions which basically is an extra guide on how to work with everything taught in DSA2101. It is a comfortable tool and you don't have to worry about being wrong here because you are just graded for the sake of completeness. Also very chiong-able, how about finishing all ten in the end of Week 0 :)

Exams and Personal Opinion
Hands up the mod I had the most fun during the semester. Had ups and downs during debugging but isn't that the way of life.

Midterms was a one-day take home thing. So, you can ask for clarification during the next 24h of the paper's release. Difficulty-wise, it's medium difficulty and definitely can be searched by R's help page as well.

Finals was held F2F and the difficulty was easier than I expected, thankfully. There was a moment where I realized understanding the help page in a short amount time is a useful thing, since there was one package rarely used I only came upon it during exam yet I had to use it.

Overall, I learnt a lot from this module and how do we deal different kinds of datasets as a way of adapting.

Expected grade: A

GEH1036: Living with Mathematics

Lecturer: Prof. Gan Wee Teck

Assessment:
60% Quizzes (3 x 20%)
40% Finals

Module Difficulty
TLDR, a long-lost twin of CS1231+. It is basically discrete mathematics with a few non-overlapping materials. The topics include money (geometric sum), logics, quantifiers, sets, relations, functions, cardinality, fair division, voting, bidding, combinatorics, probability, game theory, and graphs (coloring, walking, and random walking), then finally coding and encryption/cryptography.

The workload below is measured weekly.
Lectures - 4h (2 x 2h)
The lectures are recorded, so don't worry of missing it.
There's honestly nothing much I'd say about the lectures. They are generally alright as Prof goes through the lecture slides that explains these concepts along with the examples. Some concepts are basically algorithmic simulations which interests me on how one come out with such idea, e.g. Selfridge-Conway envy-free fair division procedure. It's just a mindblowing moment that it makes sense once you understand how it works.

Tutorials - 1h
There are tutorial questions as well and the tutor will just go through them. The difficulty of the questions are easy to medium. There are only a few which are hard. Feel free to ask them about these questions during the tutorial session.

Exams and Personal Opinions
I took this module along with CS1231 so some topics will be simply just a repeat to me. But once we went into game theory and coding/encryption, that's where things get serious.

The quizzes topics are various depending on what topics are taught before the quiz and after the previous quiz. The questions are doable given the 1-1.5 hours time but the bell curve plays a big part here.

The final exam is easy here and there but some questions are nearly broken hard. Nevertheless, I think it was a balanced exam, sadly with no backwards navigation.

Looking at the bell-curve, I think this mod will only serve you well if you are actually good enough at math or understanding the concepts at least. But who knows, maybe you can take a leap of faith ;)

Expected grade: A

ST2132: Mathematical Statistics

Lecturer: Prof. Gan Fah Fatt

Assessment:
30% Midterms
70% Finals

Module Difficulty
You will realize the first 6 weeks of this module is basically ST2131. After that is a totally new thing. So, the last few weeks may be quite hard and overwhelming. Take note, Chapter 8, parameter estimation, is one of a kind.

The workload below is measured weekly.
Lectures - 4h (2 x 2h)
There are 8 chapters taught in total starting from basic combinatorics (which is also in ST2131) until parameter estimation and hypothesis testing. All the materials are from Mathematical Statistics and Data Analysis, Third Edition by John A. Rice, and Prof will annotate these notes during lecture.

Tutorials - 1h
I was under Prof Gan's tutorial slot so I'm not sure how other tutors did but it is basically discussing some questions from the same book. Some questions are easy, some are hard as well, but he gave the solutions in the end of the week. (because the book doesn't have it)

It's actually a good practice to review these questions to regrasp the concepts as the variety of the questions test you on many aspects of the concept itself. E.g., for t-distribution, how would you relate this to the chi-square distribution and the F-distribution?

Exams and Personal Opinion
Midterms was quite okay because most of them are MCQs and can be obtained by plugging in the formulas you might have included inside the cheatsheet. Only the first four chapters were tested. It's still a closed-book exam regardless.

Finals was obviously harder but the time management is stressful, which was not what I expected. All chapters are tested and more emphasis was put on the post-midterm chapters. Our grades might as well become a random variable because there were no updates or information on our grades for any assessment.

Personally, I thought the lectures are better to be watched as a recording (but I attended most of them anyways) and so are the tutorials. It is a slightly harder version of ST2131 because it is that module plus extra new stuff, so I also struggled during the end of sem.

Looking at the past ST2132 materials, I actually prefer it to be slides rather than just screenshots of the book annotated. This will contribute to the materials' clarity and verbosity at the same time.

Expected grade: A-