MathSoc, the students' society of the Faculty of Mathematics at the University of Waterloo, awarded me 1995-96 Instructor of the Year.
| Term | Course | Size | Title |
| S10 | CSE591 | ??? | Perfect Hashing |
| F09 | CSE424 | 19 | Systems Capstone II |
| S09 | CSE301 | 55 | Ethics in Computing |
| S09 | CSE355 | 61 | Introduction to Theoretical Computer Science |
| S08 | CSE420 | 40 | Computer Architecture |
| S08 | CSE591 | 6 | Interaction Software Testing |
| F07 | CSE420/598 | 68 | Computer Architecture |
| S07 | CSE434 | 39 | Computer Networks |
| S07 | IEE598 | 26 | Optimization II (Integer Programming) |
| F06 | CSE355 | 55 | Introduction to Theoretical Computer Science |
| S06 | CSE591 | 7 | Interaction Software Testing |
| S06,F05 | CSE412/598 | 35 | Database Management |
| F05 | CSE534 | 20 | Advanced Computer Networks |
| F04 | CSE434 | 27 | Computer Networks |
| F04 | CSE591 | 9 | Network Reliability |
| F03 | CSE434/598 | 55 | Computer Networks |
| F03 | CSE591/CBS598 | 14 | Genomics: Sequencing and Mapping |
| F02(2) | CSE310 | 80 | Data Structures |
| S01 | CS103 | 30 | Programming Languages |
| F00 | CS201 | 33 | Operating Systems |
| S00 | CS222 | 33 | Computer Architecture |
| F99 | CS101 | 39 | Computer Organization |
| F98 | CS266 | 23 | Network Security and Cryptography |
| W98 | CS292 | 0 | Computer Science Senior Seminar |
| F97 | CS265 | 22 | Computer Networks |
| S97 | CS395 | 10 | Cryptography |
| F96 | CS243 | 17 | Theoretical CS |
| 96(1st) | 415(CS).701 | 15 | Network reliability |
| F95, F94, F92 | C&O438/638 | 15 | Combinatorial Computing |
| F94, F91 | C&O434/634 | 14 | Combinatorial design |
| S94 | E&CE203 | 90 | Discrete Math for Engineers |
| W94, F92, S89(twice), W88 | C&O230 | 50 | Introduction to combinatorics |
| W94, S88 (twice) | C&O351 | 40 | Network Flows |
| F92, F91, S91, S88 | C&O454 | 30 | Scheduling theory |
| F91 | C&O750B/CS756 | 10 | Topics on network reliability |
| S89 | MATH 134b | 100 | Linear algebra |
| W89 | MH371A | 24 | Discrete mathematics 1 |
| W88 | C&O380 | 12 | Invention and discovery in mathematics |
| S87 | CS766 | 14 | Topics in network algorithms |
| S87, F86, S85 | CS466/666 | 40 | Analysis of algorithms |
| F86 | CS234 | 150 | Programming principles |
| F86 | C&O739/CS756 | 15 | Combinatorics of network reliability |
| F85 | CSC2427F | 8 | Topics in graph theory |
| S85 | CS756 | 17 | Topological design of networks |
| S85, S84 | CS450/650 | 35 | Computer architecture |
| W85 | CS435 | 30 | Computer Applications |
| F84 | CS462/662 | 20 | Formal Languages and Parsing |
| F84 | CS354/554 | 60 | Software Systems |
| S84 | CS766 | 12 | Network Reliability: Algorithms and Complexity |
| F83 | CMPT 419.3 | 3 | Computability and Complexity Theory |
| F83 | CMPT 416.3 | 12 | Combinatorial and Geometric Algorithms |
| F83, W83 | CMPT 230.6 | 70 | Software Design |
| F83, F82, F81, F80 | CMPT 882.3 | 3 | Topics in the Theory of Computing |
| W83 | CMPT 361.3 | 20 | Theory of Computation 2 |
| W83 | CMPT 424.3 | 45 | Computer Communication Networks |
| F82, W82, W81 | CMPT 313.3 | 90 | Software Design |
| W82 | CMPT 419B | 1 | Introduction to Combinatorics |
| W82 | CMPT 326B | 70 | Theory of Computation 1 |
| F81 | CMPT 427A | 12 | Analysis of Algorithms |
| F81 | CMPT 212A | 70 | Assembly Language Programming |
| W81 | CMPT 419B | 5 | Recursive function theory and computability |
| F80 | CMPT 180A | 240 | Introduction to CS |
| F80 | CMPT 375A | 75 | Computing for accounting majors |
| W80 | CSC 208S | 40 | Assembly Language Programming |
| S79 | CSC 258H | 50 | Computer Organization |