My experience

This is my experience in NUS CS throughout the 4 years. I went in as an Information Security student, transferred in year 1 to CS and graduated as a CS student.

For those who want to see my timetable schedule, skip to the end here

Before the start of school

Mods Taken

  • CS1010X Programming Methodology
  • CS2030 Programming Methodology II


Before talking about the lessons learnt, let me share my journey in NUS Computing.

My journey started during My NS, I took an online course DEV330x: Introduction to Python: Creating Scalable, Robust, Interactive Code (Easier than CS50 because I legit could not understand the content). Shortly after, I enrolled in CS1010X Programming Methodology during iBlocs under Prof Ben and Prof Tan.

It takes 1 full semester before the start of school. When I took it, it covered CS1010s content with a little bit of C programming. Frankly, it was the best decision I have made during my time in CS.

Having the full 6 months to actually grind the content of CS1010X really helped me understand some of the harder concepts like recursion, higher order functions and pointers. There were days were I spent the entire day looking at the content because I really could not understand it.

Although it was tough, I really enjoyed the process of learning and understanding the content.

Halfway through CS1010X, the applications for special terms opened up and I took the chance to apply for CS2030. There was an acceptance process and I was lucky to be accepted to take CS2030 in the special term.

Although the special term lasts 6 weeks, it really helped that I had friends who took the course with me. Through them, I learnt the content much faster and learnt more from them than the lectures themselves.

It was here where I was convinced to switch to Computer Science instead of studying Information Security. The modules were similar and in Computer Science, I have the flexibility of choosing other specializations which I wanted to study for.

Note: Information Security students will have a way easier time getting the modules from my experience compared to CS students, especially for popular ones like IFS4103 Penetration Testing Practice and IFS4105 Digital Forensics.

I also took part in Freshman Orientation Camp, however, it clashed with my CS2030 classes and I had to skip the class to attend camp. The camp was quite fun and there were many activities to do, I really recommend it if you want to socialize and make friends before the start of semester.

Note: Special Semester classes are paid (800~900 SGD per module) and are not covered by the tuition grant, however, you can pay them with $$ from your PSEA account.

Lessons Learnt

  1. Taking CS1010X before the start of school really helped me understand not just the content of CS1010X but also programming as a whole.
  2. Camps were a great way to socialize with others and make friends.
  3. Do not go for camps that clashes with classes (if possible), there were other camps available that did not clash with classes.
  4. Taking up an easy programming course before the start of school really helps with the foundation.

Year 1

Mod Taken

Semester 1:

  • CFG1002 Career Catalyst
  • CS1231 Discrete Structures
  • CS2040C Data Structures and Algorithms
  • CS2107 Introduction to Information Security
  • GER1000 Quantitative Reasoning
  • MA1521 Calculus for Computing
  • PLS8002 Cultivating the Self

Semester 2:

  • CS2100 Computer Organization
  • CS2105 Computer Networks
  • GEQ1000H Asking Questions
  • IS1103 Ethics in Computing
  • LAJ1201 Japanese 1
  • MA1101R Linear Algebra I


To facilitate the change of major, I took courses which were relevant to Computer Science. As I was afraid of my CAP tanking, I took CS2040C Data Structures and Algorithms to replace CS2040S when I transfer to Computer Science eventually. I chose to take CS2040C before transferring course as i would have an easier time coping in the course with students who are not majoring in computer science.

Taking CS2107 Introduction to Information Security was also a great decision as I realized my interest in Information Security. I realized that they were created by a NUS Greyhats and I joined them towards the end of Year 1. This made me want to stay as information security specialization as I wanted to learn more about it.

GEQ and GER were preallocated to me in Sem 1 and Sem 2 respectively.

This was also the semester to plan on which specializations I wanted to take in order to get the most out of double mapping as possible. IE: CS4239 which I took in my future semester counts towards both Security and Software Engineering specializations. These kind of modules allows you to get specializations without with a lower MC count.

During the holidays from Year 1 to Year 2, I took part in Orbital (Apollo Level) to try and make a game out of python entirely with a teammate. Although I was very happy with the outcome of the project. If I can re do it again, I will rather make it in Unity instead and improve on the game mechanics and other parts of game design instead. (I spent most of my time making the core functions of the game like the menu design tools, how to load in the sprites, etc)

Towards the end of Sem 2 it was the COVID semester where everything was online. The mods were in chaos and we had to study for the exams on our own. Life was tough and I was not able to cope well with the change. Thanks to COVID S/Us my mods were not adversely affected.

