"The mediocre teacher tells. The good teacher explains. The superior teacher demonstrates. The great teacher inspires."

  -- William Arthur Ward

My teaching philosophy is guided by the quotation on the left.

As such, I strive to inspire my students by

  • Showing real-life examples of concepts taught in class, using demos where possible. The purpose is to link theory with practice.
  • Injecting passion into the way I communicate with students: showing how fun things can be, and convincing them that if I can do it, so can they.  

I have taught a variety of courses over the years, from introductory to advanced, from one whose enrollment was 17 to another that exceeded 300.  Here's a quick look at some of them.


CS4340 Digital Special Effects (AY2009, AY2010, AY2011)

[Formerly called CS5245 Vision and Graphics for Special Effects, AY2006]

This is a fun course taken by senior undergraduates that teaches basic techniques in creating Visual Effects (VFX).  Like those in Hollywood movies.  Students learn about chroma keying, compositing, matchmoving, and inserting CG objects, etc. The course culminates in a final VFX project, in which students show off their creative and technical skills. Some examples:

Hunter Hunted (2007) 
Goh Cheng Teng,

Lee Keng Siang,

Neo Jiet Shern

The Break In (2011)
Donna Samuel,

Lydia Kerry Kosasih,
Jonathan Ong Chong Zhen,
Deo Amarawi Hogiono

Pig Soul (2012)

Orry Suen Yeu Arng,

He Xuan,

Deng Tianhan


CS1231 Discrete Structures (AY2012)

This course is typically taken by CS freshmen in their first semester.  It introduces the basic math and proof techniques required in many advanced CS courses, such as graph theory, sets, relations and functions, cardinality, and so on.  As such, this tends have large enrollments.  The course is not easy for many students, because it takes a more axiomatic approach which students (who are typically trained in the procedural approach) are not used to. Besides the hard core stuff, students also get to explore a fun math topic, and to explain it via a multimedia presentation.  Some examples:

Rubik's Cube

Leong Wei Jian, Mun Hui Yi,
Yong Jia Jie, Tan Wei Lin,
Chin Ze-Ye Leon

Fermat's Last Theorem

Ling Chi Tao, Jiew Meng Lim,

Toh Eng Kiat, Lee Shun Wei,

Tom Rijndorp


CS1101 Programming Methodology (Java) (AY2002, AY2003)

CS1101S Programming Methodology (Scheme) (AY2004, AY2005)

Learning to program a computer is a key skill for any CS student; and even for non-majors, this is a useful skill to have. This course teaches the basics of programming using Java or Scheme.  Topics covered include: recursion and iteration, control structures, data abstraction, object-oriented and functional paradigms.  There's even a lab assignment to program the Lego mindstorm robot, and an optional competition for students to pit their robotic creations against one another. Robots draw letters of the alphabet, or something of their own choosing.

Beach + trees

This use of Lego robots was an innovative pedagogical move, and was featured in an article by the NUS Centre for Development of Teaching and Learning.


CS5240 Theoretical Foundations in Multimedia (AY2002 - AY2005, AY2009 - AY2012)

The course is meant for first year Ph.D. students in the Department of Computer Science, preparing them for research in multimedia. As its title suggests, the course covers many fundamental mathematical techniques commonly used to analyze and solve multimedia research problems.  Topics covered include: Singular Value Decomposition, Discrete Fourier Transform, Maximum Likelihood Estimation, Wavelets.  Our course was featured in the inaugural issue of the SIGMM Education column because it addressed a need that seemed to be common across many graduate schools -- that of "leveling up" grad students for research in multimedia.  A sample of my lecture notes and a homework assignment may be seen here: Linear Algebra notes, Eigenface assignment.

      Updated Jan. 2013