Course Details

Intro

Programming Mobile Applications for Android Handheld Systems: Part 1

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 Coursera Specialization

This course and two others, led respectively by Drs. Douglas Schmidt and Jules White of Vanderbilt University, have been designed to complement each other. Click here to find out more about the Mobile Cloud Computing with Android (MoCCA) Specialization. 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. 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.

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.

Syllabus

Schedule

Week #1:

Objective: In this lesson, I discuss the Android Platform and the Android Development Environment. By the end of this lesson you should understand the components comprising the Android Platform and be able to use various tools found in the Android Development Environment

•  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. 

Week #2:

Objective: In this lesson, I explain the basic components from which all Android applications are created. I also present the Activity class - one of the main class responsible for displaying an application's user interface. By the end of this lesson, you should recognize the four fundamental components of Android applications, be able to create a simple Android application and understand the lifecycle of the Activity class.

•  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).

Week #3:

Objective: In this lesson, I explain the Intent class and Permissions. I also present the Fragment class - another key class responsible for displaying an application's user interface. By the end of this lesson, you should be able to create applications comprising more than one Activity, understand how to define and enforce permissions and be able to design applications that run on multiple, differently-sized devices.

•  Lecture #5 – The Intent Class

•  Lecture #6 – Permissions

•  Lecture #7 – The Fragment Class

•  Lab #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. 

Week #4: 

Objective: In this lesson, I summarize and demonstrate the many class Android provides for creating user interfaces. By the end of this lesson, you should be able to define and deploy applications with sophisticated user interfaces.

• 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. 

 

• Mini-project - Modern Art User Interfaces: Students will build a complete app from scratch. Collaborators from the Musuem of Modern Art will help student draw some inspiration from the work of several Modern Art masters.

Week #5:

Objective: In this lesson, I dive deeper in Android, focusing on advanced some of the advanced capabilities it provides. I discuss using User Notifications to interact with the user, listening for and responding to events using the BroadcastReceiver class, and handling concurrency with Threads, AsyncTask & Handlers. There are also two optional lectures dealing with using Alarms to run code at pre-scheduled times and with understanding how to access data over the network. By the end of this lesson, you should understand how these key technologies are used to support more advanced Android applications.

• Lecture #10 – User Notifications

• Lecture #11 – The BroadcastReceiver Class

• Lecture #12 – Threads, AsyncTask & Handlers

• Lecture #13 - Alarms

• Lecture #14 - Networking

• Lab #5 – Tweet app: Students build an app that downloads and displays Tweet data. The app uses an AsyncTask for downloading data over the network. The app will also user BroadcastReceivers and User Notifications to apprise the user of the apps behavior and state.

Week #6:

Objective: In this lesson, I present a number of technologies related to presenting and interacting with dynamic content. This includes graphics and animation, handling touch input from the user, and recording and playing multimedia. By the end of this lesson, you should be able to animate your applications, create apps that respond to both standard and custom gestures, and display and use multimedia content.

• Lecture #15 – Graphics & Animation I

• Lecture #16 – Graphics & Animation II

• Lecture #17 – Multi-touch & Gestures

• Lecture #18 – MultiMedia

• Lab #6 - Bubble Popper: Students 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 is displayed, the bubble pops. The app will also accept gesture input, allowing the user to change the direction and speed of the bubble, using a fling gesture.

Week #7:

Objective: In this lesson, I go over the many sensors that now come standard on most mobile devices. I also provide a focused discussion of using sensors to capture location information and using maps to display that information. By the end of this lesson, you should be able to create context aware applications whose behavior changes based on environmental conditions.

• Lecture #19 – Sensors

• Lecture #20 – Location & Maps

• Lab #7 - Place Badge Collector: Students build an application that uses location information to collect Badges for the places they visit.

Week #8:

Objective: In this lesson, I wrap up with a discussion of some behind the scenes Android capabilities. I discuss how to manage structured data, how to share that data across applications using the ContentProvider class, and how to run operations in the background and across processes using the Service class. By the end of this lesson, you should be able to design complex applications that leverage complex structured data sets and that perform processing in the background.

• Lecture #21 – DataManagement

• Lecture #22 – The ContentProvider Class

• Lecture #23 – The Service Class

• Lab #8 - Place Badge Collector Content Provider: Students build a ContentProvider to store the Place Badges they collect with the app from Weekk 7 application that uses location information to collect Badges for the places they visit.

Mini-project - DailySelfie: Students will build a complete app from scratch. This app will remind users to take a picture of themselves once a day. The app will collect and display the resulting set of photos.

