Module Reviews: Y3S1

CS2102: Database Systems

Lecturers: Christian von der Weth, Adi Yoga Sidi Prabawa, Stephane Bressan
TA: Wu Qirui

Assessment:
2% Tutorial Participation
2x10% Assignments
10%+18% Group Project
20% Midterm Test
40% Final Test

Module Difficulty
The module covers various topics about database systems and not limited to SQL. Starting with the definition of the terms within DBMS such as superkey and foreign key, relational algebra, SQL itself (for quite some weeks, including how one creates a schema), ER diagrams (the one I'm struggling most with), functions, procedures, triggers (these three provide control flow within SQL), and finally the theory regarding normalization which are functional dependencies, BCNF and 3NF.

The workload below is measured weekly.
Lectures - 2h
This was a hybrid lecture so more people started to come online instead of going to the auditorium as the weeks went by.

It's interesting how this module is taught by three different lecturers: Prof. Chris for the first 6 weeks, Prof. Adi for the next three weeks, and Prof. Bressane for the rest. While it may be risky for most of us that some topics might be disconnected due to the different lecturers, it is consolidated in the revision lecture which I think is somewhat resolvant. A small thing that irks me is just the inconsistency of the ERD diagram notation used as we went to Prof. Bressane's lectures.

Tutorials - 1h
In my opinion, the tutorial sessions are pretty fast, mostly due to the low number of questions. However, across the 11 weeks you are to present exactly once on an allocated week. This is where the 2% participation comes from. You are not required to come for the rest of the weeks.

Assignments
The first assignment was 10 SQL questions to get some information which was okay, not too hard, not too easy. There was enough time to do everything.

The second assignment revolves around functional dependencies, such as finding the minimum cover and checking which of the functional dependencies are in BCNF or 3NF. They were all multiple choice questions, and again enough time to clear the questions.

Projects
Interestingly, this semester's project had no website-related parts on it. However, it's still in the regular groups of four that you can pre-make. The project was divided into two parts: making ER diagram + schema; and writing SQL codes for functions, triggers, and procedures. The workload is very fair for this one.

Exams and Personal Opinion
The midterm was a hit or miss because pretty much everyone knows SQL and is very likely to master only SQL, so the majority gets half marks and some breadcrumbs (yes I sucked at ER diagrams). However, on finals the questions are relatively easier and are pretty much doable especially the functional dependencies part, even most of them being easier than the assignment questions.

Overall, I enjoyed the module as I find this useful even in the long term. The workload was not as heavy as I thought, probably due to myself taking this along with CS2103... That being said, I would definitely recommend this as a DSA student and obviously for CS students as well.

Expected grade: A- (steep curve?)

CS2103: Software Engineering

Lecturer: Damith C. Rajapakse
TA: Taufiq bin Abdul Rahman

Assessment:
5% Participation
15% Individual Project (iP)
50% Team Project (tP)
30% Final Exam

Module Difficulty
Everything can be found in this website.

The workload below is measured weekly.
Lectures - 2h
The lectures are not compulsory to attend. But there is a post-lecture quiz every week but the last two. There are also some bonus questions for the quiz which can only be found inside the lecture (recording).

Tutorials - 1h
Compulsory to come for participation. It serves as a fair addition to what has been taught within the module.

Lecture Quizzes
Can be found from the textbook/website (textbook also available within the website). You can do this unlimited number of times, so there's no pressure on doing this. However, do try to get at least 70% correct. Sauce: Grade breakdown.

In CS2103, you'll learn how to develop a project from scratch and one from an existing one.
Individual Project (iP)
This one's from scratch, as seen on this repository. The project is divided into several levels where you are to do it incrementally over the first few weeks up to the middle of the semester. You'll learn basic Java things again like how CS2030 spends their first few weeks, as well JavaFX to deal with the UI. Near the end of the semester, you will also learn smoke testing and how can you test other student's work too. Peer learning ftw I suppose :)

The website is pretty comprehensive on explaining how this works in detail. So I'd just leave a quick impression that you can be very creative in your iP but manage your time well to prepare for tP and other modules, as it may be somewhat addictive.

Team Project (tP)
Basically half of your tutorial class will be your teammate. Yes, they have to be on the same tutorial slot as yours. The template code, as shown on this repository, is an existing project.

I suggest plan to take this module with your friends you're comfortable working with and make sure you all are taking the same tutorial slot. The pinnacle of CS2103's workload is basically this project that you have to work on for the whole second half of the semester. This also includes spending 1+ hours for your own team meeting to plan what to do for the week and all that.

Exams and Personal Opinion
No, this module is not just coding this and that in Java. There are theoretical stuff coming from UML diagrams and those things you'll see on lecture quizzes. That is what was tested on finals.

I actually didn't have to take this module if I were to look closely at my module requirements, but I felt that this might help me to some extent in the software engineering field, having a taste of it. However, I agree this module workload is huge, send help.

Expected grade: A-

CS3230: Design and Analysis of Algorithms

Lecturers: Arnab Bhattacharya and Prashant Naslini Vasudevan
TA: Tan Wei Liang

Assessment:
20% CA (3x3% + 10x1.1%)
40% Midterms
40% Finals
Bonus 4%+2% Optional programming assignments
Bonus 4% from forum participation

Module Difficulty
This module covers various types of algorithms, includes at least an example of it, and analyzes it further. Starting with the big-O notation, recursive algorithms (many examples), randomized algorithms (like quicksort), hashing, amortized time complexity, dynamic programming (knapsack), greedy algorithms (fractional knapsack, Prim's algorithm for MST), incremental algorithms (Ford-Fulkerson max-flow), linear programming (simplex), reduction and intractability, and how the previous topic boils down to 3-SAT and NP-hard/NP-complete.

The first half of the semester were mostly taught in CS2040/S, while the rest might be heard of but never been taught in detail before CS3230. The last part of this modules serves as an intro to CS4234.

The workload below is measured weekly.
Lectures - 2h
The materials are based on CLRS completely so if you have read the book before, this lecture is going to be easy. So, I'll just talk about the lecturers.

Arnab taught lectures for the first half of the semester. He explains the lectures in a rather moderate pace, and provides additional notes on a separate file. Personally, I don't find it useful now, but I believe it's a good reference for sometime later.

Prashant is much faster than Arnab on explaining the lectures. As other reviewers have said, the accent is noticeable, but I found no problem with that. Him being fast might be a problem for some students enjoying Arnab's pace. It could be also due to the materials being harder but with more content compared to the first half, those taking the module other than me will be the judge.

Tutorials - 1h
Not compulsory to attend. Serves a nice additional question bank I suppose XD

That's all. I don't have much to say about this but I'd like to personally thank Wei Liang for doing the post-tutorial recap which I found useful!

Programming Assignments
Optional, but just do it. If you can get the 6%, why not.

Exams and Personal Opinion
The midterms were okay despite the cohort scoring relatively low. The finals was easier though.

Personally, I found the module interesting although some materials might be hard. Some questions require an eureka moment to solve but isn't that the fun of doing proof questions.

CS1231 helps you to some extent (read: writing proofs) so I'd suggest you to learn writing one as well. Even if you know the idea of solving a question you still have to write it clearly and nicely.

Expected grade: A-

DSA3101: Data Science in Practice

Lecturers: Vik Gopal and Zhao Jingyuan

Assessment:
5% Git Assignment
5% Docker Assignment
10% Dash/Shiny/API Assignment
5% Datacamp
30% Group project success
15% Individual project technical report
15% Individual project journal
5% Project peer review

Module Difficulty
This module serves as an example of how one does a data science project as a team. The team consists of the frontend and the modelling or the backend team.

First six weeks, we learnt essential things like how one uses Git and Docker, then using API ft. Flask, then Shiny and Dash on R and Python respectively. Then we spent the second half of the semester working on the group project while guest lecturers take over and share their experiences in the professional world's data science lifecycle.

The workload below is measured weekly.
Lectures - 4h
Four hours and you end late at night. Attendance is not compulsory though but I found Vik's lecture nice to attend live as he's approachable as well for direct help!

However, once the group project starts, I found doing the project DURING the lecture slot to be more effective as that's the best time when the teammates can meet, and watch the guest lecturers' recording instead.

Group Project
The project starts with the group selecting their preference from some set of provided topics along with the role preference (backend/modelling, frontend, or neither). Next, the modelling team and the frontend team of the same topic preference are grouped together, forming a bigger team.

Each project topic has a problem statement, persona, data description, and what to present at the final presentation video. Each subgroup of the team are to abide the requirements stated.

After some weeks working on the project, there was an interim discussion with Vik to update on the progress from each subgroup of the team and some possible improvements on the status quo of the project.

In the end, a final presentation video explaining what the team has been working on to solve the problem statement is submitted along with the technical report and the project journal from every single member of the team. Peer reviewing other team also comes along.

Personal Opinion
No midterm, no final exam. You give everything you've got on the group project.

Overall, the module is well-executed and I had good experience with the module as I refresh myself with data science things. Good luck with everyone taking the module!

Expected grade: A-

EC1101E: Introduction to Economic Analysis

Lecturers: Ong Ee Cheng and Chan Kok Hoe
TA: Ng Jia Yeong

Assessment:
10% LumiNUS Quizzes
5% Problem Set Submissions
10% Tutorial Attendance and Participation
25% Midterms
50% Finals

Module Difficulty
This module serves as an introduction to both microeconomics for the first 6 weeks and macroeconomics for the last 6 weeks. Prof. Ee Cheng covers all topics about microeconomics: opportunity cost, PPF, demand and supply, price elasticity, price ceiling and floor, positive and negative externalities, welfare economics, different types of market, game theory in a nutshell (prisoner's dilemma). Prof. Kok Hoe covers the whole topic of macroeconomics: GDP, inflation, classical and Keynesian models on loanable funds and aggregate expenditure, money creation, banks, fiscal policies, currency trading.

The workload below is measured weekly.
Lectures - 2h
It's a flipped classroom where we learn most of the things in the prerecorded lecture video. The live lecture is simply recap of the topics taught for the week. As this module needs a constant review, I encourage anyone taking the module to actually come for it (unless you want a bare minimum score I guess you can skip it).

There were also lecture quizzes every week where you can only attempt for at most 3 times and they'll take the best one.

Tutorials - 1h
Attendance counts for participation. SOME of the problem set questions are discussed here, and the solution for the rest were given. Note that problem sets are compulsory to submit every 2 days before the tutorial in groups of two or three, graded by effort. Do try to read up the questions as well as they might provide context on midterms and/or finals.

Exams and Personal Opinion
Midterms and finals were both conducted on Examplify. They might not have recent PYPs but they did give some practice quizzes which I sadly found it little to no useful.

I took this module as an UE so I didn't care what will be the outcome of this module, but I find the content interesting as it is away from what I have been dealing with for a living, serves as a good refresher :)

However, if you really want to score well on this module, review the materials frequently. Don't just touch it during the lecture and tutorial timings, but also test the concepts through the provided active learning sections.

Expected grade: B

ST3248: Statistical Learning I

Lecturer: Lim Chinghway

Assessment:
8x2.5% Assignments
10x1% Tutorial Attendance
20% Midterms
50% Finals

Module Difficulty
This module uses An Introduction to Statistical Learning: With Applications in R (ISLR) as a reference textbook, specifically chapters 1-6 and 12. Thus, this module covers everything from those chapters: prediction vs inference, regression things (linear, logistic, polynomial, ST3131), KNN, LDA, QDA, k-fold CV, LOOCV, PCA, PCR, PLS, k-means, ridge regression, LASSO, subset selection, hierarchical clustering, etc.

The workload below is measured weekly.
Lectures - 2h+1h
Basically Prof going through the slides. I found his teaching clear and concise, so I had no complaints whatsoever. Content-wise, you can technically learn from just ISLR and still do well in the module. I personally didn't read the book at all, but I can tell there are two parts of the lecture: the theory and the lab, where we get to touch with R codes.

Tutorials - 1h
Done right after the 1h lecture. The tutorials are pretty doable in my opinion, as Prof will go through it live anyways. There is solution PDF given, but he does have one or two things to comment on with regards to the question.

Assignments
The assignments are taken from one of the tutorial questions. This usually involves R coding, and explaining findings from our reports, be it a plot, a model fitting result, etc. There is a 4-page limit on your assignment report, so make sure to manage space well in your answers while still keeping the content clear and complete.

Exams and Personal Opinion
Tricky but I love it. Both exams start with 10 T/F statements where you can only explain the reason when you think it's false (otherwise can only say it's true). The rest of the questions are similar to past year papers, where you do things like proving questions or explain the model in question context, or math stuff like we see on DSA1101 and ST3131.

I might not be in my best state when learning this module, but I found Chinghway's teaching nice and clear, so I guess it shall stick on me for longer than I thought.

Expected grade: A-