12-10-2012, 05:15 PM
Teaching Operating Systems Using Android
ABSTRACT
The computing landscape is shifting towards mobile devices.
To learn about operating systems, it is increasingly impor-
tant for students to gain hands-on kernel programming expe-
rience in these environments, which are quite dierent from
traditional desktops and servers. We present our work at
Columbia University to teach operating systems using An-
droid, an open, commercially supported software platform
increasingly used on mobile and embedded devices. We in-
troduce a series of ve Android kernel programming projects
suitable for a one semester introductory operating systems
course. Each project teaches a core operating system concept
infused with Android or mobile device specic context, such
as Android specic process relationships, use of sensors,
and design considerations for resource constrained mobile
devices. We also introduce an Android virtual laboratory
based on virtual appliances, distributed version control, and
live demonstrations which gives students hands-on Android
experience, with minimal computing infrastructure.We have
used these Android kernel programming projects and the
Android virtual lab to teach an introductory operating sys-
tems course. Although this was our rst time teaching the
course using Android, over 80% of students surveyed en-
joyed using Android and the majority of students preferred
Android to traditional desktop development.
Categories and Subject Descriptors: D.4.0 [Operat-
ing Systems]: General; K.3.1 [Computers and Education]:
Computer Uses in Education{distance learning; K.3.2 [Com-
puters and Education]: Computer and Information Science
Education{computer science education
General Terms: Design, Experimentation, Human Factors
Keywords: Operating Systems, Android, Mobile Devices
INTRODUCTION
Hands-on learning through programming projects plays a
key role in computer science education, and hands-on kernel
programming projects are especially important in the area
of operating systems (OS). Many approaches to designing
these kernel programming projects have been proposed and
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, to
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
SIGCSE’12, February 29–March 3, 2012, Raleigh, North Carolina, USA.
Copyright 2012 ACM 978-1-4503-1098-7/12/02 ...$10.00.
implemented. Several pedagogical OSes exist [4,13,14] where
students ll in or build missing subsystems. In recent years,
many institutions have also begun using Linux to teach OS
[1, 6, 11]. All these solutions focus primarily on desktop or
server environments, whether physical or virtual.
The computing landscape, however, is shifting. The dom-
inant computing platform is becoming the mobile device [5,
15]. The real-world constraints and operating environment
of mobile devices are quite dierent from traditional desktop
or server computers. It is important for students to learn in
this new environment, and its prevalence and popularity can
be used to create engaging programming projects.
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.