Update: Module reviews for EE5904, EE5934 and EE4204 added on 27 July 2021.
Note: Computer Engineering specialisation is no longer available from August 2021. Information Systems is the new specialisation choice that has the largest overlap in module requirement with the old Computer Engineering specialisation.
EE5903 Real-time Systems
This is one of the 2 compulsory modules you need to take (the other one is EE5902 Multiprocessor Systems), if you opt for a specialisation in Computer Engineering under NUS EE graduate coursework program. Module is taught by Professor Bharadwaj Veeravalli (also the instructor for EE5902).
Content:
Real time task scheduling algorithms, reliability and fault-tolerance, process synchronization
Assignment:
20% CA1 + 30% CA2 + 50% final exam
This module has 2 assignments and the contents of the 2 assignment are related. You are required to form a group of 2 before the first assignment (You can choose the group). You and your group mate then select the assignment topic of interest (from the topic list provided), search 4 recent papers related to the topic (published from 2014 onwards for my batch) and discuss with the professor for approval.
CA1 is a group assignment, in which your group need to read the 4 papers and write a literature review report. The key point of this assignment is to demonstrate your understanding of the concepts and algorithms presented in the papers.
CA2 is an individual assignment, you and your group mate each need to implement 2 different algorithms from the 4 papers separately. The detail on how to implement the algorithms would be discussed with professor during the consultation session. You can choose any programming language that you feel the most comfortable to use.
Final exam is closed-book with a double sided A4 size cheatsheet allowed. It is mostly to test on concept and theory questions. Going through all the lecture notes and supplementary example questions taught during the lecture would definitely be sufficient.
The detail information for both content and assignment can also be found in the course website.
Personal thought:
In general, this module is not difficult, if you have a relevant undergraduate background. The lecture contents are those very classical theories, which serve as a good introduction knowledge to people like me who do not have a relevant undergraduate background. However, for those who want to go into deeper or more advanced topics, the contents may seem to be a little bit outdated or insufficient. Assignments are a bit challenging since they are almost not related to the lecture contents at all, you need to digest the academic papers and implement the algorithms on your own. It tends to train you and get you more prepared for independent research and perhaps this is the most different aspect compared to undergraduate modules.
EE5907 Pattern Recognition
This module is one of the elective modules for specialisation in Computer Engineering.
Content:
The first part is taught by Professor Thomas Yeo, it mainly covers Bayesian probability, generative and discriminative models parameter estimation, logistic regression and KNN.
For our batch, the second part is taught by Professor Toh Kar-Ann (visiting professor from Yonsei University, South Korea). Topics include linear discriminant function, PCA dimension reduction, feature extraction, SVM and boosting, and at the end, a simple introduction to neural networks and deep learning. (Usually this part is taught by Professor Feng Jiashi but contents are similar)
Assignment:
20% CA1 + 20% CA2 + 60% final exam
CA1 is an individual assignment that covers Professor Thomas Yeo’s part. There are in total 4 questions on the same training data set and each question requires you to use a different classification method. Questions are very straightforward, data set is also given in .mat format with all the features represented by values in columns. You can choose to code in either Matlab or Python.
CA2 is an individual assignment that covers Professor Toh’s part. Training data is MNIST handwritten digit, one of the most popular training databases (also known as the “Hello world” in machine learning). Similar to CA1, you will need to explore and implement different algorithms to classify the same training data and compare among them.
Our batch took online final exam due to Covid-19 and it was a quiz-base exam, so it cannot provide much reference to your batch. But as far as I know, it usually includes conceptual questions asking for explanation or justification, as well as some simple calculation questions mainly about Bayesian probability.
Personal thought:
I would say that this module gives a very good introduction to machine learning as it covers almost all the very fundamental concepts. It is a very popular module offered in both Semester 1 and 2. Moreover, if you plan to take EE5934 Deep Learning later, this module is a pre-requisite. I strongly recommend this module if you are curious about machine learning. For difficulty level, if you have some background knowledge in probability, statistics and linear algebra, then you should be able to manage this module without much problem.
EE5902 Multiprocessor Systems
Similar to EE5903 in last semester, this module is also a compulsory module for Computer Engineering specialisation taught by Professor Bharadwaj Veeravalli.
Content:
Different computer architectures, parallel computing, multi-core and multi-thread concepts, cache, pipeline.
Assignment:
40% CA + 60% final exam
This module has only one group assignment. At the beginning of the course, you need to form a group of 2. For my batch, group allocation was done by professor so these is chance that you don’t know your group mate. There are 2 assignment types: survey type and simulation type, you and your group mate can discuss and decide to go for any one type for the CA. Survey type requires your group to search and do a literature review for 6 papers, while simulation type requires your group to study and implement 4 algorithms (2 algorithms per person). The assignment style is very similar to those in EE5903, if you have taken EE5903, you should be very familiar with the assignment procedure for this module, and vice versa.
Final exam is closed-book with a double sided A4 size cheatsheet allowed. Again, exam style is also very similar to that in EE5903. Questions are very standard and similar to those sample questions. Exam syllabus, practice problems and question bank with solutions are released by professor during reading week for you to better prepare for your exam, they are quite helpful so please make sure you go through them before your actual exam.
Course website is here.
Personal thought:
Content difficulty is standard. Lecture workload is not heavy (6 chapters in total). However, lecture notes are quite messy and informal, one chapter may consist of several separate documents differ largely in format or presentation style, some are even hand-written materials. So I suggest you to follow professor‘s pace in lecture if possible, or watch the recording together with the lecture slides to prevent from getting lost. Assignment is a bit difficult and has nothing much to do with the lecture itself. Your mark depends on how much effort you spend on those papers.
EE5731 Visual Computing
This module is taught by Professor Robby T. Tan. Personally I feel that this module should be counted as elective module for Computer Engineering specialisation, but I am not sure why actually it is not inside the elective module list.
Content:
Face detection, image feature extraction, image stitching, camera geometric properties, Markov Random Field, depth from stereo and video, optical flow
Assignment:
30% CA1 + 30% CA2 + 40% final exam
CA1 is an individual assignment about panoramic image stitching. There are in total 7 parts, while the last part is an advanced part that is not taught during the class and requires you to read the papers on your own. Some parts are related to each other.
CA2 is also an individual assignment about depth estimation from stereo and video. There are in total 5 parts and similarly the last part here is an advanced part not discussed in class.
Both assignments use Matlab as the coding language and involve extensive amount of coding. Workload is very heavy compared to other modules (e.g. I spent about 60% of assignment time on this module for that semester based on rough estimation, and I took 3 modules in that semester). For the advanced parts in both assignments, you really need to spend extra effort if you want to do it, but according to what I know from my surrounding, not many people completed this part.
Our batch took online final exam due to Covid-19 and it was a quiz-base exam, so it cannot provide much reference to your batch. However, I have checked the past-year papers from NUS Library during my revision period, the papers look very difficult with a lot of explanation or description type of questions. Even for the online exam in my batch, the 25 multiple response questions made most of us exhausted at the end (one thing is the questions itself were really tough, another thing is that no partial mark was given for any under-select or over-select answer, to some extent this quiz-base exam is even more cruel than past-year exams).
Course website is here.
Personal thought:
Unlike other popular computer vision course (e.g. CS231N Stanford), this module only presents traditional CV approaches without any deep learning framework. However, I agree with what professor said during the class, traditional CV is the foundation and it helps you understand the mathematics behinds and how computer perceive images. Therefore, it is still a good course to choose if you are interested in CV, or plan to embark on this area. Professor Robby seems quite strict in teaching and giving marks. He is also the only professor I know so far that really spends up 3 hours fully for every week’s lecture. I like his neat and organised handwritten lecture notes also haha.
ME5405 Machine Vision
This module is from Mechanical Engineering department.
Content:
The first part of this module is taught by Professor Chui Chee Kong. Topics include image acquisition, image geometry and noise filtering in frequency domain. The second part is taught by Professor Lim Kah Bin, topics include binary machine vision, image enhancement and segmentation, color image processing.
Assignment:
30% CA + 70% final exam
There is only one group assignment. The project is released at the beginning of the course and you group has almost the whole semester time to finish it. It is a coding project that requires you to process two provided images according to the steps mentioned in the question sheet. Code need to be written in Matlab. Questions are relatively straightforward and easy.
Final exam is open-book. Questions are mainly calculation type. If you go through all the lecture notes and the sample questions with solutions before the exam, you should be able to handle it without any issue.
Personal thought:
This module does not require any pre-requisite knowledge and is not difficult to score. If you are interested in image processing, or if you cannot find a suitable module to take for the semester, try consider this module.
EE5904 Neural Networks
This module is one of the elective modules for specialisation in Computer Engineering.
Content:
The first part is taught by Professor Xiang Cheng. It starts from introduction of neural network and perceptron, followed by multilayer perceptron(MLP) and back propagation to Radial Basis Function Networks (RBFN) and lastly Self Organising Map (SOM). The second part is taught by Professor Peter Chen, topics include Support Vector Machine (SVM) and Reinforcement learning (RL).
Assignment:
40% CA + 60% final exam
There are in total 5 CAs in this module and all are MATLAB coding questions.
The first 3 CAs are from Professor Xiang Cheng’s part. Workload is quite heavy as every CA has about 3-5 questions each consists of several sub-questions. You are required to code for most of the sub-questions to obtain the result graphs/plots for discussion and write a report, although some of the sub-questions may share similar codes. The algorithms you need to code are all presented and discussed during the lectures, it is not difficult to apply them into your scripts if you follow the lecture notes. Deadline is usually in 2-3 weeks’ time after releasing the assignment and I think this is quite tight considered the amount of work to be done, so I recommend to start early each time if possible.
Professor Peter Chen’s part has 2 CAs that cover SVM and RL respectively. Workload of these two is relatively much lighter. There are 2 tutorial sessions from the TAs to guide you finish the assignments, the materials provided in tutorials have come out with the main part of the codes so you only need to modify and organize them accordingly to obtain your results. Report format template is also given in the assignment sheet, it is a short report requires you to fill in your results and provide some analysis and discussion. Deadlines for both CAs are the end of the reading week.
Final exam is open book and mainly calculation questions. Be prepared for large amount of calculation and also time wisely during exam.
Personal thought:
This module is good introduction course for those interested in neural network and would like to gain a basic understanding. Content is very basic yet important. Lecture notes of this module are very detailed and well prepared to bring you through the fundamental concepts and mathematics behind.
EE5934 Deep Learning
This module is one of the elective modules for specialisation in Computer Engineering.
Content:
First part is taught by Professor Joey Zhou and it mainly covers the basic concepts of machine learning like regression and classification, feature representation, regularization and backpropagation. Second part is taught by Professor Feng Jiashi, a wide range of fundamental deep learning methods are walked through: different CNN architectures, CNNs for image segmentation and object detection, RNNs and LSTM, generative models VAE and GAN, feature visualisation and lastly Transformers.
Assignment:
15% CA1 + 15% CA2 + 25% Project1 + 45% Project2
Both CA1 and CA2 are 24-hour assignments. CA1 is basic Numpy data processing and visualization task without any deep learning knowledge required, you can easily finish within 1-2 hours if you are familiar with Numpy. CA2 is a description question answering about deep learning model design without code implementation, you are supposed to describe your model architecture in sentences or diagrams and to provide some reasoning to address the questions.
Project1 is an individual project that requires you to read a few academic papers and implement the algorithms presented in those papers. Jupyter notebook with pre-defined structure and helper functions is given to you so all you need is to fill in the blank of the missing lines. The implementation is in Pytorch framework. If you search online, you will find that those questions and the given Jupyter notebook file is modified from Stanford CS231N assignments.
Project2 is an online Kaggle competition and need to be completed in groups. For my batch, the competition is Human Protein Atlas Single Cell Classification, a weakly supervised segmentation and classification task.
Personal thought:
I feel that this course is not well organized in terms of content, assignment and communication. Firstly, majority of the notes in part 2 are just directly borrowed from Stanford CS231N and squeezed into the second half of this module. It really covers so many topics that it is quite difficult to completely understand and digest those concepts just within 3-hour lecture every week. Besides, most of the concepts in lecture notes are not tested in assignment or project at all, so there is no pressure to force you to really understand them. Secondly, assignments are not well planned. For example, the image style transfer algorithm required in Project 1 is taught only after its deadline. Problems in CA2 and project2 are almost not relevant to the lecture materials so you need to research and study everything on your own. It seems that there is lack of coordination between the 2 parts and among the assignment projects. Lastly, assignment and project release date keeps delayed so it is hard to plan your schedule ahead Announcement of the assignment or project is only made several days in advance. To me, this module is one of the most challenging courses I have taken in NUS, and I would suggest you to think twice before we go for this module.
EE4204 Computer Networks
This module is undergraduate Year 4 modules from Electrical Engineering.
Content:
Part 1 is taught by Professor Mohan Gurusamy and contents include network overview and Link Layer. Part 2 is taught by Professor Mehul Motani and it covers topics mainly in Network Layer and Transport Layer.
Assignment:
15% Quiz1 + 15% Quiz2 + 15% programming assignment + 5% participation + 50% final exam
Both quizzes are either short questions or MCQ conducted during the tutorial time slot. The questions are standard and mainly to test your understanding about the fundamental concepts. Quiz 1 is open-book and Quiz 2 is cheatsheet only, but I still recommend you to self-prepare some revision notes for Quiz 1 to strengthen your understanding, and also for the ease of reference when you are doing your final exam revision later.
The programming assignment is released after recess week and due in week 13. It is a socket programming using C language to write a client and server to transfer a file by complying with the given acknowledgement rules. Tutorial and sample codes are given to serve as a reference for you, so even without prior knowledge about socket programming, it is still not very difficult to complete this assignment. A demo session is in week 13 when you need to run your written code and answer the questions asked by the TA.
Professor Mehul Motani like to interactive with the students during the lessons and may ask you to submit some short question answerings or summary straightly after the lesson, that’s where I believe the 5% participation score comes in.
Final exam is open-book with 4 standard large questions in total each with several sub-questions, and those sub-questions can be not related to each other. Quite a lot of calculation and time given is a bit tight.
Personal thought:
A good option if you would like to learn some computer network knowledge.