I completely forgot that I actually do module reviews. Wow.

Anyway, Year 5, oh man, this choose module and take exam thing is really getting sort of, old. All core modules here, so only helpful for the higher level students.

*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.*

**CS4212 – Compiler**** Design**

*Textbook:Â Compilers: Principles, Techniques, and Tools (also widely known as the Dragon Book)*

I found this module difficult as the concepts of a compiler are extremely extensive and not the most straightforward. It is a definite must to focus onÂ Prof Khoo‘s lectures (no matter how boring he may possibly sound) as his slides are pretty brief. Or, you can read the textbook, which does a good job at explaining the concepts.Â Prof Brian DemskyÂ takes over for 3 lectures and his slides areÂ *even briefer*.. just (try to) pay attention oh man.

One issue I had with the module was that there wasÂ no tutorials which made it harder for me to reinforce/confirm my concepts. The only form of practice are the 2 written assignments, which shouldn’t be too hard to complete if you follow the lectures.

Otherwise, you’re really on your own when it comes to preparation for the mid-term and final exam, as well as – oh my gawd – theÂ project, which was the hardest component of the module (bearing similar weightage to the final exam). There are 3 projects, the first 2 individual and the last in teams, because Prof Khoo probably thought we were going to die if we were to do project 3 alone. Through the 3 projects you write a full compiler for a simplified version of Java (writing the compiler doesn’t get any easier though), using Ocaml. (That’s another issue – unless you have experience in functional languages you’re probably gonna scratch your head with the projects)

TheÂ mid-term test was pretty manageable with its format similar to the written assignments, but theÂ final exam was quite a disaster as many questions tested your understanding on the inner workings of a compiler. I didn’t do too well for the exam but thank god I got a decent grade!

*open book

**Summary****:** Be prepared to spend a lot of time on the project, and I definitely recommend reading the textbook to understand the concepts as well as to supplement the lectures.

**MA4221**** – Partial Diffe****rential**** Equations**

*Textbook: Introduction to Partial Differential Equations, Strauss*

Tedious stuff!Â Prof Yu is knowledgeable but the way he teaches may not be for everyone. He writes his own notes on a tablet (cool stuff) but I found it easier to use the textbook instead as the flow is almost the same (he skips here and there sometimes so be careful), and the textbook explains things much better in my opinion.

There’s a lot of content in this module (just like MA3220 ODE) but I think it’s not too difficult to understand as long as you’re careful with doing the questions in the tutorial and exams. TheÂ tutorials are basically questions from the textbook exercises and it makes use of knowledge from all the math modules you should’ve taken, in particular ODE. It may take a while for the knowledge to come back to you (copy answers in the meantime I guess..) but after that it shouldn’t be too hard.

Homework assignments are again questions from the textbook exercise set and it’s mostly similar to the tutorial questions.

One thing, as many other universities also uses the same textbook to teach, some of the resources are online (search) and I found them helpful in further understanding. *One question in the final exam was actually solved in a tutorial on another university – don’t say I didn’t hint you!*

I think the bell curve for this module is steeper because I thought I did quite okay for theÂ final examÂ but I didn’t score a good grade possibly due to my relatively worseÂ mid-term. I would say both the tests were manageable if you put in effort to redo the tutorials and understand the methods of solving the equations well.

*2 2-sided cheat sheets

**Summary:** Manageable but content-heavy – effort is required to practice the tutorials.

**MA4230 – Matrix Computation**

This module is like Linear Algebra IV, no kidding. I don’t think I have ever understood fully what was taught in this module.. Anyway, the module teaches some of the more advanced concepts in Linear Algebra, including QR factorization and singular value decomposition of a matrix (*&@^#$*&^@#), so it’s pretty tough to take them in if you’re not a fan of matrices; butÂ Prof ChuÂ tries very hard to teach and I think he does a good job at that. He’s also really friendly and approachable.

TheÂ tutorials consist of two types of questions – computational and proving. The computational questions are pretty straightforward and follow the methods taught in the lecture, while for the proving questions, don’t blame yourself for not being able to answer them – I’m pretty sure more than half the cohort wouldn’t be able to answer them without any guidance, haha. Just followÂ Prof Chu‘s answers and try to understand them as well as possible. And for the love of god copy the proofs into the cheat sheet.

Mid-term mostly follows the computational questions and proofs from the lecture and tutorials, with slight tweaks – be sure to brush up your linear algebra concepts on row operations (important!) so that you can work through the ‘tricks’ to see that the questions are pretty standard.

Final exam is at 70%, scary! I think due to the difficulty of the module, (similar to MA4254 reviewed last semester) the exam questions are very similar to the tutorial and past year paper questions, to give you a better chance at scoring and to test your understanding at least on the questions that have been gone through. The questions are also tricked like the mid-term, so I can’t emphasize more the importance of year 1 linear algebra concepts – manipulating matrices, changing rows and columns, etc.

*Graphing calculator is allowed for this module. I actually programmed some of the algorithms into the graphing calculator and was able to use it to make my life a LOT easier in computing the solutions. (Imagine having to do tedious 5-decimal calculations with just a scientific calculator through 3-5 iterations..) If you’ve taken any programming module before (such as Matlab) it shouldn’t be too difficult to do the programming (search online for tutorials!), or you can find a friend who’s good at it.

*1 2-sided cheat sheet

**Summary:** Difficult concepts, okay calculations. Cheat-sheet dependent. Practice your matrix operations.

**MA4235 – Graph Theory**

This module only has 20+ students. Woahhh.

Anyway, I found Graph Theory really interesting ðŸ™‚ It’s definitely one of the hardest modules in terms of how abstract it is and the dynamicity of proofs, but I thoughtÂ Prof Koh did a good job in explaining the concepts and how to approach problems in this module. Some of the methods that I learned from this module were pretty subtle, so you may have to stare a lot into a question and its solution to get the hang of it.

One thing I like about the module is its light workload, as graph theory proofs tend to be elegant and hence there’s not much work to do every week on theÂ tutorials. (Of course, I termed it light because I give up too quickly on the tutorial proofs and ended up absorbing from Prof Koh most of the time. But hey, at least I attempted the questions!) Be sure to ask him questions because I found that it helped a lot in understanding certain details.

The module only has 2 examinable components, theÂ mid-term andÂ final exam. They both contain easy questions that are mostly counting based (and you should be scoring them well), easy proofs that are directly derivable from the application of a single strategy, and harder proofs that may require longer eyeballing. I would say, it really depends on your ability to understand the proofs in the tutorials – I would rate myself at understand maybe 60% of them? I managed to score better than I thought despite not being able to answer the hardest questions in the final exam.

**Summary:** Very abstract, a lot of eyeballing is required. If you’re not fond of the score-or-fail type of modules (because of the high weightage of final exam), then maybe this module is not for you.

=============================

What a semester! Thankfully I managed to do decently despite my crazy schedule (yet again). ðŸ™‚ Hopefully next semester will be even better, though FYP is really scary.