NUS Module Reviews - Y1S1

Major Mods

CG1111A

This was the 1st ever Uni mod I went in my entire NUS. On Week 1 Monday 9am, I went into my 1st ever lab with no preparation whatsoever. And honestly, its a great module that teaches concepts which I feel can be quite useful if you are planning to do Electronics & Sensor Projects. It gives decent exposure to a variety of sensors and components, especially those which are not as likely for someone to self-learn like Op Amps and Comparators.

This mod mainly has 3 parts: Lab Sessions, Quizzes, and mBot Project.

Lab Sessions happen for the 1st half of the semester. Each Lab Session you get exposure to a new component and complete a variety of tasks. 1 Lab Session could be teaching you how to handle LEDs. The next could be investigating the response time of the LDR, or making an Op Amp/Comparator Circuit. These are honestly quite fun.
I generally did 3-4h of prep work for 2 lab sessions each week. This includes reading up on the content (1h), and preparing the Excel formulas & Report Format(1-2h). During the Lab session, if you finish early (I could finish some of the labs in 1-2h) you can leave ahead. That said, another valid strategy is to do the prep work during the lab session itself.
1 good tip for scoring is to ask your TAs for help. They would generally know the answer to some of the questions (eg. what are the sources of error) so they could better guide you on how to score for the lab report

This mod has 2 quizzes, 1 on Circuit Analysis/ Op Amps and 1 on other components and sensors like PMDC Motors and LDR. The Quizzes are what might kill people for this mod, many screw up in quiz 1 (median is 7/12) and do better for quiz 2. The quizzes are quite doable with the right practice though.

And finally, the mBot Project. This was a really fun project where you get to put your knowledge to the test. Though to be very honest, it wasn't really the electronics work but the coding, calibration which took up the most time. The workload for this varies, but I think our team spent about 2 sessions of 3h each outside the typical lab hours to fine tune our IR sensor (which didn't really work) and 1 last run to improve performance.

Some goated tips include

  1. 1st thing to do is to come up with the schematic. This sped up our work by quite a fair bit. With the schematic
  2. 2nd thing to do is to structure the code and delegate tasks. They do give a sample template but feel free to structure it whatever's the best
    1. KNN for colour detection. This is a must have (its not even trying to wayang, its just that good and saves so much time)
    2. If you have experience working with Git for collaboration, use it. It allows you to more effectively collaborate, with the branch and PR system. That said I know people who have done the robot entirely solo so it is possible, so pick the style that works best for you.
  3. Make sure the construction of your robot is sturdy and solid. Most importantly
  4. Start on your report early, include as many learning points as you can, so that you won't need to rush it after your graded run.

In the end I was satisfied with our run. We were not the fastest (we probably set the delay too long for colour detection but it was for reliability so all is good). And I had fun during the project. It is definitely a doable project, so don't be intimidated and have fun!

Expected Grade: A to A+ (Hey I full mark the individual portion)

CS1010

Taken in: AY 23/24 S1
Lecturer: Prof Ooi Wei Tsang

