Doctoral research is academic education at its very best. There are few more satisfying forms of teaching: a one-on-one apprenticeship that enhances knowledge of student and teacher alike; an intense effort motivated by a self-constructed vision; and a gradual refinement of taste and style in choosing problems and solution strategies.

Classes I like to teach are progressive, exhibit conceptual integrity, i.e., a unifying theme or vision. I believe that interesting homeworks and personal attention are the key to a quality education. I have a strong commitment to the development of a first rate curriculum in the area of software engineering and concurrent programming. My contributions to the concurrency curriculum seek to bridge the gap between formal methods and current design practices.

Classes I have been teaching in recent years are:

  • CSE 425S -- (Formerly CS 455S) Programming Systems and Languages

  • CSE 436 -- (Formerly CS 456S) Software Engineering Workshop (first taught in 1977, an experience rather than a class, a simulation of the realities of industrial software development, industry tested material)

  • CSE 536S -- (Formerly CS 576S) Distributed Systems Design (formal models of communication, real-time computing, security, multimedia, and mobile computing)
  • CSE 537S -- Mobile Computing (an overview of wireless technology and network architectures, routing protocols in ad hoc networks, algorithms for mobile computing, middleware for mobility, and formal models of mobility)

  • CSE 548T -- (Formerly CS 563T) Concurrent Systems: Design & Verification (formal specification and derivation of concurrent programs using the UNITY logic and notation)

  • CSE 730x -- Concurrent Systems Design Seminar