I usually teach USC's graduate course in Operating Systems. In this class, we read several classic and topical papers from the OS literature and also a substantial programming project involving an instructional operating system. I also teach the undergraduate Operating Systems where students implement process management, virtual memory and file systems on a Unix-like instructional OS.

In the past, I have taught a seminar course devoted to current research in mobile and cloud computing. The class involved a substantial project on cloud-enabled smartphone applications. Occasionally, I teach an advanced graduate course on research topics in computer networks and distributed systems. I have also taught the graduate course in computer networking.