We present our work using Android to teach OS through
hands-on kernel programming projects. We chose Android
for several reasons. First, as a production system it enables
students to learn about real-world OS issues which are hard
to glean from simplied pedagogical projects. Second, since
Android is based on the open-source Linux kernel, students
can leverage a wealth of Linux tools and documentation.
Third, Android's use of the Linux kernel provides a familiar
transition path from courses already using Linux to teach
OS. Fourth, Android is the fastest growing mobile platform
to date, and its popularity makes it of tremendous inter-
est to students. Fifth, Android is open-source which allows
exploration of a complete production system including the
OS kernel, user space libraries, and a graphical user envi-
ronment written in Java. Sixth, as a commercial platform,
Android continues to be developed and improved which nat-
urally evolves the platform as a pedagogical tool, enabling
students to learn in a modern context. Finally, as a commer-
cial platform, there is no need for us to maintain or update
Android or any of its development tools. This allows us to
focus limited resources on teaching rather than time con-
suming in-house OS development.