How time flies. Another sem has passed, just like that. This sem has seen many strange things: where I was struggling to lesser or greater extent to all but one module last sem, I had thought I was in much better shape and control this sem. Yet, my grades turned out worse (or rather, more polarised). I’d spent alot of time thinking about why this was so, where I had done wrong, or right, and in the end, I think I have the answer. I think. But first, the reviews!
CS1102S Data Structures and Algorithms
Lecturer/Tutor: Martin Henz
My Lab Asst: Chris Henry
My Grade: A+
Whoa, what a way to start thinking back upon my past sem! (As you can see from past reviews, I simply order the modules by code alphabetically.) Well, this is CS1102S, a continuation from CS1101S. Where CS1101S taught “basic” programming principles (if you can consider such things as memoization, dynamic programming and streams as basic), CS1102S is supposed to focus on some of the more commonly used algorithms, like the sorting ones, and data structures, you know, like linked lists, stacks, queues, trees, whatever, you can read the official module description.
As I have felt very strongly and said very often, the lecturer maketh the module. It doesn’t matter what the module is supposed to teach, it’s how the lecturer teaches it. A good lecturer can make a ”boring” module come to life, whereas a bad lecturer can kill the most interesting of modules. That said, it’s not often easy to say that a lecturer is either good, or bad, or somewhere on the spectrum, cos every lecturer has his style.
Why am I saying so much of this? Cos after the previous sem of CS1101S taught by Ben Leong, I guess I un-rightly had high expectations of getting pretty much the same kind of stuff this sem. The same kind of stuff meaning I would be bombarded by very high difficulty material presented in a lively and interesting class. But I had forgotten, the lecturer’s no longer Ben Leong, it’s Martin Henz. He has his own style. And what is it? From my eyes, he is in some ways quite the opposite of Ben Leong. He is the kind of lecturer who seems to take “guide the student instead of spoonfeeding” to a far greater extreme than I have ever seen any other NUS lecturer done in my short NUS life. If you like that, then that’s great. But in a Singaporean education system, I think many students may have even more difficulty adapting to this sort of style. Even Ben Leong, who strongly disbelieves in spoonfeeding, went thru difficult code with us during lectures. Martin Henz -tries- to do that sometimes, I think, but one of his shortcomings, I feel, is that he doesn’t always manage time properly during the lectures and sometimes ends up spending far too much time on a single detail, leaving very little time for other very important topics he should be covering as well. But I guess that’s just my own opinion, I don’t know how much my fellow students are able to follow his lecture. I just personally find it so frustrating I end up stoning or just reading the textbook myself soon into the lecture.
But he also has some good points, one thing is that he speaks very clearly! This may not seem like much, but for those who have ever gotten a lecturer with a weird accent that makes following the lecture difficult, they’ll know what I mean. He also tries not to “smoke” the students, but thinks before answering and tries to answer ever question (amazingly, mostly correctly, even questions about obscure stuff), although that, with his poorer time management, tends to bog the lecture further down. Incidentally, Martin Henz is also our tutor for tutorials, and he tends to shine somewhat better during tutorials, lending more evidence to a hypothesis I’m starting to have: that lecturers tend to have better performance during tutorials than lectures. (I’m thinking ST1131 and Wong Yean Ling) In fact, he was so good during one tutorial that I even started to feel slightly impressed. I felt like telling him: that’s it! That’s the way I like it! Why don’t you do it like this for every lecture and tutorial?! Well, I’m not sure, but I also suspect part of the reason is due to the fact that he is lecturing on unfamiliar territory with this module.
Oh, I will also have to say that admin-wise, he is very bad. He seems to never reply on forums, and replies very slowly via email, giving me an impression, rightly or wrongly, that he is very unapproachable. Luckily, where we could not approach him (or -felt- like we couldn’t), we (or at least half of us) had an enthusiastic and dependable lab asst, Chris Henry, who was also tutor for some of the students in CS1101S last sem. Given the lecturer, he was a life-saver, like a foil to prof Henz. I am still very grateful. Other “admin lapses” include his “strange distribution” of assignments, I wonder accidental or intentional, where he -seemed- to lag in giving assignments at the beginning of the sem, only to rush all of them near the end. And oh ya, there was also this admin-related incident at the start of the sem where one of the students chose a lecture for another module that clashed with the tutorial slots for this module, and asked if extra tutorial slots could be opened. But prof Henz instead decided to change the tutorial slots entirely, screwing up timetables for many of us and generally causing a great deal of pain and frustration. Mostly, however, we ended up forgetting about that incident after some time, so I guess no big.
Given the difficulty of CS1101S last sem, I expected similar for this sem, but to honestly tell the truth, I think that I would classify this module as “easy”. Those who remember the horror of coding the 2-3-4 tree will curse and swear at me for saying it’s easy, but hey, I also experienced the horror of that too! It made me much more familiar with 2-3-4 trees and I would say that that’s what I wanted to go through, I wanted to learn!! But that was the only single example, the other assignments were rather easy, and many of the data structures we read about, we never got a chance to code.
Given what I had experienced, I didn’t know what to expect for the exam, and it turned out, despite prof Henz’s assurances that it would be rather simple, to be pleasantly (or unpleasantly for some others) hard (that is, just hard enough to give me a sense of challenge without being too hard for me) and also, very long, meaning we had to rush and rush and rush. Given that prof Henz also said he wouldn’t be following the format of past year exams, and he did indeed deviate greatly, anyone reading this shouldn’t take it as an indicator of how subsequent years’ exams would be like. But I would say that strategically, the exam format was good for me, and I can definitely explain why I got the grade I did for this module, something that I will be unable to do well for other modules. Firstly, my CA was good, I did well for the two mid-term-tests (thankfully!) and got full marks for all programming assignments (as far as I know), and for the exam, the difficulty and length was “optimal” for me. I don’t know if anyone else has felt this, but I think that the best difficulty for an exam is one that is as difficult as possible (to differentiate you from weaker students and lessen the effect of careless mistakes) but not too difficult for you (obviously). And in this case, as with PC1141, I think it was the optimal difficulty of the exam paper that ultimately helped me in getting the good grade. And so for all prof Henz’s strengths and weaknesses, I think that ultimately, (for what stuff he has taught and) for this optimal exam paper difficulty, I have to say, arigatou sensei.
CS1231 Discrete Structures
Lecturer: Tay Tiong Seng
My Tutor: Lang Mong Lung
My Grade: A+
Yet another example of how a module can differ very very greatly with different lecturers. Last sem, some of my friends have had the fortune (or maybe misfortune) to do CS1231 under the great Tay Yong Chiang, and boy, from what they tell me, was it an experience! It’s all second-hand info, so I can’t vouch for the accuracy of what I’m about to say, but it seemed like that module was similar to what I had experienced under CS1101S, where the lecturer chuts power and ups the difficulty level greatly and tries to turn all the students into kickass pros.
It was not the case for this sem. I had heard rumours that the module was gonna be easier due to some complexities (not really complex also la) of module prerequisites causing poly students to be doing it mostly this sem. (not to demean poly students) I didn’t put much weight into those rumours cos they were, after all, rumours. But boy, I have to say, the material for this sem is E-A-S-Y. I already knew like 80% of the material before I even started the module. The lecture notes turned out to be light, easy reading, the tutorials turned out to be a formality, and the mid-term test was so easy that I had the chance to check through it four times before handing it up early. Due to me taking CS2100 this sem, I was in a small batch of students that took the test separately and half hour later than the normal time (I think) and from what I heard, in the main test venue, students were handing up the papers and walking out early, making it quite chaotic.
The lecturer was Tay Tiong Seng, and from his first few lectures, I had an abysmal impression of him. The lecture was late in the day, the material was goddamned easy, I was tired and feeling sian, and there he was, speaking slowly, carefully, and repeating each portion twice, as though he was explaining quantum physics or string theory. After a lecture or two, I couldn’t take it, and I ponned the rest of the lectures. I admit I felt very terribly about him at first. But when I was more calm, I asked myself, what could he have done? Read the lecture notes in 10 mins (like what I would do) and dismiss the class? Ponning the lecture is an option for me, but for other slower students (if they exist) such lecturer may well be a godsend. And maybe if next time I’m doing some module of great difficulty and he’s the lecturer, I could do well to bear this in mind.
My tutor was Lang Mong Lung. Let me tell you something interesting, I only knew his name when I was doing the end-of-sem feedback. He never introduced himself, and he always wore something like a singlet (not a singlet though) and shorts (really shorts) to class. He’s a thin, balding old man, and not knowing his name, I always thought of him as TYC-lite. Due to the utter easiness of CS1231 (and I don’t mean disrespect to anyone who found the module hard) I never got to see prof Lang’s “real power” in tutorial, and going to the tutorial was always more or less a formality to me. But when prof Lang took over for my MA2101 tutor for awhile as the tutor was away on conference, I got to see his real power!!! He explained the very difficult MA2101 concepts like they were something simple, and when he finished explaining I really did think: ahh! Why didn’t I realise it was so simple? Given these experiences, I have a very high regard for him, and I will look forward to see if he’s as good during lecture, if I ever get the chance. (see my lecture-tutorial hypothesis above)
Given such easy lectures, tutorials, and mid-term test, should I be expecting the final exam to be easy as well? As I will tell you in the MA1104 section below, there is this something called a Sucker Punch. I didn’t take for granted the finals would be easy too, and in fact hoped it would be much harder. (see my theory of “optimal” exam difficulty above)
However, it didn’t happen for CS1231, the finals were still rather easy, though not goddammed easy. It was mostly fill-in-the-answer questions and two proving questions, if I remember right. I nailed the proving questions, though one with some difficulty, but as for the short-answer questions, there were quite a few difficult ones on graphs that I didn’t immediately know how to do, and which tutorials never exposed us to. (Although it shall always be said tutorials are only a bare minimum of what students have to know, and is not the be-all of content covered, something everyone, including me, shall do well to remember.) In the end I left three questions blank, one of which the answer become very apparent to me on my way home from exam, making me feel like slapping myself in the forehead. Given the ease of the final exam, and the fact I left three questions blank, I thought my A+ was gone, and I would be looking at an A. As it turns out, I had unexplainable luck. Well, I’ll take it!!
CS2100 Computer Organisation
Lecturer: Aaron Tan Tuck Choy
My Tutor: Michelle Teo Wei Ling
My Lab Asst: Toh Chee Chuan
My Grade: A+
This is probably the module this sem that is the closest equivalent to last sem’s CS1101S in terms of difficulty, pace, and lecturer, in my opinion. It used to be two modules, Digital Logic and Computer Organisation, or something like that, but apparently they merged it into one module and later upgraded its code to make it a level 2 module. As a result, the pace of the module is very fast, as there is a lot to cover. And more importantly, it was “optimally” fast and “optimally” difficult for me.
(see above for the “optimal” theory, haha) And even much much more importantly, the lecturer was great!!!
Aaron Tan, this is a name I will try and look out for for the rest of my NUS life, although it doesn’t seem he’s lecturing any other modules I would have to take yet. He speaks clearly (though sometimes adding a cute “sh” sound at the end of words, such as “is” -> “ish”), carefully, slowly, has very good presentation skills, looks kindly, approachable, etc, in short, the typical “perfect” lecturer that isn’t perfect only due to getting extra brownie points for being extremely comical or weird or something. At the risk of causing flooding and uneven distribution of students, I would say, everyone, get him for your CS1101/CS2100 modules! (unless you have reason to believe someone else is equally good, or better, or other stuff, such as wanting to take CS1101S!! *come take CS1101S!!*
) I think I would be a really shameless advertiser if I ever got to the advertising business…
My tutor was Michelle Teo Wei Ling. Hmm, she is a very decent tutor, though during the digital logic part she seemed somewhat shaky. Speaks clearly, explains well, the usual stuffs. But, there are other more interesting stuffs to say about her. She has this habit (I don’t like) of asking students at the beginning of the class, “Has anyone tried/done this tutorial?” as if no one ever bothered to do or even try tutorials. And she, well, how to say this, her dressing… tends to distract me, cos I am a guy, and not the kind who will coolly ignore it cos he’s seen everything. But all in all, I think, she is a very decent tutor that if I ever come across again, I would think ‘yay’ instead of ‘nuuu!’ Another interesting thing to mention is that alot of the tutorial questions are “optimization” questions, like find the smallest number of gates to implement such-and-such, find the smallest number of decoders, etc, and I often found a solution marginally better than the suggested one. And such questions are fun! (to me at least) and since I’m telling you guys there are often better solutions, don’t be afraid to look at the suggested solution and ask yourself “Can I do better?” Even during the final exam, where they gave very strict requirements that only the “best” answer could just meet, I found an even better one that resulted in a surplus logic gate.
We have labs for CS2100 too, but not the kind of nightmarish ones like in my PC1141 module. These labs are fun, and although it takes up a one-hour time slot, can usually be done in 5-10 minutes. My lab asst was a nice guy with a warm smile, but I never knew his name until the end-of-sem feedback thingy, where I realised it was Toh Chee Chuan. Ah well, 幸会,幸会.
There are two mid-term tests which are mostly mcq and short answer, and which, by strokes of luck, I managed to get nearly full marks for one and full for the other. I went into finals with nearly full CA marks, and told myself not to screw up again like CS1101S. In the end, my nervousness was for nothing, as almost all the questions had a similar style to what we had did before in tutorials and exercises, so it was just a matter of not being careless and knowing the material well. In the end, I screwed up slightly in a few places, and I really honestly thought I had lost my A+, looking at the competitiveness of the CA marks. Once again, by unexplainable strokes of luck, I got my A+.
MA1104 Multivariable Calculus
Lecturer: Tan Ser Peow
My Tutor: Ng Tze Beng
My Grade: B+
MA1104. This is a code that will always bring back nightmarish memories of the exam. But first, other stuffs. The module teaches about, well, multivariable calculus. (duh?) There is this big textbook, Calculus, by James Stewart, which is absolutely essential, even if you don’t usually buy other textbooks. Why? You will see later.
A very sad thing is that this sem, the lecture starts at 8am. I will make it a point to avoid as far as possible any future 8am lectures. I just cannot concentrate after waking up so early. The lecturer is Tan Ser Peow, who sympathises with our complaints about the early timeslot. He speaks clearly, that much I can say. He also uses handwritten lecture notes instead of typed ones, something that is a very BIG minus to me, as I, having headache waking up so early in the morning, don’t wish to have further headache looking at his handwriting (not that it’s extremely bad tho). More than that, I cannot say, since I have been, ahem, ponning lectures to sleep. I ended up subsisting entirely on the textbook. (But that’s not why I said it was essential.)
Let me tell you why. The tutorials are so goddamned easy (this sounds familiar to you dear reader?) I could have the mental equivalent of close one eye, tie one hand and one leg, no make that both hands and both legs, behind my back, and still be able to do those tutorials. (However, read what I said above about tutorials being only bare minimum.) Unlike CS1231, however, I didn’t already know 80% of the material, in fact I knew 0% of the material beforehand. So I had to really dig deep and discipline myself to try all the exercises from the book. As a result of the easy tutorials, the tutorial class was always a bore, I put up a smile, stoned, nodded occassionally, to the poor Ng Tze Beng, who was only paid attention to by a few students sitting in the front row. I can’t say much of him, since he mostly has the job of explaining very easy questions to a bunch of kids who weren’t paying attention, and how can you shine at that kind of job? Sometimes he tried to explain stuff at a higher level, (ie, more cheem-ly) but I mostly ended up getting lost when I tried to follow.
The midterms were also goddamned easy, (sounds familiar again?), I had time to check it four or five times again and try every question using two or three methods. I didn’t feel like leaving early though, cos no one else was. In the end, I somehow managed to get 6 marks off full, 4 for not expressing one equation in the “desired” form, (and didn’t feel like chasing back the marks for those), and another 2 for not stating that I should use Squeeze Theorem; I still think I didn’t have to, but who am I to argue math with a prof? But still, I did decently, the tutorials were easy, the midterm was easy, I even tried past year papers and found them all easily doable. So I thought the finals should be somewhere around there, like for CS1231, maybe with difficulty slightly upped.
I was wrong. I experienced pwnage of the highest level. Many of the questions, I didn’t even know where to start, and many, I did, but halfway through I fell into alot of devious traps and had to do lots of cancellations and corrections. When there was 1 min left, I flipped through the booklet and counted how many marks I left blank. I left 40 marks undone.
I felt miserable that night. (It was an evening paper.) I was consoled only by the fact that if I was required to maintain at least a cap 4.0, then one A would be enough to get me out of a B-. But still, I thought my future in math looked bleak, and luckily it was my last paper, for my spirit was so shattered I didn’t know how I could possibly cope if I had other papers coming up. I cried silently in my heart that night and for many nights to come.
It was this module that made me dread results day. 5 mins before 3pm (the release time of results that day) I felt intense stress, and I nearly cried with joy upon seeing a B+!!! I can only guess that enough people have chui-ed to more or similar extent as me, pushing me up to B+. The bell curve can hurt, but I guess it can help too.
MA2101 Linear Algebra II
Lecturer: Leo Ma Siu Lun
My Tutor: Tan Kai Meng
My Grade: B+
Ahh, MA2101… This is the module I have put the most effort in, for it was the module that I found the most difficult. Some people say linear algebra is easy, some say it’s really hard. If you want my biased opinion, I would say, this is THE HARDEST module I have ever taken in my NUS life. If you’re itching for a challenge, and have no prior experience, come on along!!
I tend to enjoy hard modules (see CS1101S, CS2100, etc) but this one was way off the top for me. Every time I read the lecture notes, I was surpressing the panic reflex and trying not to scream. It gets easier with each reading, each tutorial, and finally, with the mid-term test (for the first two chapters), but only the first two chapters ever made the transition from I-don’t-understand-help to I-know-this-very-very-well. (The first two chapters are General Vector Spaces and Linear Transformations by the way.) The third one, Jordan Canonical Forms, was really pushing it, especially with the introduction of many theorems that were, supposedly, too hard to prove that the proof was omitted. I spent two days reading the lecture notes carefully from start to end, and then tried the tutorial. In the end, I knew it somewhat well, (though not without burning lots of brain cells first) but not really very good. By the fourth chapter, Inner Product Spaces, I was already screaming silently, especially with the introduction of many special complex matrices and whatnot. I never did do a good thorough run of IP Spaces like I did with JCF, so I ended up being very shaky on that, knowing only the most basic theorems. It didn’t help that the tutorials also concentrated less on that chapter and it was nearing exam preparation time. The final chapter, Determinants, was optional, so I only made a very brief read on that and currently cannot remember a single thing about it except some sort of permutation and sign thingy, and something to do with multilinear forms.
The lecturer was Ma Siu Lun, and I never knew he had a “first name” of Leo. Until the end-of-sem feedback once again. (see, everyone should do it, you learn so much from that!) When I went to his first lecture, I was totally shocked! The lecture theatre was ulu, the air-con was very low, it was hot and stuffy, and to make matters worse, the lecturer spoke with some weird accent (see why I kept harping on other lecturers and tutors speaking clearly?) probably from some Chinese dialect, that made me struggle to follow what he was saying. I felt very upset and sian after that first lecture, but as time went on, I became more and more accustomed to his speech, and with that I was able to follow the lecture better, and realised that content-wise, he is a VERY good lecturer. He is a very kindly old man, who sometimes acts in cute ways too. Once, he fretted (yes, fretted!) when he realised that he did some redundant stuff in one of his proofs, then, he tried to explain to us that there was a redundant part and fretted again on whether we would understand what he was trying to say. If prof Ma you are reading this, yeah, at least some of us (me) understood.
My tutor was Tan Kai Meng. Regrettably, this is once again a name I only learned during the feedback, as I went late for the first tutorial (due to it being early, due to ahem some tutorial screw-up ahem) and if he did introduce himself, I missed it. Anyway, he is decent. I can’t say much, he speaks clearly and explains stuff decently and all.
Mid-term test came and I did very well for it, the seen questions were mostly doable if people had did their tutorials and homework diligently, and there was one unseen question which I, at the last moment, managed to think of and scribble down the solution. (Btw, supposedly Ma Siu Lun has a habit of setting exam questions with a seen/unseen division, seen being questions similar in style to tutorials or homework questions, and unseen being something entirely different.) I left out a small portion of the proof though, and had 2 marks deducted off for that. When the grades and mark distribution were released, I was very shocked, cos many people did extremely well!! I realised then that I was stuck in a highly competitive cohort.
So what with the difficult material and the competitive cohort, finals neared and I was still lost on IP Spaces and Determinants. I was extremely stressed with the knowledge that anything less than my best would lose me my A. My revision did not go too well due to this stress, but, in retrospect, having seen the exam questions, I should still have done well enough to get an A/A+ if not for one thing: I fell sick on the day of the exam. Which is really my fault as I think I fell sick mostly due to combination of stress and overstudying. I still did somewhat well for the seen questions, as it had become rote by then, but I totally couldn’t muster up any thinking power for the unseen questions. In the end, I did rather badly for those. I am sorry to prof Ma for such a bad showing after such good teaching from him, and I am sorry to myself for getting such a bad grade after I put in so much effort. But I guess such things happen, I understand that (I think) and I guess he probably understands, being such an experienced lecturer. I didn’t expect a definite B+ though, I thought it could also have been A- optimistically, but ahh, I underestimated the competitive cohort. That probably caused me to fall all the way to B+. The bell curve can help but it can hurt too.
—
If I were to look at my grades: A+ A+ A+ B+ B+. I would then have to ask, why did I get B+ for both math modules? What was I doing right for computing that I wasn’t doing right for math? (And mind, CS1231 is half math too, though it was easy in this case.) Should I conclude that I am good at computing and suck at math?
If I looked at my Year 1 Sem 1, I also struggled for math while breezing (relatively speaking) through computing. But I think I shouldn’t make a sweeping statement like “I’m good at computing and suck at math” though it’s easy to do so. If I were to think criticially, I got pwned at MA1104 because I prepared to do an easy and long paper quickly instead of preparing to face a much more difficult paper. I chui-ed at MA2101 due to stress, and perhaps lack of practice. MA1102R I also struggled much due to lack of practice, and let’s not forget that I DID actually screw up my CS1101S finals.
I think, at least for now, that the problem is that math final exams tend to have a higher proportion of unseen questions. This means that I will need a higher amount of conceptual understanding, and possibly much more time and energy and practice to achieve such understanding. What solution can I pursue in future? I guess I can only say that I hope to practise more to get better conceptual understanding in math, while remaining status quo at computing. This means I would need to squeeze some time out of somewhere. Where? I dunno. I feel somewhat at a loss.