Associate Professor
D.R.Cheriton School of Computer Science,
University of Waterloo, Canada (2003-).
Assistant Professor
Department of Computer Science,
University of Waterloo, Canada (1998-2003).
"As a high school English teacher I only have one (sad thing) to contribute here. We're strongly discouraged from teaching grammar... since the administration "knows" it is boring and cannot hold student interest. If a subject or lesson cannot (or does not) keep every child in the classroom entertained, no matter how diverse the population, then the teacher is faulted." (anon.)luckily, we're at a University here... but the pressure is on, make no mistake:
"There are two models of quality assurance in catering. One is fast food, where everything is standardized. The other is like Zagat and Michelin restaurants, where everything is not standardized, they're customized to local circumstances. And we have sold ourselves into a fast-food model of education, and it's impoverishing our spirit and our energies as much as fast food is depleting our physical bodies." (Sir Ken Robinson, TED2010)
Visiting Professor
DAIMI, Department of Computer Science,
University of Aarhus, Denmark (Fall 1997, Fall 1999, Spring 2001).
During my visits to BRICS, Centre for Basic Research in Computer Science, I taught the following classes at BRICS PhD School and DAIMI:
The introductory database class also offered the students the possibility of becoming a certified IBM DB2 Application Developer.
Teaching Assistant
Department Computing and Information Sciences,
Kansas State University (1993-1995).
Duties associated with the assistantship included grading papers and
examinations (in most cases I was solely responsible for the grading of the
class) and occasional lecturing.
While training students to be good programmers is an important aspect of every computer science curriculum, I believe that a computer science and computer engineering degrees need to offer more than mere training of programmers: they must promote the understanding of principles on which computing is based, many of which are deeply rooted in mathematics. This way the graduates should be able to understand not only the immediate functions and features of their programs but also the long-term ramifications of their design decisions and tradeoffs that they will be often making after they get into the ``real world''. It is also my belief that while the practical up-to-date skills, hands-on experience, and familiarity with the cutting-edge technology play an important and irreplaceable role in the computer science and engineering curriculums and may give graduates immediate chance to get a job (a common measure of the quality of a degree), the thorough understanding of the foundations of computing may help them to keep their jobs later, when the technology moves on and the skills tied to particular tools of today cease to be relevant.
I would feel comfortable teaching most introductory courses in computer science and a variety of advanced courses, including but not limited to: