This course is offered through Coursera — you can add it to your Accredible profile to organize your learning, find others learning the same thing and to showcase evidence of your learning on your CV with Accredible's export features.
Course Date: 26 September 2014 to 21 November 2014 (8 weeks)
Introduction to the design and implementation of applications for handheld systems, such as smartphones and tablets, running the Android Platform.
Estimated Workload: 3-6 hours/week
Since 1991 Dr. Porter has been a professor of computer science at the University of Maryland and the University of Maryland Institute for Advanced Studies (UMIACS).
Dr. Porter is an award-‐winning teacher and researcher. He is a winner of the National Science Foundation Faculty Early Career Development Award and the Dean's Award for Teaching Excellence in the College of Computer, Mathematics, and Physical Sciences.
Dr. Porter's research focuses on techniques, tools and empirical studies for improving software development. He is a frequent speaker at scientific conferences, has served on the editorial boards of scientific journals, and has taught numerous courses in the US and abroad. His recent work on using mobile phone and tablet devices, in part to support education, has also been featured in radio shows, in television news stories and in a Fortune magazine article.
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.
You can preview some of the videos by pressing the "Preview Lectures" Button at the top of the course webpage
No. Course lectures are videotaped. Students watch the lectures and do programming assignments and quizzes when it's convenient for them.
Upon completing this course, students should be able to:
Yes. Students who successfully complete the class will receive a Statement of Accomplishment signed by the instructor.
For this course, you'll need is an Internet connection, a computer on which to run free Android developer tools, and the time to read, write, and discuss.
How to write the software applications that you and half the world are running on your handheld devices.
There is no course textbook. If you want to get started early, dive into the Android Developer's Website
No. All the graded exercises will be done using the Android Emulator.
This MOOC course and another course tentatively called Pattern-Oriented Software Architectures for Concurrent and Networked Mobile Devices and Clouds, taught by Professors Doug Schmidt and Jules White of Vanderbilt University have been designed to complement each other. In particular, some of the programming assignments and the course project for both courses will be coordinated. The focus of Vanderbilt MOOCs will be systems programming topics, such as server-side Android concurrency, background processing, networking, and computing cloud integration, and will be taught starting in late March 2014. Additional information on our trans-institutional MOOC sequence is available here and here.
No. If you just want to take some of the courses in this sequence--or take them all in different order--you're certainly welcome to do so, and you'll still learn a lot. However, if you take all the courses in this sequence in the order presented you'll gain a deeper, end-to-end understanding of handheld systems, their applications and services, as well as their integration into the cloud.
All the course material (e.g., video lectures, quizzes, short essays, programming assignments, etc.), for each week will be made available at 12:00am eastern time (5am UTC/GMT). each Tuesday of the course.
This MOOC is heavily based on courses I teach at UMD, called CMSC436, Programming Handheld Systems. The course lecture material is similar, but the quizzes, programming assignments, and level of feedback for the UMD courses are more challenging, given that we have about twice the amount of time to work on it. Also, as the UMD course has many fewer students, there's significantly more personalized guidance from the professor and TAs that can't (yet) be replicated via a MOOC. This is one reason why it's important for students to take on some of the role of the Instructor. When all of us work together, we all benefit.
Yes. Students who successfully complete the quizzes and assignments in this class will receive a Statement of Accomplishment signed by the instructor. There will be two levels of Statements of Accomplishment: Normal Track and Distinction Track. The difference between these two tracks is that the Distinction Track requires successful completion of the class project.
I recommend watching the videos multiple times, looking for different levels of meaning in the diagrams and the examples. Likewise, I recommend reading outside sources of information. Naturally, participating in the online discussion forums (and ideally, a meetup group if one is available in your area) will help make the course material more engaging.
This course assumes that students are comfortable programming in Java and have some experience programming Android apps. If you don't have any significant Java programming background, please look on the Internet for one of the many Java-related tutorials that are freely-available.
All of my videos use Eclipse as Android Studio is still in a pre-release state. If you're using a non-Eclipse development environment, such as AndroidStudio, you may need to enlist the help of other students on the online discussion forum.
Coursera recommends using the Chrome and Firefox browsers. There's also a mobile app for Coursera MOOC, as well.
PDF versions of the slides will be available online as the videos are released.
• 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 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.
• 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 #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.
• 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.
• 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.
• 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.
Final Project: iRemember
We'll implement the front end of a complex handheld application involving many of the concepts presented in the class.
Each lesson will consist of video presentations, logically divided roughly into 5-10 minute sections. Throughout the lecture video there are ungraded "in-video" questions to help ensure that students are understanding the material. Each week there is also a short quiz containing questions/tasks to help ensure that the students have understood that week's lectures.
The in-video questions are related to the current video section, and provide supplementary information, “Food For Thought” discussion, and "FLASHBACK" questions, which challenge the students to think about something we have discussed in a previous lesson.Each week's videos will be accompanied by a lab exercise consisting of an assignment write-up, partially completed source code, and executable test cases. The students will run the test cases on their own computers to determine whether they've successfully completed the lab. For some labs, we will also require students to examine and grade the submissions of other students.
Please sign in to review this course.