Summary of Sem 7 in NUS(Final Year Sem 1)

Category: life


So time actually flies and it is already the final year of my in NUS. After overloading some semesters in previous 3 years I am finally able to take a relatively less busy semester. So this semester I am only taking 4 modules including FYP(CG4001): CS2104, CS4224, EG2401 and of course CG4001. And since I have more free time, I was also the teaching assistant of 3 modules(CS2103, CG3002, CG3207) and taking some other part-time work. So in the end I am not any less busy than before but filling with stuff to do is a good feeling indeed.

  • CS2104: Programming Languages
    I mainly took this module for enriching my understanding of different programming paradigms and I would say this module is like the best 21xx module in SoC computer science module(Some may argue that CS2103 could be as good but that is a project based module and however much you pick up sort of solely depends on yourself). Since it is still a level-2 module so the stuff covered about different languages is pretty straightforward(personally I am not expecting too much as well simply because I am not aimming at becoming a programming language research anyway). Different languages will be covered including OCaml(used in JainStreet, used by Facebook for its Hack for the type checking), Scala(a popular and fast growing language with support from Twitter and LinkedIn), Haskell(a purely pure functional programming language) and Prolog(a logic programming language used mainly in AI). As many students’ first programming language is most likely Java with so much emphasis on object oriented programming, being exposed to functional programming, logic programming would change our way of thinking about some problems.
    Grade: A

  • CS4224: Distributed Database
    I have taken all modules in SoC about database(CS2102, CS3223, CS4221, CS4224) and this one is a really good one, as good as, if not better than CS3223. (So basically CS2102 is bunch of very easy SQL syntax introduction plus some not-really-useful algebra and CS4221 is taking that non-usefulness to another level–personally I would consider these 2 too theoretical). In CS4224 ideas about “NewSQL” are discussed including query planning, transaction management, joining strategies and replication syncing.
    Grade: A

  • EG2401: Engineering Professionalism
    I was told that this module was setup merely for the concern that we Asians are not ethical in westerners’ eyes. I am not sure whether it is indeed a bias held by most westerners or it is a bias of Asians thinking that westerners have that bias. But later I know that even MIT have a similar module in their ECE department. But anyway, this module in NUS is completely, and I hate to say this, a waste of time and effort for software engineers for most part. Or maybe I am not ethical but I would argue that those dilemmas should not simply be judged like that–it is not like if you can take the moral high ground and then you can just finger point at anybody. And many problems are hard and complicate in nature and there is no clear definition of right or wrong. So if we have to force our students to learn about ethics in their university time, the education system is sad–this sort of education should be done while they are still children and should be continuous. I do not want to say that discussion of ethics is not useful at all–they are of great value and importance. I just doubt whether anything can be learned from such a module. If possible, just ask students to take a module in ARTS and study it more systematically. And for computer engineering especially, nearly all examples are from civil engineering or chemical engineering–it is just hard to relate to what we do(In fact, one professor was teaching chemical reactions for half a lecture).
    OK, enough for the complaints about the non-usefulness. A simple tip: try one day before the exam and memorize those IP related “hard-core” knowledges. There is part just to test whether you can recall them since it is a closed-book exam(you see my point, it is 21-century and they are testing whether we can remember those definitions).
    Grade: B-

  • CG4001: FYP
    I was working on Skylab as my FYP and supervised by Prof Kan Min-Yen. He is a good prof and a nice person to work with. Since it is an implementation-based project and Min is focused on researches, he did not offer much help in terms of software development good practices or stuff. Instead, he was pretty good at being a project manager. Anyway, it is my finaly year now and I am supposed to find out about good practices and write good code by myself, right?(it is easier said than done but I am still working on producing better code with more elegant designs).

In summary, Sem 7 is a good semester. Not a great one but indeed a good one when I learned many stuff and improved a lot in programming as well as in life. But I would say that there is still too much to improve on socializing and working. So in Sem 8 I will be sort of working as a full-time while coping with FYP. A busy semester ahead, so fight on.