Lessons Learnt

  1. Take more GE/SUable mods in Year 1 to ensure that I can SU them if I do badly.
  2. I did not study as hard as I should for LAJ1201 as I should LAJ1201 is full of smurf (My Copium).
  3. CS2100, CS2105 and CS2107 were build ups to CS3235 which I will want too take eventually for my Security Specialization.
  4. PLS8002, CFG1002 are S/U by default so I took it just for the extra MC Count.
    • For more S/U able mods, you can check out my collated list here
  5. Pick an orbital project that goes in the direction of what you want to learn.
  6. For those who want to take a similar route and change course, remember to do it near exam week (otherwise you will have to wait 1 more semester to change course).

Year 2

Mods Taken

Semester 1:

  • ALS1010 Learning to Learn Better
  • CS2101 Effective Communication for Computing Professionals
  • CS2103T Software Engineering
  • CS2106 Introduction to Operating Systems
  • LSM1306 Forensic Science
  • ST2334 Probability and Statistics
  • CS4238 (Audit Unofficially)

Semester 2:

  • CS2102 Database Systems
  • CS3235 Computer Security
  • DYOM1401 Machine Learning In Practice
  • ES2660 Communicating in the Information Age
  • GES1035 Singapore: Imagining the Next 50 Years


  • Student Internship Programme (SIP) at Shopee Pte Ltd


In year 2, the COVID semester continues. I took the final prerequisite to CS3235 (CS2106) and took CS3235 in the second semester to start clearing my information security modules.

In CS, there was also a Science requirement where every CS student have to take a relevant science module as part of our graduation requirements. I chose to take forensic science to fulfill that requirement. I am not sure if it is still eligible to fulfill the requirement now, but if it is I definitely recommend it as it is a very interesting module.

In the second semester, everything was slowly moving back to school again as the COVID situation was getting better. I saved an S/U for ES2660 as I was not confident in my ability to write essays. However, luckily for me, I did not need to use it.

CS2102 (not a requirement for me) really make my cap tanked and I was unable to S/U it. However, I felt that it was useful for me further down the line as learning how SQL worked helped me in many of the projects which I had to undertake in the future.

I also took on an internship during my year 2 holidays. This internship is the first real “job” that I have taken. I really wish that I could have visited the office more often as it was really nice. However, due to COVID restrictions, I was unable to do so.

Lessons learnt

  1. There is no need to save too many S/Us after year 1 as there were not much modules left to SU anymore.
    • Please check how many modules you have left to S/U before saving the S/U for it.
    • Spoiler alert: I end up not using any of the S/Us that I have saved
  2. Taking an early internship not only helped me with my portfolio but also helped me understand the concepts that I have learnt in school more effectively.
    • Communication is very important between you and your colleagues and your boss.

Year 3

Modules taken

Semester 1:

  • CS3203 Software Engineering Project
  • CS3219 Software Engineering Principles and Patterns
  • CS4239 Software Security
  • GET1031 Computational Thinking
  • CS4238 Computer Security Practice (Dropped in week 2)

Part time internship during semester

Semester 2:

  • CS3230 Design & Analysis of Algorithms (COMP 550)
  • CS3244 Machine Learning (COMP 562)
  • GE1704 Geog Exchange mod (MASC 101)
  • POLI 100 (Some 2k Pol Science mod I cant rmb)


  • Internship at DSO National Laboratories

Start to look for FYP Projects to take

My experience

The first semester is the hardest semester of my life. Taking 3 project modules with a part time internship was definitely not an ideal situation on my side. The workload for CS3203 was heavier than expected on my side. I was also taking CS3219 and CS4239 at the same time which was a bad idea.

I spent 1-2 days on the stuff on my part time internship every week. Most of my time other time was spent on CS3203 with some intermittent time in between on CS3219 and CS4239.

The tutorials for my GET was mostly done 1-2days before the tutorial. Coming from CS background, the tutorials were mostly understandable and I made code snippets to help me solve the questions instead of computing them manually.

After the hard grind in semester 1, I was rewarded with an exchange program in semester 2. This was a very good lesson learnt as well as a life changing experience.

I had a very close group of friends whom we share different experiences together and traveled around. It was also excellent character development for me as I learnt to be independent and it was really a test of my character.

We went on many trips and had a wide variety of experiences. I came back just in time to start my internship at DSO National Laboratories for my 2nd SIP.

Lessons Learnt

  1. Do not take 3 project modules in 1 semester with part time internship.
  2. Choose your teammates wisely
    • I was lucky to have good group mates for the most part.
  3. Go on exchange, it is a great life changing experience.
  4. Take a later internship to spend more time on exchange.

Year 4

Modules Taken

