Tag Archives: module

2014/15 Sem 2 Module Review

Below is my module review for Academic Year 14/15 Semester 2, my second semester in year 2.

CS3230 Design and Analysis of Algorithms

This module is one of the core modules for CS major. And it builds on top of CS2020 (or CS2010). Most of the algorithms covered in CS3230 are already taught in CS2020. The additional work is to “analyse” them or “design” some algorithm that fulfills certain requirements. In addition to giving algorithms, complete answers for this module require certain amount of proving, including correctness, termination, and analysis of running time. Apart from the usual graph algorithms, this module also touches on complexity classes (NP, NP-C, etc), amortized analysis on running time.

Overall the concept is not exactly new if you have some programming background, knowing what is NP and amortized analysis. Questions that involves proving can be challenging if you do not have a solid mathematics/discrete structure background.

Midterm, final, assignments and tutorial participation are counted towards the overall grade. If you can solve the assignments and tutorial questions independently, exams should not be a problem.

Expected Grade: A

Actual Grade: A

After thoughts: This is no surprise for me.


CS2103T Software Engineering

Again this is one of the core modules for CS, and lots of people are taking this (including people from ISE and CEG). The concepts are useful and can be readily applied to software projects. The module covers all phases of software development cycle, including requirement analysis, design, implementation and testing. I learnt a lot of useful knowledge on how to do software engineering properly, such as the various patterns and testing techniques.

Project makes this module really hard. As our tutor put it, the project can be done easily in a few weeks by one person, but the team-based nature makes it hard. Coordination and communication within the team can cause a lot of delays and extra work. From a web and mobile developer background, I find it troublesome to “code from scratch” without using any frameworks. Our team generally completed the software but it was not polished enough due to the delays in development.

The final and the participation marks are not hard. You need to make sure you can understand the concepts taught and apply them to simple cases.

Expected Grade: A-

Actual Grade: A

After thoughts: Well, I got a grade higher than I expected. I guess the lecturer was just scaring us when he said “we will not get the deserved grades unless we do well in finals.” after the product demo.


CS2101 Effective Communication for Computing Professionals

This module is paired with CS2103T. It serves to enhance our ability to communicate with others as an IT professional. The whole module is graded based on continual assessments. It covers basic rules and principles in communication and writing, as well as some areas that are important for the IT field, such as interviews and software project presentation.

Consistent effort is needed for this module as you are constantly graded for various components. The components themselves are not very heavy. A lot of work is in the form of writing and talking, so it is more of an English module than a CS module.

Expected Grade: A-

Actual Grade: B+

After thoughts: B+ is a bit lower than my expectations. From the way the tutor communicated with us, I thought we were doing fine and deserve at least a A-. Everyone in my group seems to have gotten B+ or lower, so maybe it is just how this module is graded.


CS3243 Introduction to Artificial Intelligence

This module is first AI module that I am taking. It covers some basic elements of searching techniques, logic and uncertainty. A lot of focus is on understanding the various algorithms, such as A*, RESOLUTION, UNIFICATION, MINI-MAX. It certainly taught me a lot of new concepts, though some of concepts (logic) seem to overlap with earlier modules like CS1231.

The project is about implementing a learning agent for Tetris. The concepts used for the implementation is not directly covered so the teams has to do research on their own. Luckily in our team we have someone who is good at researching. He did a lot of work in implementing the learning algorithm. The lecturer required the implementation to be explicitly designed for large amount of data but I don’t feel that we are good enough to show that. We were pretty satisfied with our result that can clear about 20k lines on average. So we did not really put in too much effort to optimizing the running time.

The final and the tutorial questions are similar in terms of the difficult level. Understanding the concepts, especially the mechanism of various algorithms is important in answering the questions.

Expected Grade: A-

Actual Grade: A-

After thoughts: The grade that I expected. I can say that I understood the concepts well but the midterm and the project was not well done so A- is pretty normal. It turned out we did not score very well for the performance of tetris agent, in fact, we got zero marks for some test cases. We were expecting at least a decent performance since we have a “good” average of more than 20k lines cleared. Maybe the requirement for this project was much higher than we expected.


CS3882 Breakthrough Ideas for Digital Markets

This module is one of the less known and less popular modules, only about 10 students took it this semester. It focuses on generating ideas for digital products and transforming the idea into a prototype. A lot of interesting concepts were taught, like design thinking and patenting.

