We are in a golden age of mobile computing. Over the past two decades, mobile computing has evolved from communicating simple messages to personal supercomputers that are capable of recognizing, mining, and synthesizing user-originated "big data." Coupled with the increasing capability, mobile computing is also becoming more ubiquitous than ever. It is estimated that 6 billion mobile devices currently exist, and that number will reach nearly 20 billion by 2020 with the recent surge of cyber-physical systems and the Internet-of-Things.
This class studies both classic and emerging topics in mobile computing through paper critiquing, in-class presentations, and the fun "wild and crazy" paper writing. The nature of mobile computing casts two important implications of this course. First, the course will necessarily span many important layers of a computer system, including application development, programming language and framework, compiler, OS, and hardware architecture. Second, the course material will be driven by key domains and use-cases of mobile computing, such as real-time computer vision, Augmented/Virtual Reality, imaging, Web, etc.
Ultimately, this course not only teaches you basic materials, but also tries to train you as an independent researcher and a critical thinker who can comfortably navigate the space of mobile computing across the systems stack.