Final year in CEG. This is one of the most taxing semesters I have committed to with FYP and 4 modules.
CS3210 – Parallel Computing (by Prof Teo Yong Meng)
This module introduces parallel computing concepts to the student. It seemed interesting because all mainstream computers today are parallel capable. The labs introduce two main OpenMP and OpenMPI. You may be familiar with simple pthread programming which on a single processor system will simply be the threads interleaved for operation (multi-programming). OpenMP allows you to easily create multiple such threads and pass them for work on the other processor cores in today’s Intel microprocessor architectures. OpenMPI is the “message-passing interface” cousin. This allows you to create processes on various different processors (processor cores and other computers) and pass messages between them (cluster computing). There are two projects with the last one being the most tedious and difficult. Most a theoretical introductory module. The take away from the module is that parallel programming is easy to talk about and very hard to do.
CS3235 – Computer Security (by Prof Hugh Anderson)
The pre-requisite for this module is CS2107 which I did in special semester. CS3235 covers roughly the same topics from CS2107 but this time much more in depth (note: understand the math behind AES, diffie-hellman scheme, RSA, elliptic curve cryptography, quantum cryptography). This year had new topics and new maths (elliptic curve, quantum). Instead of repeating the same stuff from CS2107, more ciphers are introduced and some of the topics are explored in depth. The project now (if you want to score) involves some actual work (programming, testing) of a security related topic. This is a step-up from the literature review done in CS2107 project. The labs thankfully are not so stressful and instead give you an introductory hands-on to exploring security related topics discussed in class. Expect competition as the smartest fellas from CS seem to like this module. Difficult final exam this year due to the new topics. This module is in a higher gear and Prof Anderson will go through alot of material.
CS3204L – Computer Networks Laboratory (by Anand Bhojan)
This used to be 3 MCs and it is now 4. The workload is heavier as a result. The pre-requisite is EE3204 but the theory you learnt from that module is not enough. The lectures will show how much you still don’t know. The module is a lab hands-on to the established networking techniques used in the Internet. There are labs every week (lab module) and there are programming assignments every 3 weeks or so with a final mini-project. However, Prof. Bhojan is nice and wishes all his students to do well. Follow the labs correctly and you can score. There is no final exam but there is a final quiz which will make you realise that you still don’t know much about networking. It is a very good module to take.
CS4223 – Multi-Core Architectures (by Tulika Mitra)
Most CEG students will be tempted to take this module since we’ve all been through CG3207 (Computer Architecture). This modules goes in depth the concepts that make today’s superscalar, heavily pipelined, out-of-order execution processors possible. It will then introduce the hardware level concepts such as cache coherence and memory consistency that makes multi-processor programming easier to the programmer expecting serialization. It will finish with vector architectures and also introduce GPU architectures. There are two projects and both take quite a bit of time to do. Overall it is a very interesting module and Prof Mitra is very good.