Computing Museum at Mountain View, CA
The cornerstone of my teaching philosophy is the application of critical thinking. I am of the strong belief that critical thinking should be at the heart of any education enterprise. Knowledge and facts flow from one's questions. Education is poorly served by the pure presentation of facts for its own sake.

To this end, my approach to teaching requires that I be able to convey to students an understanding of the principles behind a subject as well as any practical application of the techniques covered by the subject, where possible. It is also important that I be able to, where appropriate, inspire students with the subject's possibilities and any research opportunities. As such, I make it a point to attempt to familiarize myself with a subject's history and the current state-of-the-art.

It is important to me that I view my students as individuals. In every class, students learn at a different pace and approach subjects from different perspectives. Good teaching techniques can apply to a good number of students in a class. I have, however found it necessary to learn to read the progress of individual students and to fine-tune my teaching to help as many of my students succeed as possible.

Finally, I believe education and learning should be fun. I never cease my attempts to find novel, interesting and humorous ways to lead students into a subject. Of course, I have had to be careful that I minimized the chances of confusing students in these attempts.

University of Illinois Urbana-Champaign

Fall 2000 - Fall 2001: CS105 - Introduction to Computing for Non-Majors

Fun stuff at the labs: Excel formulae, Excel macros, VBA variables, assignment statements, dialog boxes, if-then-else and loop logic.

National University of Singapore

1997 - 1999: Introduction to Programming using Scheme

 This was such a long time ago, the course code really doesn't matter anymore, heh. This was an innovative course meant for more technically-inclined computing undergraduates. Most computing majors took an introductory class using an imperative/OO language like C++ or Java. These guys would do so by looking at the subject from the perspective of functional programming, starting with the basics and working their way up the levels of abstraction to understand concepts such as object-like encapsulation, continuations and co-routines. It was a lot of fun and these students became a really tight-knit bunch, calling themselves "Schemers".