The goal of this module is to lay the foundation for graduate students to do research in multimedia: images, video, speech, graphics and documents.  The module covers the main topics common to various multimedia applications, i.e., multimedia representation, processing, and analysis.  By teaching the topics together with the computational tools commonly used in research, it aims to strike a balance between theoretical considerations and practical applications.  This way, students can quickly pursue interesting projects and still be well prepared to learn more advanced material.

This is an introductory programming course, taught in Java.  Actually,  Scheme is taught first, then Java.  Scheme makes it much easier to write programs: even fairly complicated ones can be done very quickly (e.g. how many ways are there to make change for $n, given 10-cent, 20-cent, 50-cent coins?).   After a month or so, we switch to Java, where we learn data abstraction and the object-oriented paradigm.

We were able to program some Lego robots for our final lab.  The task was to program the robot with a pen attached to write words on the floor.  The Lego robots were the Lego Mindstorm kit, together with Lejos, a tiny Java virtual machine that runs on the Lego RCX cpu.   Seven (7) teams built the robots, and here are the videos:  (These are mpeg4, so you will need QuickTime to view them.)


HsiaoQun and WeiQi  (19 Mb)
Nikki and Geeta (17 Mb)
Phyllis and HuiMin (36 Mb)
Shahnaz-Nurhidayah-Zhiguan.mp4 (28 Mb)
SunZhi-ChenLi.mp4 (12 Mb)
YongHan and TaoYe (13 Mb)
Yanbo, Jiawei and Chonglei (35 Mb)

Another introductory programming course, but taught entirely in Scheme, and using the (in)famous SICP textbook from MIT.  16 years after taking it myself, I finally have the pleasure of teaching it!  Of course, I could not resist including a Lego programming assignment.  Thanks to my hardworking lab-coordinator, Razvan Voicu, it was not too big of a problem to devise a simple Robot Language in Scheme, and to provide a compiler for it.  To cap it off, we held a robot-drawing contest.  Here are the videos:

Movie (mov format)

Shuliang (4 Mb)
YY (4 Mb)
OK robot (3.5 Mb)
Deviant (4.3 Mb)
Avatar (3.4 Mb)
Prize giving (5 Mb)
Andi's team (1.5 Mb)
Miscellaneous (includes Tux) (3.4 Mb)


Here's the latest robot videos from this semester.  These movies are in DAT format (i.e. like in VCD).  Microsoft Media Player will be able to view it.

Movie (DAT format)


beach  (10 Mb) Beach scenery: sun, sand, trees.
lambda (4.7 Mb) Scheme λ.  But of course!
logo (10 Mb) NUS Centennial Logo.  Brave attempt.
mug (33 Mb) Cup?  Mug?  Container? You decide.
penguin (16 Mb) Linux Penguin.
wobble (1.6 Mb) Not sure what it is drawing, but it wobbles a lot.
results (24 Mb) Lab scene, and competition results.


This is a senior undergraduate course that introduces the basic concepts in Computer Vision and Pattern Recognition.  Unlike traditional vision courses, we emphasize practical topics that will allow the student to quickly embark on interesting projects, such as image mosaicking, object recognition, tracking.


This is a graduate-level course that teaches the basic skills to create movie special effects: image compositing, match move, scene re-lighting and re-rendering etc.  Students demonstrate what they have learned by creating a special effects movie, and documenting its production.


Last updated November 2006.