Posted on

NUS Computing Review, Full Courseware Package & Module Bundle

Life as a Computer Science student

Developing cutting edge applications. Studying the latest developments in AI and machine learning. Working with industry leaders in software, social media and gaming. These are just a few of the opportunities you’ll have as a Computer Science student at NUS.

With deep connections at leading companies, NUS offers a truly immersive Computer Science education. We pride ourselves on providing the strongest technical foundation available at any institution in Singapore, across all sub-disciplines of computing. Although our programme is well grounded in theory, we place a special emphasis on skills that matter to employers. As part of your education, you will build and develop applications, while learning the theoretical foundations of Computer Science that make it all possible.

The end goal of our Computer Science programme is to prepare candidates for a rewarding career as computing professionals. Our graduates have gone on to illustrious careers at leading companies, from Silicon Valley startups to Wall Street banks. Our project-based approach means that you will build a portfolio that you can showcase to employers to demonstrate your achievements as a software developer and engineer.

A career in Computer Science gives you the opportunity to build the future. Your NUS education provides the foundation you need for a career at the cutting edge of technology.

Head over to our Shop for more module content!

Posted on

NUS Computing Module Review: CS1020E Data Structures and Algorithms I

This module builds upon the basic programming knowledge gained in CS1010E. C++ is used. It introduces the concept of Object Oriented Programming (OOP) in the first half of the module, together with its associated technicalities such as inheritance and polymorphism. The second half of the module touches on data structures such as linked lists, stacks and queues. There is also a small part of the module given to Big O notation (analysis of algorithms), exception handling and recursion.

Although the module is webcasted, it is probably a good idea to go for the lectures as the content is covered quite quickly, meaning that you will find yourself very far behind all of a sudden if you miss a couple of lectures. Some of the initial concepts regarding OOP might also require some getting used to. Personally, I found the first half of this module much harder than the concepts covered in the second half, as the concept of OOP was very foreign to me. Prof Tan will go at a fast pace as the amount of content he has to cover is quite a lot.

This module also has a pretty serious workload, as there is one take home lab every week. However, it is alternated between graded take home labs and non-graded take home labs. There are 6 graded take home assignment in total, each 1%, with the last graded assignment an extra chance for people who did not submit one of the take home assignments to score the 1%. There are also 4 sit in lab assessments, 5% each every two weeks. However, only the scores of the 3 best labs are taken. It is possible to score full marks each of the sit in labs, and to score an A for this module you would probably need to get somewhere close to that.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: IT1006 MATLAB Programming for Mathematics

This course is the fundamental programming course using the MATLAB software, which is used in a wide range of mathematical applications. The first half of the course is similar to that of IT1005, but the next half will focus on mathematical problem-solving.

The first few lectures will introduces the basic interface and functions of MATLAB, matrix computations and control flow commands. This will all be used in the top-down designing of MATLAB programmes to solve simple mathematical application problems. Graphical tools will cover translating codes and equations into customized graphs for visualization, whereas user-defined function covers the implementation of customized MATLAB functions built upon existing functions and commands. User-defined functions are especially useful for problem-solving because each function can be designed specifically to tackle particular mathematical problems. 

The later parts of the course focus on different types of computation problems encountered in the field of mathematics. The first of these is to design algorithms to solve iterative problems numerically. Next, polynomials and general equations are tackled in various manner, and students will be required to design their own for lab problems. In general, there are many methods to code such algorithms, so as long as the codes withstand the troubleshooting done by tutors, you can get a good mark for lab. Do take note that the fresh codes are more often than not, bugged, so running the code on crazy equations or big numbers can further ensure the versatility of the code. Running codes without semicolons is by far the easiest way for a step-by-step debugging if you’re familiar with the equations on paper.

Numerical differentiation and integration will require a lot of familiarity various techniques of differentiation learn in JC for implementation in matrix form. Getting a one-size-fit-all code is often a tedious process, so it is recommended that you get a copy of MATLAB on your computer so that you can practice coding for the practical examination. The last topic on initial value problem will require all the codes you constructed because some of the require codes are not predefined, but were used as examples or practices in the previous labs. Do not delete the codes you have constructed for earlier labs because you will need it for later labs.

On the whole, this is a very applied-based course, and practical implementations of codes are emphasized and will be examined. However, the midterm and final examination is written, so it will be very different from practical examination because there is no way to test and debug the code you have written on paper. So it is best to be familiar with both written and actual implementation of the codes.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: IS2103 Enterprise Systems Development Concepts

This module aims to train students to be conversant in backend or server-side development for Enterprise Systems. It complements IS3106, which focuses on front-end development aspects for Enterprise Systems. Students will learn modern development techniques such as component-based development, service-oriented development and object-relational mapping. One or more established development platforms would be carefully chosen to allow students to put into practice the various concepts that are taught in the module. An emphasis would also be placed on Enterprise Systems security.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: IS1105 Strategic IT Applications

This module covers quite a lot of content, such as B2B/B2C, E-Commerce, SCM/ERP. But will not go into details as it is still an introductory module.

Lectures are quite boring. Not really necessary to attend lectures. What is really important here is the textbook. Familiarise yourself with the textbook. The final exam is open book, and technically you can find all the answers from the textbook. So please spend some time going through the textbook during reading week. Will be really helpful.

There is one group project (not very difficult/not so time-consuming) and no midterm. Good luck!

Expected grade: A

Actual grade: A

Head over to our Shop for more module content!

Posted on

NUS Computing Review: IS1103 Computing and Society