Half of the work for this module come from the individual reviews of the concepts taught and group effort on proposing and refining the idea. Then after deciding on the idea, the teams are required to develop a prototype and do a final presentation with demo. The prototype is mainly used to demonstrate the feasibility and the appeal of the idea, so only minimum amount of coding is needed to develop the MVP. Overall this module does not take up a lot of time. It is quite useful for people who are intended to do a start-up. The professors for this modules are very helpful and they have good experience in the IT industry.

Expected Grade: A-

Actual Grade: A

After thoughts: A little higher than I thought, but no surprise. It was a very small class size and there had to be some people who score A. So even though our project was not fantastic, it proved to be better than our classmates.

2014/15 Sem 1 Academic Module Review

Below is my module review for AY2014/15 Sem 1:


CS2105 Computer Networks

The concepts are intuitive, just that quite a lot of details need to be memorized for the tests.

The programming assignments take time to implement and more time to debug but not very hard if you have some background in Java.

For final, my revision focused too much on computations and procedures and did not memorize all small details so the MCQs are hard for me.

Expected Grade: B+

Actual Grade: B+


CS2106 Introduction to Operating Systems

The concepts are intuitive, not a lot of details like CS2105 but a lot of procedures.

The programming assignments are the same difficulty level as CS2105, takes some time to implement and debug, but not hard in nature, you can pick your own favourite language.

The final this time is 19 questions, each testing on one procedure, with the exception of 1 question which is on the concept. Overall I think the final was manageable if you understand the concepts well enough.

Expected Grade: A-

Actual Grade: A-


ST2334 Probability and Statistics

The concepts are similar to what was taught in JC H2 Maths, just deeper. For topics on probability and hypothesis testing, there are some derivations and table lookups which are not taught before but other than those, there are not much new things.

For final, majority of questions are about computation, about 15% of questions are about concepts, which I could not recall because I did not revise them. Other than that, the questions are okay.

Expected Grade: A-

Actual Grade: B+ Mostly due to poor performance in the finals and of course bell curve god!


LSM1302 Genes and Society

As a student with O level biology background, I took this module as one of my core science module, not GEM/GEK. However I did not really study until the reading week because… Actually I have no idea why I was not studying this module, the lectures are actually quite interesting (which I found out later). After going through all the webcasts in one week, I was quite familiar with most of the concepts. The final tested on both concepts and examples. I did not study examples in depth so I lost some marks there but I did score above average.

The projects are not closely related the the concepts so basically the marks you get depends on how much effort you put in to them.

Expected Grade: B+

Actual Grade: B+


LAJ1201 Japanese 1

This should be the hardest module that I have taken in NUS so far in 1 and half years. It has three tutorials per week, a lot of homework and a lot of preparations needed to be done before the tutorials. I spent about an average of 2 hours on homework and preparation everyday. And even though I considered that as a lot of effort, I still did not do well for the continuous assessments like the quizzes. So I guess the expected workload from the students should be higher than 10 hours per week (excluding lecture and tutorials).

There are people in this module who obviously have prior experience in Japanese, so as someone who started from the scratch, the bell curve may not favour me.

Expected Grade: B

Actual Grade: B

New Sem!

Today is the official first day of my second semester as a CS undergrad in NUS.

I am happy that I have secured all my modules without much trouble unlike many others who have to appeal or send emails to get their modules.

I am also glad that for all my modules, there are some friends who are taking together with me. I used to like doing things alone but I feel that having the correct friends may be a better experience.

As I have planned, I would shift more focus onto studies and only a few other activities.

I hope I could learn something useful from all the modules,  but not study hard just to get good grades for the modules.

Taking easy modules to get good grades or being forced to take hard modules because they are  are core modules, these are not the correct mindset.

What is the point of going through  university if you do not come out as a better person in terms of knowledge and skills that you want?

Therefore, I believe choosing a module is like picking a skill that you want to equip yourself with, so that you are better than others who are not taking this module. That is how people become specialized in certain fields and achieve something others could not.

Back to main track, I believe all the CS modules would be able to give me better understanding of different aspects of computer science, and that is exactly what I want to know the most.

Computing Club, on the hand, can offer me chance to develop something that is useful for the student population and the same time, improving my technical skills and inter-personal skills.

A great semester awaits ahead!