NUS: Year 3, Semester 2
Approaching the Endgame: Y3S2
As I embarked on what could potentially be my penultimate semester at NUS, I found myself navigating through some challenging and intriguing courses upon my return from Student Exchange Programme (SEP).
Among the courses that marked my path, CS3230 stood out as one of the most formidable core courses in the NUS CS curriculum. Additionally, I ventured into the realm of postgraduate studies with CS5224, a Masters course that required a successful appeal after the third round of CourseReg.
CS3230: Design and Analysis of Algorithms
Instructor: Diptarka Chakraborty, Steven Halim, Sanjay Jain
Course Review
CS3230 is probably the most challenging CS core courses. Though I performed decently in CS2040S, I still found this course very demanding and struggled with it. This course is indeed very proof-heavy and rigorous, and I would say competency in CS1231S translates more effectively to performance in this course. Additionally, math majors often have an advantage due to their familiarity with proofs. There are some mathematical calculations that can be daunting if you are rusty in calculus.
Don’t be disheartened if you find yourself performing below your usual standard compared to other courses as the grade distribution is typically right-skewed and most people score within a similar range. Concentrate on thoroughly grasping the fundamental concepts rather than fixating on your grades.
However, despite the challenges, it is very hard to fail this course as the professors are generally quite generous in the Continuous Assessment (CA) component, which makes up 40% of the course. Although it is extremely time-consuming (one has to complete 5 out of 6 written + programming assignments), it is still possible to achieve full marks for this component as there are bonuses for tutorial participation and lecture quizzes.
Do note that the course differs significantly between Sem 1 and Sem 2 depending on who is teaching, and the CA components will also vary. For AY23/24, Sem 2 was better as the content is more effectively taught (many people complained about the teaching in Sem 1). However, the trade-off is that the workload appears to be higher in Sem 2.
Tips
Textbook: The CLRS textbook is highly recommended. It is the holy grail for algorithms in universities all over the world, and it explains many problems, albeit in much more depth than required. It’s good practice if you can truly understand it, but some content is much tougher than what is required of you.
External Resources: Don’t limit yourself to the course materials. Try out other schools’ CS3230 equivalents. You can easily find questions and solutions in PDF format of the topics covered in CS3230 from other schools online, so take a look, especially at how they solve questions. I would say the key to this course is to be exposed to a wide variety of algorithms and learn how to tackle each. Of course, this is easier said than done, and even I still do not have the hang of it.
I would suggest exploring MIT’s 6.046J, which is the CS3230 equivalent over there. It is important to note that MIT renumbered their courses starting Fall 2022, so 6.046J is now listed as 6.1220J (and is also cross-listed with 18.410J, which is their math variant). However, you might not find materials specifically for 6.1220J, as MIT OpenCourseWare only has 6.046J archive. MIT’s curriculum is much broader and deeper, and the sequence of topics differs from ours, so it is okay to struggle with the given problem sets. Interestingly, I noticed that their exams include questions that integrate concepts from CS2105, CS2106, and CS2107, which is quite remarkable.
Performance
I was about 90th percentile for midterms. Results for finals was not released, and I also did not check my answers against the released answers.
Grades
- Expected: A-
- Actual: A-
CS4222: Wireless Networking
Instructor: Ambuj Varshney
You can find more information about the course here.
Course Review
CS4222 is generally considered to have a manageable workload, with tutorial questions being quite straightforward. The learning curve is not linear due to the wide array of wireless technologies covered, and the course becomes much more intuitive once all the topics are covered.
However, while the overall workload might be low, it comes in bursts. For my semester, there were three assignments and one project, all of which were to be done in a group. Therefore, choosing the right teammate is crucial. Assignment 1 is very straightforward and I wouldn’t really consider it an assignment. However, Assignment 2 and the project can be quite time-consuming, so it’s advisable to start early and understand the project. The project for my semester was quite tedious as they released the project extremely late and the due date was actually the day after our finals. Furthermore, we were required to use the provided sensor tags for all assignments and projects throughout the entire semester. This proved to be quite inconvenient as it necessitated either group meetups or allowed only one person to work on the project at any given time. This was due to the fact that conducting experiments or testing code was impossible without the sensor tags.
One common consensus was that it’s honestly hard to understand what you’re trying to take away from the course, as it’s quite different from other CS courses. While I understand that it was tough to go in-depth as it serves as an introductory module to wireless tech, everything was quite superficial as delving into the technicalities of wireless tech is actually very complex. Hence, the professor tries to cover more content-wise and the use cases, rather than the math and science behind it. The only math you’ll really be doing, I would say, is the Friis Equation and calculating power, voltage, and battery lifetime, which is pretty much physics. Understanding when to use the equation is more important, but the math is pretty straightforward as long as you are careful with the units.
Grades
- Expected: A-/A
- Actual: A
CS5224: Cloud Computing
Instructor: Teo Yong Meng
You can find more information about the course here.
Course Review
CS5224 is a master’s course, but undergraduates are given the option to take it as well, usually through an appeal process. It’s one of the few master’s courses that undergraduates actually take, as there are no prerequisites for it. I’ve always wanted to take it since I first found out about it in my first year. Do take note that you will only be granted enrollment if you’re at least a COM4 (Year 4 SoC student in terms of MCs completed) as there are not many available openings.
The workload for this course is relatively low, except for the group project part where you are expected to implement a SaaS product using AWS, a business case proposal, a video, as well as a poster. However, you will have half a semester to work on it, so it’s advisable not to leave it to the last minute. It would be beneficial to have prior experience in AWS, so consider teaming up with people who have extensive knowledge in app development and deployment.
You will be given an AWS Lab account to experiment with, which you will need for the assignments, labs (optional but good practice), and project. I found this to be the biggest advantage and I really learned a lot of stuff, which helped me in my interview as well.
There are only two assignments throughout the semester, and they are pretty straightforward and not time-consuming. However, it is difficult to score full marks as the marking scheme can be quite stringent. Scoring about 80-90% is no issue as long as you submit and answer all questions.
The quizzes were quite easy, and the professor takes the best out of two attempts for each quiz. Most people score full marks, but the first two quizzes actually proved trickier than the remaining four. Quiz questions are often just taken from AWS Solutions Architect exams.
For the finals, you are only permitted a single A4 sheet of paper, so be prepared to commit a substantial amount of information to memory. The questions can be quite intricate, often presenting real-life scenarios and requiring you to select an appropriate cloud approach or implementation, along with justifying your answer.
I would primarily recommend this course if you’re aiming to fulfil the level-4000 or above requirement for CS Breadth and Depth, and are open to undertaking a software engineering project. If your main interest lies in learning AWS, this course might not fully meet your expectations. Additionally, if your focus is on software engineering projects, consider courses under the Software Engineering focus area like CS3216, CS3217 or CS3219. The project in this course emphasizes more on integrating AWS products into your app and supporting your business case, rather than focusing on the fundamentals of software engineering and best design and implementation approaches. No software engineering principles are covered and you are expected to learn them independently.
Performance
I achieved full marks on all quizzes and, despite our group’s preliminary report being a bit under the median, we bounced back to secure the top marks for our final submissions. I landed right at the median for the first assignment and upper quartile for the second. As for the finals, I feel confident about my performance, although it’s challenging to gauge exactly where I stand in comparison since most people are well prepared.
Grades
- Expected: A/A+
- Actual: A-
ST2334: Probability and Statistics
Course Review
ST2334 is an introductory course in probability and statistics. The grading curve can be steep, as the content overlaps with H2 Math, and most students who enroll are from computing or engineering backgrounds, bringing a significant exposure to mathematics. The course has become more challenging recently, as exams are now conducted on Examplify, with a reduced emphasis on calculations. The rationale is that software can easily perform most computations, so understanding the underlying theory is crucial. Tutorials and past year papers may still place a higher emphasis on calculations, which often leads to the final exam’s difficulty being a surprise to many students. The finals in my semester were harder than expected as well.
Tips
- Practice Papers: It will be good to practice past year papers (source from seniors) and the sample papers provided by the professor. This ensures you know when and how to apply the formulas. Securing these marks should be a priority, as most people would get it right.
Performance
Grades
- Expected: A/A-
- Actual: A-
ST1131: Introduction to Statistics and Statistical Computing
Course Review
An introductory course covering basic concepts in statistics is relatively straightforward, although individuals without a programming background may need to invest more effort into practicing R. Personally, I found the content quite easy. However, some parts can be confusing as they attempt to emphasize R and separate from overlapping content in ST2334, which can make certain aspects less coherent. Bell curve is steep as it is still an introductory course and most people have strong mathematical/programming background coming into the course.
Performance
Got full marks for all the quizzes and tutorial attendance (as most people do). Scored upper quartile for both midterms and assignment 2.
Grades
- Expected: A/A-
- Actual: A-
CFG1004: Financial Wellbeing - Art and Science of Investing
You can find information about CFG1003 and CFG1004 here. This is a pass/fail course worth 2 MCs.
Course Review
Previously, CFG1003 was a prerequisite for CFG1004. However, now you can take CFG1003 and CFG1004 concurrently. This course is particularly beneficial if you are a novice or have limited experience in investing, or if you simply want to learn more about the fundamentals of investing and how to make informed decisions in financial planning. However, if your portfolio is already yielding returns of 10-20%, this course may not be necessary for you.
CP1008: Learning with Generative AI Tools
This is a pass/fail course worth 2 MCs.
Course Review
This course, in its first iteration, aims to teach students how to use AI tools to enhance their learning. It covers the principles, advantages, and disadvantages of current Language Learning Models (LLMs) and provides a fundamental understanding of how they work. As a computing student who is already proficient in using AI for my own learning and adept at prompt engineering, I personally found this course less beneficial. If you are currently just copying and pasting questions into ChatGPT and asking it to solve them for you, you might want to consider taking this course to fully utilize AI tools effectively.
Overall, I would say it is quite time-consuming for a 2MC course. So, take it if you are not tech-savvy and would like to upskill. If you are really interested in learning more about AI and Machine Learning (ML), IT1244 is a good course for non-computing students. You can find my review of it here.
Academic Summary
Grade Distribution
Grade | Number of Subjects |
---|---|
A | 1 |
A- | 4 |
CS | 2 |
GPA Analysis
- Semester GPA: 4.6
- Cumulative GPA: 4.68
My GPA is relatively stable at this point hence even though my semester GPA was lower than before it did not affect my overall GPA by much.