He who can, does. He who cannot, teaches.
— George Bernard Shaw (Man and Superman (1903) "Maxims for Revolutionists")
Those who know, do. Those that understand, teach.
Teaching is the highest form of understanding.
I never teach my pupils, I only attempt to provide the conditions in which they can learn.
— Albert Einstein
Although I never intended to be a teacher I been involved with teaching, mentoring and coaching my entire life. I found that writing and lecturing about my chosen profession was equally satisfying to doing my profession (with no apologies to GB Shaw).
My lecturing goes back to the mid-1980s where, as a member of the Computer Systems Group at the University of Waterloo I presented short-course seminars on programming languages. These seminars were an outgrowth of my work as an implementor of the Waterloo Pascal compiler and the Waterloo microPascal interpreter (later marketed as WATCOM Pascal). These presentations were on behalf of WATFAC (the Waterloo Foundation for the Advancement of Computing) and the audience was generally generally Ontario high-school teachers.
In 1985, I participated in a program sponsored by IBM-SEAR (South East Asia Region) to deliver week-long seminars to Universities and other post-secondary institutions (I presented at Ateneo de Manila University and University of the Philippines). The seminars demonstrated a sample post-secondary curriculum for introductory computing (such as it was in 1985), and featured the WATCOM collection of language intepreters and the Waterloo JANET LAN.
In 1994 I began my 12-year involvement with developing and delivering university-level Computer Science curriculum, including lecturing undergraduate credit courses for the Cheriton School of Computer Science, non-credit courses for Waterloo's "Continuing Education" department and the Education Program for Software Professionals (a diploma program offered to IT professionals looking to upgrade skills).
Over the years I've been invited to give technical presentations. Here's a sampling:
I was invited to give a presentation on Pascal programming (what Pascal was, why it was better from a pedagogical perspective than standard microcomputer BASIC). The audience was Ontario high-school math and computer science teachers.
I gave the talk a couple of times:
Over the years I gave several invited talks at SHARE, including:
An insurance industry consulting firm wanted an "afternoon" high-level overview of database and DBMS theory and practice. I condensed the 24-lecture-hour DB course that I presented to EPSP audiences into a four-hour marathon session. It's still technical, which the audience seemed to find acceptable (the audience was mostly consulting actuaries and other number-crunchers, after all).
A manufacturing firm that used advanced CAD/CAM in their design shop needed a crash course on C programming to help them write plugins for their design software system. I presented a customized version of my popular Continuing Education "Programming in C" course.
In 2006 I gave an invited talk at the annual University of Waterloo WatITis conference (an annual one-day event for IT/IS staff on campus to engage in professional development and networking). My presentation was on "virtualization". It included a quick history (including Waterloo's early work with virtualization in the 1970s) and a vision for how virtualization could be used to solve IT management problems in academic-instruction environments.
The following year I was invited to give the talk at the national CanHEIT conference. In addition to the (static) presentation, I gave a live demonstration of the system. This was somewhat scary, as it involved
I'm happy to report that it actually worked, and Murphy did not rule on that day. Nonetheless, I had prepared a set of screen snapshots of the planned demo, "just in case".
Over my career I've worked with many co-op students: from the University of Waterloo, from local colleges (Mohawk and Conestoga), and high-school interns. Since a working knowledge of database management is a pre-requisite to just about all Web development, and is useful for all software developers, I adapted my DBMS courses into a 90-minute (or so) crash-course presentation which was (as I put it at the time) for people who "know how to spell SQL and SELECT but don't understand why". If nothing else, it was useful to introduce standard terminology and present the standard DBMS paradigm.