Teaching

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)

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)

CSE461 - Introduction to Computer-Communication Networks. Covers computer network architectures, protocol layers, routing, transport, security. (Autumn 2005)

CSE551 - Operating Systems. A graduate-level course on systems design, focusing on operating systems but also including issues relating to Internet-scale systems and mobility. (Spring 2001, Spring 2002, Spring 2003, Spring 2004, Spring 2005)

CSE552 - Distributed Systems. An advanced graduate course on distributed systems, focusing on both classical and modern results. (Winter 2002, PMP Winter 2004)

CSE590IS - Readings on Internet Systems and Services. Covered topics such as clusters, security, Web systems, CDNs, content transport, and service programming models. (Winter 2003)

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.