Semester 1:

  • CP4101 BComp Dissertation (FYP)

  • CFG1003 Financial Wellbeing

  • CS3103 Computer Networks Practice

  • CS4225 Big Data Systems for Data Science

  • CS4226 Internet Architecture

  • CS3243 Introduction to Artificial Intelligence (Dropped)

  • CS2107 TA

Semester 2:

  • CP4101 BComp Dissertation (FYP)
  • CFG1004 Financial Wellbeing
  • CFG3001 Career Advancement
  • CS3223 Database System Implementation (Dropped with W Grade)
  • GEH1034 Clean Energy & Storage

My Experience

My FYP started a little earlier during the middle of my internship. It is a Software Development project to make a program to make learning Python Easier.

I also found CFG1004 about investing and budgeting. In order to take it I have to take CFG1003 (0MCs) CS3103 and CS4226 completes my networking specialization. I wanted to take CS4225 as it was a relatively more relaxed module and to complete my database specialization.

However, in semester 2, I wanted to focus on my FYP as my CAP was at stake of dropping out of FCH. As a result I dropped CS3223.

CFG3001 and CFG1004 were surprisingly useful for me personally. GEH1034 was also very interesting and the prof was very passionate about it.

It was a relatively slacker final semester where I focused on my FYP and chilling before graduation.

Lessons Learnt

  1. If you want to graduate 1 semester later, please leave one of your GEs to the final semester.
    • I’ve heard that SoC can let you graduate once you have cleared your requirements and might not be able to stay another semester.
  2. Take CFG1003 and CFG1004 if you are interested in budgeting and investing.
  3. For those who were taking final year project, there is no need to be TOO stressed about the result.
    • Just do your best and the result will come.
    • I was over worrying about my FYP and it was not worth it.
  4. I should have taken more useful mods like Parallel Programming and other algorithms related module to learn more about the field.

General Lessons

Note that these is what worked for me. It might not work for you and you should find your own way of studying if that is the case.

  1. Read module reviews before taking them.
    • Try to look for similar content and have a little taste before actually taking the module
  2. Join CCAs to socialize and make friends.
    • Even though school is tiring, finding friends to share the pain together will make it more bearable.
  3. More time spent on studying does not mean better results
    • This is especially true for me as I am a slow learner.
    • I need to re do the same thing a few times to understand fully what is going on.
    • 12 hours of studying with 4 hours of sleep is not as effective as 8 hours of studying with 8 hours of sleep.
    • Don’t just read slides, do practices with questions from the content to train your brain to recall.
    • For programming related modules, do more practices and get familiar with the different types of questions.
  4. For modules with not much past year papers / questions.
    • Make quiz lets to help you remember the content.
    • Re do tutorial questions and understand the concepts
    • Try to think of other applications of the same question
  5. Mark deadlines down early
    • We might lose track/forget about them if we do not mark them down.
  6. University is not all about studying, sometimes we just have to have some fun and unwind.
    • Go out with friends, play games, watch movies, etc.
    • Do not overwork yourself and burn out.

My Schedule in SoC

Pre NUS (8 MCs)

  • CS1010X Programming Methodology
  • CS2030 Programming Methodology II

Year 1 Sem 1 (23 MCs)

  • CFG1002 Career Catalyst
  • CS1231 Discrete Structures
  • CS2040C Data Structures and Algorithms
  • CS2107 Introduction to Information Security
  • GER1000 Quantitative Reasoning
  • MA1521 Calculus for Computing
  • PLS8002 Cultivating the Self

Year 1 Sem 2 (24 MCs)

  • CS2100 Computer Organization
  • CS2105 Computer Networks
  • GEQ1000H Asking Questions
  • IS1103 Ethics in Computing
  • LAJ1201 Japanese 1
  • MA1101R Linear Algebra I

Year 1 Sem 2 Special Term (4MCs)

  • CP2106 Orbital

Year 2 Sem 1 (22MCs)

Year 2 Sem 2 (20MCs)

Year 2 Holidays (6 MCs)

Student Internship Programme (SIP) at Shopee Pte Ltd

Year 3 Sem 1 (20MCs)

Part time internship during semester

Year 3 Sem 2 (Exchange at University Of North Carolina At Chapel Hill) (16MCs)

  • CS3230 Design & Analysis of Algorithms (COMP 550)
  • CS3244 Machine Learning (COMP 562)
  • GE1704 Geog Exchange mod (MASC 101)
  • POLI 100 (Some 2k Pol Science mod I cant rmb)

Went on many trips :D

Year 3 Holidays (6 MCs)

Student Internship Programme (SIP) at DSO National Laboratories

Year 4 Sem 1 (22 MCs)

Year 4 Sem 2 (20 MCs)