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 |

Introduction to the Theory of Computation: | |||

S22 | CSE355 | 125 | Intro Theory of Computation |

F21 | CSE355 | 126 | Intro Theory of Computation |

S21 | CSE355 | 140 | Intro Theory of Computation |

F20 | CSE355 | 50 | Intro Theory of Computation |

S20 | CSE355 | 125 | Intro Theory of Computation |

F19 | CSE355 | 100 | Intro Theory of Computation |

S19 | CSE355 | 90 | Intro Theory of Computation |

F18 | CSE355 | 75 | Intro Theory of Computation |

F18 | CSE355 | 70 | Intro Theory of Computation |

S18 | CSE355 | 65 | Intro Theory of Computation |

S17 | CSE355 | 366 | Intro Theory of Computation |

F16 | CSE355 | 350 | Intro Theory of Computation |

S16 | CSE355 | 275 | Intro Theory of Computation |

F15 | CSE355 | 110 | Intro Theory of Computation |

F14 | CSE355 | 132 | Intro Theory of Computation |

F13 | CSE355 | 82 | Intro Theory of Computation |

S13 | CSE355 | 60 | Intro Theory of Computation |

S12 | CSE355 | 100 | Intro Theory of Computation |

S11 | CSE355 | 82 | Intro Theory of Computation |

F10 | CSE355 | 43 | Intro Theory of Computation |

S09 | CSE355 | 61 | Intro Theory of Computation |

F06 | CSE355 | 55 | Intro Theory of Computation |

Computer Architecture I: | |||

F20 | CSE 420 | 99 | Computer Architecture I |

F12 | CSE 420/598 | 64 | Computer Architecture I |

S08 | CSE420 | 40 | Computer Architecture |

F07 | CSE420/598 | 68 | Computer Architecture |

Theory of Formal Languages: | |||

F14 | CSE 457/598 | 35 | Theory of Formal Languages |

F12 | CSE 457/598 | 45 | Theory of Formal Languages |

F10 | CSE 457/598 | 8 | Theory of Formal Languages |

Combinatorial Algorithms and Intractability: | |||

F14 | CSE 550 | 45 | Combinatorial Algorithms and Intractability |

Foundations of Algorithms: | |||

F21 | CSE551 | 165 | Foundations of Algorithms |

S21 | CSE551 | 168 | Foundations of Algorithms |

F19 | CSE551 | 168 | Foundations of Algorithms |

S18 | CSE551 | 80 | Foundations of Algorithms |

F15 | CSE551/591 | 135 | Foundations of Algorithms |

Randomized and Approximation Algorithms: | |||

F13 | CSE 552 | 33 | Randomized and Approximation Algorithms |

F10 | CSE 552 | 17 | Randomized and Approximation Algorithms |

Advanced Theory of Computation: | |||

S22 | CSE 555 | 35 | Theory of Computation |

S20 | CSE555 | 30 | Theory of Computation |

S19 | CSE555 | 20 | Theory of Computation |

S17 | CSE555 | 6 | Theory of Computation |

S16 | CSE555 | 25 | Theory of Computation |

S15 | CSE 555 | 49 | Theory of Computation |

S14 | CSE 555 | 30 | Theory of Computation |

S13 | CSE 555 | 45 | Theory of Computation |

Research Topics: | |||

S19 | CSE591/494 | 30 | Popularity in Storage Systems |

F16 | CSE691 | 6 | Interaction Testing Theory and Practice |

S10 | CSE591 | 4 | Perfect Hashing |

S08 | CSE591 | 6 | Interaction Software Testing |

S06 | CSE591 | 7 | Interaction Software Testing |

F04 | CSE591 | 9 | Network Reliability |

F03 | CSE591/CBS598 | 14 | Genomics: Sequencing and Mapping |

Others at Arizona State University: | |||

S14 | CSE591/MAT591 | 25 | Combinatorial Design Theory |

S12 (x3) | ASU 101 | 19 | The ASU Experience |

F11 (x2) | CSE301 | 55 | Ethics in Computing |

S11 | CSE591/MAT591 | 25 | Combinatorial Design Theory |

F09 | CSE424 | 19 | Systems Capstone II |

S09 | CSE301 | 55 | Ethics in Computing |

S07 | CSE434 | 39 | Computer Networks |

S07 | IEE598 | 26 | Optimization II (Integer Programming) |

S06 | CSE412/598 | 35 | Database Management |

F05 | CSE412/598 | 35 | Database Management |

F05 | CSE 534 | 20 | Advanced Computer Networks |

F04 | CSE434 | 27 | Computer Networks |

F03 | CSE434/598 | 55 | Computer Networks |

F02(2) | CSE310 | 80 | Data Structures |

Pre-2001 at Vermont, Waterloo, Auckland, Toronto, Saskatchewan: | |||

S01 | CS 103 | 30 | Programming Languages |

F00 | CS201 | 33 | Operating Systems |

S00 | CS 222 | 33 | Computer Architecture |

F99 | CS 101 | 39 | Computer Organization |

F98 | CS 266 | 23 | Network Security and Cryptography |

F97 | CS 265 | 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 |