Teaching

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:
S24 CSE355 120 Intro Theory of Computation
F23 CSE355 170 Intro Theory of Computation
F23 CSE355 130 Intro Theory of Computation
S23 CSE355 15 Intro Theory of Computation
F22 CSE355 130 Intro 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:
F22 CSE551 140 Foundations of Algorithms
S22 CSE551 130 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:
S24 CSE 552 12 Randomized and Approximation Algorithms
F13 CSE 552 33 Randomized and Approximation Algorithms
F10 CSE 552 17 Randomized and Approximation Algorithms
Advanced Theory of Computation:
S23 CSE 555 7 Theory of Computation
S22 CSE 555 35 Theory of Computation
S20 CSE 555 30 Theory of Computation
S19 CSE 555 20 Theory of Computation
S17 CSE 555 6 Theory of Computation
S16 CSE 555 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