Now I really feel old. I was quite happy though as I managed to exceed my expectations this semester, especially in Physics.
This review is based on the Semester 1 variants of the module and may not apply to the Semester 2 variants, or the same module but taught with a different lecturer, where applicable. Do note that module syllabus and grading criteria may change from semester to semester. The writer assumes that the reader will put in effort in attending the lectures and tutorials.
CS3211 – Parallel and Concurrent Programming
I’m not sure whether Prof Ooi covered way too much about OS concepts back when I took CS2106 in Year 2, because the first half of this module on concurrent programming was.. about concepts that I’ve already learned in CS2106 – deadlocks, starvation, progress etc. Of course you must be able to relate them to the concurrent java programs you’ll be learning. Content-wise I would say the module is useful but could have provided more applications – we were tested on concepts the whole time (the final exam killed me though..) Do make sure you’re familiar with the languages used (Promela, Java, C with MPI).
Prof Abhik has a certain accent that may cause you to miss what he’s saying, so I do suggest you sit in front. He makes an effort to re-explain concepts that we are confused about, which I like. (He pastes sticky notes throughout the whole lecture theatre for us to write questions in case we are too shy to ask! That’s effort.) The lecture notes are pretty self-contained, so just write down any extra diagrams he draws on the whiteboard. Not webcasted
Due to my hectic schedule I did not do most of my tutorials and was spoonfed by the tutor 😡 But I would strongly recommend that you try out the tutorials yourself beforehand, as most of them require you to write code (application of the concepts), allowing you to practice. Important for the final exam!
The two programming assignments were rather weird, in my opinion; as the tutor and professor didn’t give much hints, you pretty much have no idea whether you’re correct or not. I would suggest maybe borrowing seniors’ assignment answers as a reference (I didn’t), even if the questions are different.
Mid-term was conceptual mostly, and if you have a strong grasp of the concepts like critical region, mutual exclusion and those mentioned above, it shouldn’t be a problem. I was caught off-guard by the final exam, which required me to write code on the paper! (That’s why practice in the tutorials is very important). It’s open book though, so print out everything, including the programming assignments! (I didn’t.. *cries*)
Summary: Concepts are okay, but questions can be tricky and requires critical thinking. (I didn’t score well..)
CS3234 – Logic and Formal Systems
I never thought logic could be this interesting! Okay, you may call me a geek, but this module was one of the more fun ones I took this semester. You basically go through the different types of logic models (propositional, predicate, modal, hoare) and use a Logic simulator (Coq) to derive proofs. Coq is honestly the most fun part – once you get the hang of it, it’s like fighting monsters and using the right skills depending on its current condition. Awesometastic! Despite not having a good time back in CS1231 (Discrete Structures – includes logic components), I found this module good.
Dr Razvan Voicu took the first half of the semester, and he sometimes start mumbling to himself.. But he’s generally an okay lecturer. I found Prof Aquinas Hobor a much better lecturer though – he was very enthusiastic about the content of the module and I love his accent! He has this way of making the lecture fun to listen to. The lecture notes are very very brief so be sure to make any notes yourself (though it’s really more on understanding, instead of copying down anything, in my opinion.) Dr Razvan webcasted his lectures but Prof Aquinas did not.
Recitations are useful as the professors will go through anything that you don’t understand (just ask), and it’s important to go for them as well.
Labs are the ones you’ll the spending the most time with in this module. It basically teaches you how to use Coq, and the tutor does a fine job of explaining how it works. It’s basically proving logic formulas on the computer, and the syntax might be tricky at first (especially for Modal and Hoare Logic!) but once you get used to it it should be fine. Quizzes are conducted bi-weekly, and I find it a good way of making sure we do consistent work, since the quiz questions are not too difficult, in my opinion.
Assignments are either Coq questions or paper questions either on logic proofs or other conceptual stuff. Some of them can be difficult so you really have to scratch your head over it. I ended up getting zero for most assignments as I discussed with my friends and my answers were very similar to theirs. Do make sure you present your answers your own way! Lesson learnt.
Mid-term was a series of paper logic proofs, and the final exam consisted of a Coq component (which was relatively easy) and a paper component – really nothing like what you’ve seen before, so be warned for a hard time. Really must understand the logic concepts well. One piece of cheat sheet
Summary: Interesting, but some people might find logic boring. While proofs are systematically easy, conceptual questions can be very hard.
PC1144 – Physics IV
Well.. to quote from my previous review on PC1143 Physics III, I said “The most dreadful module I’ve ever taken.” (I had no choice because I required Science modules in my Computer Science requirements. Seriously, SoC?) Okay, Physics IV is slightly better – there’s lesser integration, content is more interesting (at least in my opinion), there’s no MasteringPhysics (CHEERS!!!). However, I still find the concepts really difficult to understand, especially because it’s modern physics – everything is to the subatomic scale and everything you learn seems counter-intuitive due to it not appearing in daily life. Relativity especially.
Lectures are a must to go for. Prof Abel Yang speaks rather slowly, so he might get a little boring sometimes. He does try his best to explain the concepts though. On the other hand, I didn’t have a good experience with Prof Tan though (I can’t remember his name, so pardon me if I got the wrong surname). He taught the second half of the semester on Schrodinger’s Equations and its applications, and the way he lectures goes:
“This will not be tested in the exam.”
“You only need to know this qualitatively”
“When you come to my module in Year 3 all this will make sense to you but for now just take it”
I guess it might be good for people looking to score etc (I feel guilty for appreciating these help too), but I’m really here to learn, not to score.. I think the textbook helps a lot through his lectures too, as I find it a good way of reinstating your understanding on the topics.
Tutorials. Seriously, the tutor should be the lecturer. He explains concepts clearly, teaches us the proper methods of analyzing questions, can be funny at times, and delivers well. GO FOR THEM!
Labs can be really frustrating at times especially if you don’t come from Physics background – they expect you to understand a lot of related Physics concepts (some of which is not in the syllabus of this module) during the viva. I was really lucky to get help from my Physics friend Kirsten; I suggest asking friends for their lab reports as reference. There was an incident where me and my lab partner’s results were way off the desired ones, and the lab instructor just told us “you’re not lucky, too bad”. Okay…. so make sure you really slam the faulty equipments in your lab report.
Assignments are similar to tutorial questions, so I won’t say much, if you can do the tutorial questions (which you should be able to after attending the awesome tutor’s lesson), assignments should be a breeze.
Mid-term and final exam consisted of two types of questions: the calculations/direct integration ones which are easy and should be scored, and the conceptual ones which are harder unless you really know your stuff well. I think I managed to do some of the conceptual questions (I left a few blank though) and with the help of pretty lab and assignment results, I got a good grade for it. I will still think the content of this module is difficult though. Oh ya, no cheat sheet (*&@)(#&@! There’s a formula list though.
Summary: (Really) hard-to-understand concepts, but with a manageable amount of calculation questions.
MA2214 – Combinatorial Analysis
Very interesting module! It’s basically.. Permutations and Combinations, extended. You learn about the various ways of arranging and counting objects, from basic nPr and nCr, to the principle of inclusion and exclusion, and even recurrence relations and.. power series! They may seem scary at first but I found them really interesting.
Prof Ng is a very good lecturer, in my opinion; he’s fun to listen to and he’s really keen about teaching and imparting knowledge to us. The textbook is essential as the module follows it. As long as you go for all the lectures, it shouldn’t be a problem understand the content, and not much revision is required in my opinion. And you should be at all the lectures because of.. weekly lecture quizzes! Some of them are easy and some are hard, but as I’ve said, the lectures will do a fine job for understanding the concepts, so follow them closely. Webcasted (but you must go for the lectures because of quizzes, which are held at unannounced dates)
Tutorials are questions from the textbook, and the tutor is pretty good too. Even if you can do all the questions, I think going for tutorials are still useful because the questions often have multiple solutions (combinatorial, algebraic proofs e.g.), and that’s really what’s so interesting about this module.
Mid-term and final exam should be manageable as long as you can do all the tutorial questions. Of course, there are some questions requiring thinking (like how to apply Pigeonhole Principle), but I think you should get a good grade if you can at least score for all the calculation questions.
Summary: Quite a breeze, as long as you are an obedient student, haha.
MA4254 – Discrete Optimization
My first level 4000 Math module. I was really scared of this module halfway through the semester because I had no idea what the hell is going on. That is partly because of my weak linear algebra background (make sure you are good there or you’ll have a tough time), but oh my god. Tough. Basically it’s solving linear equations a la MA3252, but subject to restrictions that your answers must be integer. However, the module is only half-computational based, as there’s a lot of proving to be done unlike MA3252. You really must understand the concepts behind the methods used well (and that’s where linear algebra comes in). There’s also a section on computational complexity, and I find that my knowledge from CS3230 helped a lot.
I really.. didn’t find Prof Sun very good.. I don’t know whether it’s the dreading Monday night 3 hours lecture, but oh man it’s boring most of the time. The worst thing is, his lecture notes are very brief, so you really have to force yourself to listen to him, copy down notes, and then try to make sense out of it during your subsequent revisions. The last chapter, which is on actual application of the optimization method, is a life-saver as it’s just blind calculation using the provided method and it’s not too hard.
Tutorials are a must, since you probably can’t do the questions anyway. No, I’m not kidding, they are really hard. Okay maybe I am really weak at linear algebra. I digress. The tutor explains them rather well, but in the case that you can’t understand it on the spot, copy the answers down first, and stare at it 198349021 times after class.
No assignments! So mid-term and final exam are really important. The calculation questions are the easy part of the paper – scoring full marks for them should not be a problem. As for the proofs, I think it’s really luck-based, as depending on the questions that are tested (the difficulty of proofs), you either see the answer or you don’t. Make sure you copy down as much proofs as possible from the tutorials/lectures into your one-sided cheat sheet! Some of the proof questions in the paper will be similar to them. Some are really the same. (Which I find really intriguing – if you’re gonna test the same question, then what’s the point? But then again, the module will probably kill everyone if not the case..)
Summary: Difficult concepts, easy calculations. Your ability to score is really based on, to a large extent, your ability to cram in your cheat sheet.
This is my best semester so far! I was really surprised at how I did despite my hectic schedule (which I’ve been complaining and reciting about in my previous blog posts). Hopefully I’ll be able to maintain my results and secure a good class in my degree. (Which will be difficult seeing I only have a plethora of Level 4000+ modules left to take..)