Grading

I forgot the weightage. The module was closed at the time of writing. But the components are as below:

1. Weekly missions (50% ???)

2. Finals (50% ???)

Workload

Low workload. Just be consistent every week to do the missions (and do them properly).

There are some weeks where the missions are slightly tougher and that could take you an entire day. For my batch, we had a hacking mission and that took me an entire day to complete. But that was the only mission that took me an entire day to do since I did not have any prior experience in using command line interface to listen to and capture keystrokes etc. The website we used to facilitate this learning was via https://linuxzoo.net/ and it is highly recommended for you to do it first so when that week comes, you have your answers prepared and do not need to spend an entire day doing it. The parts we did were as follows:

Week 1A: Gentle Revision

Week 1B: Essential Grep

Week 1C: Initial Penetration Testing

Week 3A: Active Scan

As for other missions, they can be done in a few hours each week so don’t slack on it.

Structure

Each week, there will be a mission component (had weightage) and a Policy evaluation component (no weightage). Marks were also awarded when students login every week (please be aware to turn off your adblocker for the script to detect your login activity, as the professor will likely send a mass email to inform every student about).

The mission component changes every week along with the topics. However, the common theme for all missions is that the students are expected to use logical reasoning to substantiate their answers. In my semester, there was one week where the mission involved actual technical skills and that was the one where many students struggled in. We were supposed to learn how to hack and create listener events to swipe passwords etc. All in all, I think the missions component was well implemented as they were very enjoyable every week as it kept us entertained and curious.

The other component was the Policy evaluation component. This had no grading weightage but it served as good practice at the end of every week to familiarise yourself with the topics tested. At the end of each session, the answers are shown to allow students to learn from their misconceptions etc. The policy questions were structured in such a way where there was 7 parts to each question:

a 3-choose-1 question on whether the policy is ethical,

3 parts asking on the components of each moral pillar,

3 sub parts asking on how the policy is evaluated under each of the components

Advice

If you want to do well for this module, it is highly recommended to consult both professors to understand what are the expectations for this module. This is essentially a philosophy module hence one student’s answer can be completely different to another student’s answer for the same question and both students can get it correct, unless that question is a morally straightforward question.

Some of the later topics (Chapters 3 and 4) were more nuanced as every component had dependencies with each other thus conclusions cannot be made for each component without regard for another.

Also, it is advisable to do a hard pass on the textbook unless you are really interested in doing research in this field on ethical questions regarding computing. The course materials are more than sufficient.

Afterthoughts

This is a module many CS students dislike because it involves a lot of heavy writing and understanding. If you were proficient in General Paper in the A levels (and actually understood what you were doing), this module should not be too much an issue (thus low workload) as the way to go about learning this is very similar to learning how to write good essays in GP. If you were bad at GP but know how to work smart, it should also be a low workload module because the module only requires students to have the key points in their answers for it to be considered an acceptable answer (although whether it is correct or not depends on the question asked and how strong your justification is).

The key to scoring well for this module is to understand the words used in the answer key and why are they used in such a manner. I consulted both professors and only understood the importance of this closer to the end of the course.

There was a negative sentiment amongst the students taking the module which I think created an unhealthy feedback loop amongst both the students in the module and between the students and the professors which resulted in hesitancy from students to seek consultations with either of the professors and preferring to S/U this module. One of the professors also shared how half of the students taking this module had not even started on the first mission even though it was one of the last weeks of the semester at the time when I consulted with him/her. The lesson here is that if you are consistent with your work and consulted both professors to understand the exam approach and key words that must be present in every answer, you should have no problem getting an A- and above and save your S/U for other modules with steeper bellcurves.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: CS5242 Neural Network and Deep Learning

This module provides students with the knowledge of deep neural network and enables them to apply deep learning methods effectively on real world problems. The module emphasizes on the understanding of the principles of neural networks and deep learning; practical guidelines and techniques for deep learning; and their applications. Through assignments and projects, students will design, develop, and evaluate deep learning-based solutions to practical problems, such as those in the areas of computer vision, bioinformatics, fintech, cybersecurity, and games.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: CS5239 Computer Systems Performance Analysis

The objective of this module is to provide students a working knowledge of computer performance evaluation and capacity planning. They will be able to identify performance bottlenecks, to predict when performance limits of a system will be exceeded, and to characterise present and future workload to perform capacity planning activities. Topics include: performance analysis overview; measurement techniques and tools including workload characterisation, instrumentation, benchmarking, analytical modelling techniques including operational analysis, stochastic queuing network analysis; performance of client-server architectures; capacity planning; case studies.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: CS5229 Advanced Computer Networks

This course covers advanced fundamental principles of computer networks and techniques for networking. The goal of this course is to teach these fundamentals/techniques that will remain important and relevant regardless of the hot topics in networks and networking. Briefly, the topics include advanced network architecture and design principles, protocol mechanisms, implementation principles and software engineering practices, network algorithmic, network simulation techniques and tools, performance analysis and measurement, and protocol specification/verification techniques.

Head over to our Shop for more module content!

Posted on

NUS Computing Review: CS4247 Graphics Rendering Techniques

This module provides a general treatment of real-time and offline rendering techniques in 3D computer graphics. Specific topics include the raster graphics pipeline, viewing and transformation, real-time mapping techniques, real-time shadow algorithms, local reflection models, global illumination, distributed ray tracing, photon mapping, radiosity, volume rendering, image-based rendering and modelling, and strategies for anti-aliasing and photo-realism.

Head over to our Shop for more module content!