Friday, 3 August 2012

CS3216: The beginning

So I've signed up for CS3216 in my final year in NUS. It’s a strange feeling, considering that I had wanted to take this module back in my year 1, but of course I was nowhere competent enough. Even after 3 years in NUS with several CS modules (actually just 3) under my belt, I still feel rather unprepared and uncompetent to really survive this module. The warnings in the emails didn’t help much either :(

Back in year 1, one of my friends showed me “The Last Lecture”, and linked me to a website on CS3216 (it must have been the blog by Prof Ben). I was immediately enthralled, and right away I wanted to take it. In the years in between, I picked up C, C++, C#, along the way of my CS minor. I figured out that self-taught programming served me well for foundational CS modules like CS1010E, CS1020E etc. Yet CS2103 Software Engineering seemed rather tough, since the assignments weren’t simple puzzles anymore, nor doable in an hour or two. This was when I started to doubt my ability to do “real-world” programming.

Nevertheless, along the way my temp jobs (Access + SQL in one, Excel + VBA in another) gave me more opportunity to experience the client-developer relationship. My internship at EM was Chem Eng-based, yet involved interfacing with lots of specialized software. Exposure to all these specialized programs gave me some idea of what a well-developed program was supposed to be.

Indeed, I still consider myself rather unprepared for whatever this module would give me (or maybe even throw at me without being anywhere ready to catch it). Preparing for show-and-tell is already quite a challenge, having gone through several options, finding all of them infeasible :(

So let’s imagine, in a world where I am more resilient, here’s what I hope I can learn from this module:
  • How to program on new and interesting platforms (the web is so big, where do we start from?) – how to write code for all the cloud computing platforms like AWS, Azure, Google Appspot (I think this is outdated)
  • Also, concepts/techniques for harnessing this power out there. These services are so powerful, how do you use them apart from being just a simple web server? I guess there has to be some element of distributed computing here.
  • APIs of Facebook and how to utilize them. I don’t want to get scolded by my users for doing things that fly in the face of usability, security (especially) and really, really *common sense*. What do we need and what do we not need? How do you use this info that you get? To cache or not to cache (does this infringe on the “we won’t keep any info” clause?)
  • Legal stuff (as above), since we are now using info from users. Might be interesting to know what is acceptable (at least won’t trigger a legal response from MIBs in suits).
  • Programming concepts and patterns (further on from what I learnt in 2103), with particular emphasis on web-based concepts. Things like threading and rendezvous of independent objects don’t make sense to me in a web-based environment, no matter how I twist my mind around it.
  • How to be more flexible, because the world isn’t going to stay still and adapt to you. The ground beneath you is going to change so quickly. It’s going to be true in engineering; more true in the field of CS. The difference is just that engineering is limited by the discovery of physical reality, but CS is limited by human imagination... (which is much, much faster than discoveries).
  • How to manage time. Of course, I don’t want to fail all my other modules and FYP!
  • And, really, how to be more resilient. Basically, be able to look at this list at the end of the semester, smile and think to myself, “I did all of these and survived very well”.
Of course, I just hope that the world where I am more resilient == this world. So this sums up my expectations of this course, of the contents and of the intangibles. Let’s hope it will all turn out well! :)

2 comments:

  1. The cool thing about this course is that you're free to pick up and learning anything you want. :)

    That said, it's good to now think about what problems you'd like to solve. Something that actually pains you, because most likely other people will be suffering from the same issues and will benefit from your work. :D

    ReplyDelete
  2. Hi Jin Guan. . . hands up for being year 4 here as well. But don't worry about the workload and I suppose most of us are equally unprepared haha. It's going to be super fun:D

    ReplyDelete