Course Overview

The widespread adoption of smartphones and tablets has created great demands in today's industry for developers who can develop software for mobile devices. According to the U.S. Bureau of Labor Statistics, "the job market for mobile application developers is expected to skyrocket by 32% from 2010 through 2020, creating close to 300,000 new positions and heralding one of the decade's largest increases for any occupation (IT or otherwise)".

To prepare students for this growing demand, we have developed this mobile app development course. Instead of covering both iOS and Android, which are both important, we choose to focus only on one platform, the Android platform, leaving iOS to a seperate course that our department is currently developing. Our teaching philosophy is to get students to learn one thing well and deep, rather than to learn many things at a shallow level.

This course primarily focuses on User Interface (UI). After taking this class, students should be able to develop sophisficated and professional-looking apps. The prerequisite of this course is Java programming. However, if students have a solid experience in another programming language, such as C/C++, and they are capable of learning Java by themselves along the way, they should be ok.

Focus: User Interface Design

In mobile app development, the most difficult thing to learn is the User Interface (UI) design and implementation. This part is very crtical; not many people like to use an app with a bad UI, regardless of how useful that app is. To learn UI, learning a few APIs is not enough; you need to understand a lot of elements that are relevant to UI. Each of them may not be very difficult to learn, but there are so many things that you need to learn. It takes a lot of time and practice to become proficient in building appealing UIs.

In this topic, we will systematically study the basic UI elements in Andrioid programming, including Activity, Fragment, layout, menu, Views, UI Widgets, RecyclerView, ViewPager, etc. Moreover, we will cover how to polish UIs; this includes graphsics, styles, drawing, animation, custom view, etc. To help student gain a deeper understanding of the Android UIs, we will also study how various UI features are actually implemented in Android. The ultimate objective is to teach students how to develop appealing and professional-looking user interface in mobile applications.

Server-Side Programming

Most mobile apps have two parts: client and server. The client side is the app that runs on your device, while the server-side code runs on a remote server. Although the focus of this class is on the client side, we do want students to be able to write some simple server-side code. We are going to use Apache, Php and MySQL for our server. We will also introduce REST API. Students should be able to create a simple server to provide data to their mobile apps or upload data from the app to the server, through REST APIs.

Future Learning

Due to the time limitation, we cannot cover everything about Android in this class. Moreover, it does not matter how much we cover, in a few years, what you have learned from this class may become obsolete, and new features will become available. In fact, some of the knowledge I taught in Summer 2014 became obsolete when I taught it again in Spring 2015, because of the release of Lollipop. Therefore, the knowledge itself from this class is not the most important part (yes, it will help you find a job); what I hope is to lay a solid foundation of the Android UI and system, which can enable you to quickly master new technologies in Android whenever they appear.

Grading Policy

  • Labs: 50%
  • Final Project: 50%
  • Late Homework Policy: 10% deduction will be applied to each day after the deadline.


Most of the contents that we cover can be found online, so textbooks are not necessary. However, I do use the following books when preparing for this course:

  • Google Android (free online book)
  • Android Programming: the Big Nerd Ranch Guide by Bill Phillips and Brian Hardy.


Kevin Du

Professor: Kevin Du
Office: CST 4-285
Phone: 443-9180
Office hours: Just stop by

Teaching Assistant

Francis Akowuah