Adam Porter — University of Maryland, College Park
Handheld systems, such as smartphones and tablets are now the most common way for people to access and interact with computing services. The demand for application development skills is therefore growing at a breathtaking pace. These skills, however, are multi- faceted, requiring students to master computer science and engineering principles, to learn the details of specific mobile application platforms, and to design artistic and engaging user interfaces that respond to how, where and why handheld applications are used.
This course will cover the fundamental programming principles, software architecture and user experience considerations underlying handheld software applications and their development environments. To bring these concepts alive, the course will involve in-depth, hands-on examples, implemented in the Android Platform, the fastest growing segment of the handheld system user base. Students will apply these teachings, also using the Android Platform, in laboratory projects and in a large-scale semester project.
Note: This course is part of a trans-institution course sequence.
This course and two others, led respectively by Drs. Douglas Schmidt and Jules White of Vanderbilt University, have been designed to complement each other. Therefore, some of the programming assignments and the course project for these courses will be coordinated.
This course focuses on handheld systems and the design of user-facing applications, and will be taught first. The first Vanderbilt University course, Pattern-Oriented Software Architectures: Programming Mobile Services for Android Handheld Systems will focus on systems programming topics, such as middleware services and background processing, That course is currently schedule to start in March 2014. The second Vanderbilt University course, Programming Cloud Services for Android Handheld Systems will focus on connecting Android mobile devices to cloud computing and data storage resources, essentially turning a device into an extension of powerful cloud-based services on popular cloud computing platforms, such as Google App Engine and Amazon EC2. That course is currently scheduled to begin in early June 2014.
Nevertheless, each of these courses stands alone. Students are not required to take all of them. Those who do, however, will gain a much more detailed, end-to-end understanding of handheld systems and their applications.
Table of contents
Lecture #1 The Android Platform
Lecture #2 The Android Development Environment
Lab #1: Setup: Students identify required software & install it on their personal computers. Students perform several tasks to familiarize themselves with the Android Platform and Development Environment.
Lecture #3 Application Fundamentals
Lecture #4 The Activity Class
Lab #2 The Activity Lifecycle & Reconfiguration: Students build applications that trace the lifecycle callback methods issued by the Android platform and that demonstrate Android's behavior when the device configuration changes (e.g., when the device moves from portrait to landscape mode and back).
Lecture #5 The Intent Class
Lecture #6 Permissions
Lecture #7 The Fragment ClassLab #3a - Intents & Permissions: Students build applications that require starting multiple Activities via both standard and custom Intents.
Lab #3b - Permissions: Students build applications that require standard and custom permissions.
Lab #3c Multi-pane and single-pane User Interfaces: Students build an application that uses a single code base, but creates different user interfaces depending on a device's screen size.
Lectures #8 User Interface Classes - Part I
Lectures #9 User Interface Classes - Part II
Lab #4 ToDoManager: Students build a ToDo list manager using the user interface elements discussed in lecture. The application allows users to create new ToDo Items and to display them in a ListView.
Lecture #10 User Notifications
Lecture #11 The BroadcastReceiver Class
Lecture #12 Threads, AsyncTask & Handlers
Lecture #13 - Alarms
Lecture #14 - Networking
Lab #5a Threads: We'll write concurrent, multi-threaded code to load ToDo items from a networked server via background threads (i.e., without blocking the main UI thread).
Lab #5b - Broadcast Receiver: We'll build an application that uses a BroadcastReceiver to react when events such as connecting and disconnecting the charger occur.
Lecture #15 Graphics & Animation I
Lecture #16 Graphics & Animation II
Lecture #17 Multi-touch & Gestures
Lecture #18 MultiMedia
Lab #6a - Gesture Sampler: Students build and application that accepts gesture input, such as using an "X" gesture to delete, using a "?" gesture to show help, etc.
Lab #6b - Bubble Popper: We'll write an application to display and animate bubbles (graphics that look like bubbles) on the device's screen. When users touch the screen where a bubble appears, the bubble pops.
Lecture #19 Sensors
Lecture #20 Location & Maps
Lab #7a - Obstacle Course: Students build an application that uses the orientation of the device (tilting, rotating, etc.) to guide an object around obstacles.
Lecture #21 DataManagement
Lecture #22 The ContentProvider Class
Lecture #23 The Service Class
Lab #8a - Data Management (SQL): Students develop a database for storing and retrieving multimedia notes with textual tags.
Lab #8b - Mutlimedia Notes Content Provider: Students extend the multimedia notes database so multimedia notes can be shared via a ContentProvider across multiple applications.
Final Project: iRemember
We'll implement the front end of a complex handheld application involving many of the concepts presented in the class.
7 Reviews for Programming Mobile Applications for Android Handheld Systems
10 People Interested Show