teaching
While at the University of Washington, I had the pleasure of advising and graduating the following Ph.D. students:
- Roxana Geambasu, a professor at Columbia University.
- Krishna Gummadi, at the Max Planck Institute for Software Systems.
- Alex Moshchuk, a software engineer at Google.
- Charlie Reis, a software engineer at Google.
- David Richardson, a software engineer at Apple computer.
- Stefan Saroiu, a senior researcher at Microsoft Research.
- Andrew Whitaker, a software engineer at Amazon.
I also taught undergraduate and graduate computer science courses, including:
-
CSE142 - Computer Programming I. Basic programming-in-the-small abilities and concept, including procedural and functional abstraction with simple built-in data type manipulation. (winter 2006)
-
CSE333 - Systems Programming. Substantial programming experience in languages that expose machine characteristics and low-level data representation (e.g., C and C++); explicit memory management; interacting with operating-system services; and cache-aware programming. (spring 2011, spring 2012, fall 2012)
-
CSE451 - Introduction to Operating Systems. An introductory undergraduate course on the principles of OS’s. The course involves Linux kernel hacking projects; as an interesting wrinkle, students use VMware on top of Win2K to test/run their hacked up Linux kernels. (winter 2001, winter 2005, spring 2009)
-
CSE461 - Introduction to Computer-Communication Networks. Covers computer network architectures, protocol layers, routing, transport, security. (autumn 2005)
-
CSE550 - Introduction to Computer Systems Research. Explores computer system design, implementation, and evaluation. Covers principles, techniques, and examples related to the construction of computer systems, including concepts that span network systems, operating systems, web servers, parallel computing, and databases. (fall 2011)
-
CSE551 - Operating Systems. Operating system design and construction techniques. Concurrent programming, operating system kernels, correctness, deadlock, protection, transaction processing, design methodologies, comparative structure of different kinds of operating systems, and other topics. (spring 2001, spring 2002, spring 2003, spring 2004, spring 2005, spring 2007, pmp winter 2008, pmp fall 2009, winter 2011, pmp winter 2012)
-
CSE552 - Distributed Systems. An advanced graduate course on distributed systems, focusing on both classical and modern results. (winter 2002, pmp winter 2004, pmp spring 2013)
-
CSE590IS - Readings on Internet Systems and Services. Covered topics such as clusters, security, Web systems, CDNs, content transport, and service programming models. (winter 2003)
-
CSE599W - Operating Systems and the Web. Desktop operating systems and web browsers have been on a collision course for the past decade. In this course, we examined papers and industrial systems that are suggestive of what OSs, browsers, and the web could become. (winter 2010)
-
CS39C - Communications Infrastructures and Mobile Computing. A freshman seminar on the history and societal implications of computing and communications infrastructure, taught at UC Berkeley in 1999 with Profs. Randy Katz and Armando Fox.