This is not really a review, but more of some thoughts and observations I had (some people I knew had similar ideas, so I'm sharing them for people to get a better idea of the course)

General Thoughts

I personally don't agree with the way the course was taught. The way I felt CS1010 was being taught is that the prof teaches you the basics, and then throws you problems/ examination questions which you don't have the rigour for. This could really be demoralising to some because you are trying to solve problems that you don't have the framework to solve. (There are exceptions, those who came in without prior experience or proper training and pass all 5 questions easily)

That said, I can partly understand why this was done. The cohort has varying levels of experience, eg. poly students who drop their exception to do CS1010 (it's a good move, CS1010 is more rigourous at least from what i heard), H2 Computing Students etc. There is a need to give harder problems to differentiate the students more. I just don't think a true intro to programming course should be so tough for beginners.

I have heard many of my friends get Cs and Ds. Even those with some prior experience (from poly, or from robotics with prior experience) were getting B+s, so do prepare an SU for this just in case.

Strategies

I do think its possible to work hard to get an A though, you just need quite a fair bit of dedication (or prior experience in the right areas). There are some things that are not taught which helped me immensely.

A lot of people I knew screwed up memory management. DO NOT SCREW UP memory management. I personally feel it is quite possible to get the marks if you are very aware of how memory works, and remember how to malloc and free. For index out of bounds error, just make sure to learn to debug, eg. print indexes which cause this error.

The missing pieces that CS1010 doesn't really teach you are simple data structures and algorithms. If I were to say which ones helped me, it would be graph traversal (mainly DFS), searching (edge finding binary search), sorting (insertion sort, but unexpectedly also merge sort, quick sort).

Personally, I treated each recursion problem as a DFS problem, and that made it much easier to solve. I don't agree with thinking about recursion in the "wishful thinking" mindset, but more of in the sense that with each recursion call, you are making a choice of some sort (eg. to go left, go right, up or down)

Merge sort and Quick Sort is not tested in the CS1010 syllabus, but the important concept used in 1010 is not the sorting itself, but the way they point to the array. For example, using a left and right index for quicksort, or knowing how to split a problem in half and putting it back together. These would probably help in CS1010 exercises and to build intuition. While we are at it, just also learn simple algorithms for calculating prime numbers, finding max and minimum, etc.

Time complexity and analysis is a slightly underlooked topic but it is indeed very useful (especially for CS2040 probably), there are past tricky questions on time complexity in finals and the PE

Do not overlook midterms and finals. I personally screwed up finals quite hard and that costed me quite badly. It might be easy to focus on the 3 practical examinations since they are indeed quite difficult, but finals has the highest percentage. Like seriously aim for 60/60 or 65/80 (sounds unrealistic, until you realise that a fair bit of questions are just tricky and not hard, you just need to read very carefully).

Conclusion

I do not think this is a badly taught course, the base concepts are definitely useful, especially if you have not touched C before (not C++, C). I still recommend people to take it if their foundation is not strong/ they don't have to overload/ rush. I just feel that if you want a true intro to programming, you should probably work up from some simple online tutorials, do some leetcode on graph questions, then go to this.

You have to set expectations and be prepared to SU, but you have to work hard for it anyway because the concepts are indeed very useful. A toxic combination...

Expected: A/A+
Actual: A (78%, average 4.2/5 questions solved per PE, midterms 50+/60, finals 45+/80)

Math

CS1231

Taken in AY23/24 Semester 1
Under Prof Wong Tin Lok

Assessments:
Quiz 1: 25%
Quiz 2: 25%
Finals: 50%

Overall:
I went in this module expecting that I would need to SU it but it ended up being a very doable and enjoyable module.

Teaching Modes:
Lectures are not strictly necessary, as they mostly go through the derivation of the various theorems. They are good for understanding, but not exactly very useful. Lecture notes are relatively sufficient for usage and understanding of the various concepts.

Tutorials are where the content really shines. A lot of it has to do with my tutor Prof Tin Lok (who is also the lecturer). His teaching style might be slightly slow, and it might not be for everyone, but the way he visualizes the concepts and comes up with the methodology is very well done, and really helps clear up concepts. That said, do try to keep up to date with tutorials, this is a mod where the concepts builds on one another, and it is easy to fall behind.

Assesments:
The bell curve of the quizzes might be quite steep though. The mode of the quizzes are generally quite high, though there are attempts to shift it down to make it a more fair form

However, the (assesment) problems are not too hard, the general technique for this module is to unravel definitions, use various proof techniques as needed, and make sure everything, you know, makes sense. That said it varies from person to person, some just don't get discrete mathematics, while others find it easy.

Extra Practice:
I highly recommend doing the Tutorial Problems (and Extra Practices whenever posisble). Past Year Papers are also very good practice.
Do take note that our Syllabus deviates from CS1231S a fair bit in the later sections, so doing their tutorial problems for practice might not be as applicable (though it might help somewhat). Finding problems online might not be very easy to do too.

The key idea of practice is to build up/ identify problem solving techniques to handle computations and proofs. So this includes things such as "Use the definition of even integers to find an integer k where n = 2k", or proving set equality by proving the sets are subsets of each other (element method). These might not be so obvious without tutorials/ practice, and might be hard to figure out solely from reading lecture notes (which focuses more on concepts and definitions than problem solving techniques). Some techniques I practiced helped me a fair bit in the quizzes and final exam.

Consultations (and asking questions in general) are also good, they allow you to check your proofs and clarify doubts/ uncover misconceptions.

Conclusion:
Generally its a fun module! I would recommend anyone to take it if they are interested. Its an SUable mod, the skills can be applied relatively easily, and its a prerequisite to some important mods like CS2102 (database systems), CS3230 (analysis of algorithms) and CS3243 (Artificial Intelligence). I'll highly recommend CEG students to take it in Y1S1 whenever possible.

Grades:
Quiz 1: 21/25
Quiz 2: 24/25
Finals: ???

Expected Grade: B+/A-
Actual Grade: A, its definitely possible with consistent practice & understanding!

MA1512

This is a standard math mod teaching the various ways to solve Partial Derivative Equations. I can't really see how it would be applicable to me in the future, but it is a straightforward module that I think can be scored with grinding and knowing how to understand the question types

The general technique for this module is whacking the correct formula and technique. So practice really makes perfect. Tutorials and Past Year Paper Practice is generally sufficient, and the workload isn't too tough either, maybe about 4h a week of grinding for tutorials, with more grinding for past year papers.

Quizzes are relatively straightforward with some simple grinding and not being careless.
Tutorials are good enough for building experience and technique, but they are not strictly necessary from what I see. That said, as with most math modules, grinding makes things perfect, so it doesn't hurt.

The Exam was quite similar. That said, there were a few questions which are hard to spot the question type for, especially for the former chapters. It is doable but hard.

Overall a decent module, but it can be quite dry with no motivation to keep you invested.

Expected Grade: A- to A
Actual Grade: A+

NUSC/Common Curriculum Mods

EG1311

EG1311 is a module where you work in groups of 6 to construct a simple robot that completes an obstacle course.

I had prior electronics and Arduino coding experience, as well as Fusion 360 experience. This helped me content wise, as I could skim through the lectures easily.

The project itself is not too difficult, most of it could probably be done in 2 weeks. However, time might be spent on making it lighter/ more reliable. Reliability is king in this robot, I had friends who focused too much on weight and ended up not being able to get their robot to complete the obstacle course by the end.

I did decently enough on the quizzes, 15/15 for the Arduino and 13/15 for the CAD. I suspect this module is quiz heavy, and doing well in it is the most important.

Expected Grade: B+ to A-
Actual Grade: A+ (surprise)

GEA1000N

This is a module meant to teach the basic data literacy skills

This was the most disappointing mod for me. The content is disorganised and not really easily applicable. The exam questions require H2 Math grinding and knowledge in P&C and probability.

NUSC content doesn't appear very structured either. It is not easy to see the direct application of the content to a real world situation, and I can't find myself using Radiant/ R over tools like Excel (which was taught so that wasn't too bad) or Python.

The rest of the module is similar to the normal GEA1000, just that you can form your own groups.

Expected Grade: B+ to A-

NSW2001F

This is a relatively decent module. I took this module to escape from essays, since I did not want to immediately start writing essays in my 1st semester of university. This module had a variety of assessment methods outside the classroom, which was honestly quite fun.

This module consists of a few parts, which are the Discussions, and the Assessments.

The discussions mainly include the prof, or a group going through the pre-readings and discussing various concepts. The pre-readings are decent, they teach a wide variety of stuff, and some of them can be quite troll/ funny. The content might be isorganised, but there is indeed some semblance of structure here. Its generally a laid back session, with readings, and some interactive class activities like debates, writing things on the board and so on. A decent break from the rest of my mods. Its quite unfortunate that I couldn't really justify to myself to keep up with the pre-readings after the in class quizzes are done.
Speaking of in class quizzes, they are mainly memorization of the various points in the text. However, since I was looking for general ideas in the text and not

The assessments are relatively ok. We have a viva voce, a site visit proposal & report, and a group discussion. Group discussion is a relatively chill and simple PowerPoint presentation. We bring up various points for discussion, and engage the class with various activities. My group did a simple drawing activity where various groups in the classes drew what they thought a kampung was like, but there are ither activities like a debate. Viva Voce and the Site Visit are really where the bulk of the assessment are. You get to present on an article and on a site/event respectively. Generally these are quite doable, though I screwed up on my site visit proposal a fair bit. At least for Viva Voce, I spent some time brainstorming and consolidating points, and I managed to achieve a decent grade.

I generally like that this module encourages you to share more about your opinions (in fact, that is what our prof marked up). Its a relatively chill mod where you get exposure and some speed reading skills, a good primer for NUSC and a break from essays.

Expected Grade: B+ to A-
Actual Grade: A-