Thursday, December 25, 2008

My christmas gift to you: Modulo, NUS timetable planner

Well I think its about time I should start talking more about NUS-related topics so that's what I'll do today.

First, I'm going to list all the modules I've taken so far since I'm slightly inspired by my friend's (shijun) list.

green modules are those I think are relevant for game programmers
blue modules are those I think are semi-relevant for game programmers
white modules are those I think are not relevant

Modules Title Brief Reason
MA1505 Mathematics I (Junior College Math) ^ 2
CS1104 Computer Organisation Basics of computer hardware
CS3241 Computer Graphics Basics of how to produce screen images
CS2105 Computer Networks I Basics of Networking
CS4213 Game Development I Basics of what is in a game
CS1101/S Programming Methodology Escaped this with test but useful
CS1102/S Data Structures and Algorithms I probably do not need to give a reason for this but useful
CS2103 Software Engineering Understanding of Code Structuring
CS2102S Database Systems Understanding of Databases
CS3244 Machine Learning and Neural Networks Understanding of how games can learn
CS3212 Progamming Languages Understanding of how to create a game script
CS3243 Foundations of Artificial Intelligence Understanding of how to make games smart
CS3220 Computer Architecture Understanding of modern hardware and assembly code
CS3211 Parallel and Concurrent Programming Understanding of multi-threaded game execution
CS4247 Image Synthesis and Computer Animation Understanding of Quaternions, Textures and Buffers used in games
CS3215 Software Engineering Project Understanding of team communication
CS2106 Operating Systems Understanding of what runs "behind-the-scenes"
MA1101R Linear Algebra I Useful for 3D games
ST2131 Probability Useful for games with chance or randomness
GEK1025 Reading Visual Images Related: Basics of art styles
CS2301 Business and Technical Communication Related: Basics of how to present yourself and write manuals
CS3230 Design and Analysis of Algorithms Related: Basics of creating optimal solutions
CS3248 Design of Interactive Media Related: Basics of Interactive Media Concepts
NM2101 Theories of Communications and New Media Related: Basics of media theories
GEK1519 Science of Music Related: Basics of music
SSB2212 Singapore Legal System: Implications for business Related: Basics of Singapore business law
CS4243 Computer Vision and Pattern Recognition Related: Basics of what to do with photos and webcams
CS1231 Discrete Structures Not apparently useful if it is useful
LSM1301 General Biology Not very useful for games but had to take it. Interesting though
PC1432 Physics Module: Physics II Not very useful for games but had to take it. Tough
JS2213 Popular Culture in Comtemporary Japan Personal Interest
LAJ1201 Japanese I Personal Interest
LAJ2201 Japanese II Personal Interest
NM2210 Aesthetics of New Media Personal Interest
CS3108A Computational Thinking Seminar Took to fill up my 1 UE point (out of 21 UE points)

Disclaimer: The reasons above are mine alone and do not reflect anything of the school's opinion.

I would have to say that the modules in green are the ones I find that I can apply the knowledge in my future career.  The blue ones are those which will definitely help me at one time or another since I will be having to communicate with all professions of people in my line such as artists and musicians.  The last few modules I think are mainly filler modules and I wish I could have used the time spent there to do more relevant topics.

And sorry no, you won't get to see my grades for each of them.  My main point of doing this list is so that juniors who are interested in game programming can start to plan early about what modules to take and this is list is meant to be a very brief guide about what to learn the necessary skills for game development.  Again, this is by no means the best guide and I'm sure many people may beg to differ on many aspects, but I do personally feel that what I have chosen so far in NUS is one of the better routes suited towards game programmers.

I hate to create long posts because I know people get bored of reading by this point but I feel that I need to publicise this next project I did with any two friends as it is one of the most useful tools I have done.  They are Lim Zhan Wei and Alvin Ng Shi Jiin.  We did this program as part of the CS3243 Artificial Intelligence module in August 2006 under some supervision/consultation of our then teaching assistant Lim Yew Jin who is now working for Google America after he got his phD.  The best part of this was that we had the freedom to decide what project we should work on.

Modulo is a program which can help ALL NUS students plan their timetable (ok maybe not all with some exceptions).  It is arguable better than all NUS  timetable builders that we know as it uses Constraint Satisfaction to search for a timetable that you want.  All you need to do is to select the modules you want and click go and your timetable is optimized for you.  It retrieves information from the cors module pages and parses the html to extract out the information so that's where it may fail if cors decides to change their formats.  It includes options to keep lunch hours free, prefer late morning classes so that you do not have to wake up too early, and to maximise your free days amongst others.

I just want to comment that I've tried to contact IVLE to see if they would be interested in using the program but to my disappointment, I don't believe they ever replied.  Since I am leaving NUS soon, I think I will probably take this project down as well this July if there is no interest in integrating it to any official system.  Furthermore, I have not had the time to improve/upgrade this project and have not really modified it since two years ago and I personally don't believe that I should leave unattended trash in the internet around.  So if the above link is non-existent in half a years time, you know what happened to it.

Thanks to all those who have downloaded it and liked it.
Please post your comments below if you like someone to get this project integrated with an official school system.

Oh.. And Merry Christmas!
(Sorry about the two year old gift. I'm sure you'll like it though.)


Anonymous said...

hey i noticed u took GEK1025... did u find it interesting? how did u score for it? -nus undergraduate taking GEK1025

blufiro said...

Hi, I scored an average grade of B for it. But i don't think that shouldn't deter you from taking it.

I personally found it very interesting to learn more about Art History and the famous artists that many people talk about, like Leonardo Da Vinci and Michelangelo. It also teaches you the basics of appreciating art as well as learning how to differentiate art styles.

Only things I did not like were that you have to memorize material including dates and titles of art pieces for the tests, which is probably why I didn't do so well. Hope you have fun in it!

Anonymous said...

I recently came accross your blog and have been reading along. I thought I would leave my first comment. I dont know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.