Pace Finished
Language English
Provider Coursera
Calendar
0 Interested
Class Central users
+ Add to my courses
Canvas Network http://Canvas.net

Learn new skills and build knowledge for free

Advertisement
3D Printing for Business novoed.com

Learn how to leverage 3D printing to innovate your business!

Advertisement
FAQ View All
What are MOOCs?
MOOCs stand for Massive Open Online Courses. These are free online courses from universities around the world (eg. Stanford Harvard MIT) offered to anyone with an internet connection.
How do I register?
To register for a course, click on "Go to Class" button on the course page. This will take you to the providers website where you can register for the course.
How do these MOOCs or free online courses work?
MOOCs are designed for an online audience, teaching primarily through short (5-20 min.) pre recorded video lectures, that you watch on weekly schedule when convenient for you.  They also have student discussion forums, homework/assignments, and online quizzes or exams.

5 reviews

Write a review
4 out of 4 people found the following review useful
2 months ago
profile picture
Dean completed this course.
This course suffers from a fundamentally flawed approach to teaching Android development. It tries to teach Android development through lectures instead of having students write Android applications. While the production quality of these lectures is high, they are nearly useless for learning Android development. L Read More
This course suffers from a fundamentally flawed approach to teaching Android development. It tries to teach Android development through lectures instead of having students write Android applications. While the production quality of these lectures is high, they are nearly useless for learning Android development.

Learning to write Android applications is mostly learning the Android API. It is a rich, complex API and just like learning any other API such as JPA, JSF, or Swing you have to write code to learn it. While this course does have programming assignments, Coursera defeats the learning process by distributing Android applications that are more than 90% complete with a few TO DO blocks in them for students fill in with a few lines of code.

This approach is useless. What is needed is to have students write entire Android applications. In a MOOC applications from thousands of students could only be graded by an autograder, and this I believe is why Coursera chose to over-emphasize lectures instead. Coursera would not spend the money needed to develop an Android autograder.

It looks like the upcoming version of this course has added 2 mini-projects in which students write complete apps. This is a step in the right direction. I'm currently working through the Udacity Android course (half way through) and I recommend that course over this one because the Udacity course makes you write nearly all of your own code.

The Princeton courses on algorithms by professors Sedgewick and Wayne have a very impressive autograder that could serve as a model for Coursera's Android courses. The professors specify an API that the application has to implement and the autograder gives detailed feedback on the implementation. There will be some challenges for an autograder for Android applications. It may not be possible to autograde an app that plays an audio or video file. Someone has to watch and listen to see if it is played correctly. Peer grading would be needed in these cases.

Coursera is responsible for this failed approach. During the second course in this specialization (taught by Professor Douglas Schmidt) some of us were lamenting the lack of an autograder. Professor Schmidt responded that there was no way to develop an autograder since they had no budget for the two courses. This course alone provided over $400,000 in revenue to Coursera, but they didn't invest any of it back into the course. Coursera ate all of the seed corn.

Professor Porter probably did the best he could with what he had to work with. It is up to Coursera to provide the resources (money) to create the technology needed to teach this course effectively. Startups are supposed to create new technology, not repackage centuries-old techniques and deploy them on the web.

Get with it, Coursera.

Was this review helpful to you? YES | NO
1 out of 2 people found the following review useful
a year ago
profile picture
Anonymous completed this course.
The course is perfectly organized, very precise, well spoken, covers everything for a new android developer to start a new career in mobile development. It takes from grounds up. I am still in middle of course, but can't wait to rate this class. I have been on youtube researching tones of good android course to make my Read More
The course is perfectly organized, very precise, well spoken, covers everything for a new android developer to start a new career in mobile development. It takes from grounds up. I am still in middle of course, but can't wait to rate this class. I have been on youtube researching tones of good android course to make my definite move. At last I found very well explained course on net and good part is eventually it to get recognized certificate too.
Was this review helpful to you? YES | NO
1 out of 4 people found the following review useful
6 months ago
profile picture
Mattia Monga completed this course, spending 8 hours a week on it and found the course difficulty to be medium.
Was this review helpful to you? YES | NO
1 out of 2 people found the following review useful
5 months ago
profile picture
Maresu Andrei Razvan completed this course, spending 6 hours a week on it and found the course difficulty to be medium.
Was this review helpful to you? YES | NO
0 out of 2 people found the following review useful
6 months ago
profile picture
Anonymous completed this course.
It is very useful to learn android.In this class you can do very interesting android applications.
Was this review helpful to you? YES | NO

Write a review

How would you rate this course? *
How much of the course did you finish? *
Review
Create Review