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
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.
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 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 (optional)
• Lecture #14 - Networking (optional)
• 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.
This course is directed to Sophomore- or Junior-level undergraduate students. Students should already know how to program in Java, but are not expected to have studied mobile application development. If you don't already know Java, buthave strong familiarity with other programming languages, you can improve your Javaknowledge, by taking one of the many Java tutorials and online courses available on the web. As discussed above, this course assumes previous programming knowledge. It also assumes that you are willing to search for, read and learn from Android's developer documentation. Based on our previous experience, students who don't meet these criteria often end up being quite frustrated with the course. In short, this course is not designedfor truly novice programmers. If your background is not appropriate for this class, considerfirst taking a less programming heavyintroduction to Android such as, " Creative, Serious and Playful Science of Android Apps ",by Lawrence Angrave of the University of Illinois and Urbana-Champaign.
I thought this class had a lot of potential. It felt as if multiple people created it. The weekly emails were encouraging and a good summary. The lectures explained concepts (although there was a bit too much of “watch me do this.” The PDFs each week were good. The quizzes largely had you looking up things in the manual. Or the examples. The examples were helpful to have. But sometimes the quizzes didn’t match the examples as far as project names.
Then there were the assignments. I wanted the labs/assignments to reinforce the material and make it hands on. That wasn’t what happened. The labs felt like magic. There were typos. It was unclear exactly what was needed. I found myself relying on the walkthrus from other students to get them done. Wasting time on undocumented assumptions didn’t seem like a good way to spend time.. I did like that there were unit tests so you could watch the emulator drive the code.
Overall, the class was fair. If it wasn’t part of a three part series, I probably would have dropped it. And I certainly wouldn’t have done the final project.
Firstly my background: Been a programmer for 20 years on various platforms. I know enough java to get things done and this is my first formal course on the Android Platform.
The good: Great overview of all the main classes you'll be using in creating an Android App. All the examples used in the videos are available for download.
The bad: As said in "The good", its just an overview. You don't go into any detail of any of the components. The lecturer just drones through the very verbose slides and doesn't make them interesting. I eventually resorted to fast forwarding the videos to double speed! Too many videos have be watched in a week. Then 1 assignment is used to test the basics of some of the classes mentioned the lecture. They seemed to focus on quantity rather than quality.
How it could be improved. # Make the course longer, reduce the number of videos per week # For each topic, have a dedicated assignment for that topic to help solidify the concepts learnt for that topic. This helps re-inforce what is just learnt, instead of wading through a few hours of lectures and then doing an assignment at the end. # It started off well with diagrams on Activity Lifecyle. The rest just became monotonous very wordy slides. # They just barely skim the surface of a concept and then move on # The assignments are just about filling in a couple of lines of code in their predefined locations denoted by their TODO comments in the skeleton source code. Nobody ever learnt anything by filling in code via TODO statements.
Conclusion: I had a lot of excitement for the Android platform prior to starting this course. I would have dropped the course but I paid for the signature track up front, so I'm reluctant to simply throw my money away. I've done many courses in my 20 year programming history and I have to say this one is forgettable. You will most likely get more value from another course or by picking up a book and doing it the old fashioned way.
Sorry for the negative review. I realize it must be a mammoth task to package a course of such a rich framework in just a 2 months. Be that as it may, this is my perception having done the 80% of the course so far. A mentioned I think that is the very problem: you can't condense a course of this nature into 2 months.
The lecturer might be a bit old-fashioned but at least he presents the contents methodically and with familiarity. He explains almost evey basic aspect of android applications, including underlying structure, four classes(activity, contentprovider, Broadcastreceiver, Service), UI, async operations, networking, touching, location services etc and have all corresponding labs and quizzes to help you learn them. Having someone experienced to guide you through is definitely much better than dully reading through the official documents and stuff. After the class you should be able to dish out an android application with ease. I don't understand the people complaining. It seems to me many of them don't have the required programming background(it says you have to have at least about sophomore level) and then can't understand the contents and then blame the lecturer. Come on, this is serious programming, not a child's game. Go take some intro to programming before returning and fantasizing about making an app without spending any effort. If you want some "courses" which claim to teach something but in the end just bluffs its way through with seemingly funny but totally contentless stuffs, this is not for you and we're happy to have you leaving anyways. The deadline changess are probably about "signature track", which i doubt has more to do with coursera than the lecturer anyways.
Some others complain about the massive reading one has to do besides of the lecture videos to finish the assignments and fashion out a real application. But this is how you learn. Lectures are always just a summary and guide. It can’t replace reading. If you don’t even have this basic notion then you probably shouldn’t be doing CS at all. Bottom line: There’s simply NO course which can MAGICALLY turn you into a competent Android programmer by just lecturing. And this course this already doing great it what it can.