Skip to content

Instantly share code, notes, and snippets.

@benclmnt
Last active January 16, 2025 08:16
Show Gist options
  • Save benclmnt/9775770b0d94743fe26e3cd1d9c86da5 to your computer and use it in GitHub Desktop.
Save benclmnt/9775770b0d94743fe26e3cd1d9c86da5 to your computer and use it in GitHub Desktop.
NUS CS Planning

Module Planning

Here be some of my notes on how to plan your CS career (specifically NUS).

First things first, I encourage you to have your own module plan (say, in a Google Sheets). You can start with the suggested module plan, but they are quite generic and might not suit your personal goals (e.g. some advanced modules you'd like to take have prerequisites that are offered in odd semesters only).

Having your own module plan will also make you easier to include other non-academic activities too.

General advice

  • Take as many foundational (core) modules while you can. You never want to be left behind due to missing prerequisites.
  • You might not want to clear all GEs / IS1103 / ES2660 / Science module in your first 2 sems. These modules have relatively lighter workload, so it can give you more flexibility when your other modules are super demanding / you don't get certain modules that you want.
  • You only have 3 S/Us starting Sem 3. People usually spend these on GEs / IS1103 / ES2660 / Science module / CS2101 as other modules are not S/U-able anymore.
  • Explore, explore, explore. Join CCAs. Join communities. The plan here is to better understand what interests you and what doesn't. See also Tech-Related CCAs.
  • 💡 You can audit modules. Auditing means you get access to the courses materials, but you are prohibited from submitting assignments / joining exams. Good for course exploration! Just email the prof that teaches the module and ask to audit.

Module-specific advice

  • The easiest way to know more about a module is to browse reviews on NUSMods
  • GES1035/GESS1025 is CS/CU (pass/fail mod).
  • CS2103T has a group-of-5 project component. Find a group mate first. Teams need to be in the same tutorial slot.
    • ProTip: When you bid for this mod, make sure you spare 4MCs as CS2101 will only be added afterwards.
  • (Used to be compulsory before AY21/22) Software Engineering II
    • CS3216/CS3217 : Famous mods, but very high workload. If you love building products, this might suit you really well. CS3216 is about building web applications, CS3217 is on iOS development.
    • CS3281/CS3282 : Work on NUS Open Source Project
    • CS3203 : 8 MCs in 1 sem. Project in C++. You can choose your own triplets, and will be paired randomly with another triplet.
  • CS3233 (Competitive Programming) usually have people from big / trading companies come down to give a talk.
  • Project modules, such as CS3216, CS3217, CS3244 (ML), CS4350 (Game Dev), gives you an opportunity to present at STePS
  • CS Professors are generally quite decent in teaching, but some are better. The profs listed below is quite famous, usually for better teaching (and harder exams). However, I feel I learn a lot more from their modules.
    • Seth Gilbert: I took CS2040S and CS5234 under him. Super passionate about his module.
    • Cristina Carbunaru: I took CS3210 under her.
    • Ben Leong: Used to teach the famous CS3216/CS3217 module.
    • Soo Yuen Jien (a.k.a. Uncle Soo): I took CS2100 and CS2106 under him.
    • Ooi Wei Tsang: I took CS2030S under him.
    • Angela Yao: I audited CS4243 under her.
  • When choosing modules, I value a good prof (Look who are teaching this semester) more than the topics discussed. I can always enjoy a seemingly-uninteresting topic that is well-delivered but the other way around is much harder.

Specialization

While planning, it is generally ideal to know which specialization would you pursue. You should start exploring now and see what you like!

Disclosure: I've taken some classes from Database Systems, Parallel Computing, Networking and Algorithms.

You have a choice of 10 focus areas. Beware that some of these mods are only offered in 1 semester.

  • Algorithms/Theory: mostly pen-and-paper proofs,
    • Notable mods: CS3230 (core), CS3233, CS5234
  • AI:
    • Notable mods: CS4243, CS4246, CS4248
  • Computer Graphics and Games (I'm not too familiar)
  • Computer Security: I think you got to build your own CTFs
    • There's no other way than to finish (CS2105, CS2107) -> CS3235.
  • Database Systems: How is your data stored?
    • All 4k-level mods other than CS4225 needs CS3223 (only in sem 2).
  • Multimedia Information Retrieval
    • CS3245 is a great module. You got to learn how to build your own search engine. (think Google!)
  • Networking and Distributed Systems: how does the internet works?
    • CS4231 is really an algorithms class.
  • Parallel Computing: making use of multi-core chips.
  • Programming Languages
    • well, you got to learn esoteric languages, like Haskell and Prolog in CS2104 :)
    • I used to think "why would anyone do this spec". Now, I think at least everyone needs a high-level understanding of compiler (CS4212, YSC4230)
  • Software Engineering: by far the most popular specialization I think.

Tech-related CCAs

  • NUS Hackers. At least join their telegram channel
    • Hackerschool : teach useful stuff not covered in regular cs classes. Inspired by MIT's Missing Semester
    • Hack n Roll: yearly hackathon before the start of sem 2. Join for the freebies (swag and food) and a night of fun!
  • Google DSC: Tech for Good
  • Other CCA you might want to consider:
    • NUSSU CommIT: they have some training.
    • If you're into entrepreneurship or want to go NOC: NES
    • If you're into trading / blockchain / other fintech: NUS Fintech Society

Internship

  • Join Project Intern
  • During Y1 Summer, you might want to try Orbital (CP2106) or CVWO as a starter. Many CVWO alumni go on to intern / work at Facebook, Google etc. Although some CS seniors did internship during Y1, don't fret if you don't, you still have time.
  • Startups and MNCs have different hiring criteria, so prepare accordingly.
    • Use LinkedIn / Indeed / word of mouth to search for companies that might open an internship position
    • Startups look at your past projects. This means you need to showcase your side projects, e.g. website / app etc. They usually don't have technical interviews.
    • MNCs: Just grind Leetcode after you get a basic knowledge from CS2040. Usually easy-medium level of difficulty. They will sometimes ask general knowledge about database / network / OS.
    • MNCs open their application around September and closes around January. Startups usually open their application from around December.

Misc

Other things you might want to try during your undergrad:

  • Do an exchange (in which your whole sem is graded on a pass/fail basis). Make sure modules can be mapped to fulfill your requirements. (Pro Tip: Might want to take CS3230 on exchange 😄 )
  • Do an NOC to Silicon Valley (or Stockholm, or Israel, or Toronto) and work (paid) at a startup for an entire year!
  • Do an undergraduate research! You can take UROP or just email the prof that you like to research under and ask him if he can host you. Good for those who plan to do further studies!
  • Be a Teaching Assistant (TA): You are paid (quite handsomely) to teach. Most CS modules allows undergraduates to be a TA! It will also enhance your understanding. Also, a good way to build relationship with a prof.
  • Perform with some arts club (e.g, Cac+us)
  • Do an Overseas Community Involvement Project (OCIP)

Note:

  • As of this writing, if you plan to graduate with a First Class Honours, you need to have a GPA of 4.5 or above and pass the FYP (CP4101). Source
@benclmnt
Copy link
Author

benclmnt commented Dec 2, 2021

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment