I’ve seen a lot of people asking on here about good places on the internet to gain programming skills. When these questions come up I usually point people in the direction of the MOOCs run by Coursera (https://www.coursera.org/). I’ve done a few of their courses before and got a lot out of them so when I had an idea for a project that would require me to write an android app I decided to sign up for their “Programming Mobile Applications for Android Handheld Systems” course.
The course is aimed at those who already have some programming experience and are looking to gain skills in Android app development. Although it might be a little bit harder, I would say that you don’t even necessarily need any experience developing in Java for this course, just in an OO language of some description. For people with no programming experience I would recommend taking a basic programming course of some description first.
The course is spread over 8 weeks, with 4-6 lectures per week covering 2-3 topics. The lectures were 10-20 minutes long each, and I usually watched them at work during my lunch break. I would think that a lot of working people doing these courses are watching the lectures during their commutes or in other similar ‘void’ time. In terms of assessment there was a weekly quiz and a lab that needed to be completed. The quizzes were just simple multiple choice tests that could be passed quite easily, especially considering that you could re-take them. There were also 2 assignments that needed to be completed in order to gain a distinction. These were compulsory for those doing the paid version of the course.
The material covered starts out with creating simple UIs and then moves onto more concepts necessary for building android apps, creating animations and eventually getting to how to interact with the hardware components like the camera and the GPS sensor. The course was really well thought out with each new section building off the last. This was good because it kept you going back and using concepts from previous lectures in the course of learning new material, reinforcing those fundamental concepts.
I think my biggest criticism of the course would be the lecturing style of the professor. I concede that this is probably the most subjective thing I could have picked up on. I found that the lectures took too long to get to the point. For example a lot of lectures would feature a small app that would be used to highlight some feature. The lecturer would explain what the app does, then show the app in action and then go through the code. I found that the explanations in the beginning were completely unnecessary and the lecturer should have just gone straight into the demos. Fortunately there is a speed button on the video player when viewing the lectures which I cranked all the way up to 2x which mitigated this problem a lot.
I would say that most of the value I got out of the course would be from the labs and the assignments. The labs consisted of some skeleton code that was to be downloaded and completed in order to add some functionality that required you to use some feature of the Android platform that had been covered in that weeks lectures. The labs would also feature some unit tests that you could run to ensure that the code did what it needed to do before you submitted it. As I’m a very ‘learn by doing’ kind of person and going through the process of actually writing code that used the features enhanced my understanding far more than just watching the lectures.
The assignments had to be written from scratch. The first one was a simple app that required you to show that you could create various ui components, and the second one was a simple selfie archive app. Although they were both very simple I think that the course would have been incomplete had it not required you to create an app from scratch. Each student doing the assignments had to assess five others. I think this was done to obtain a consensus among the graders in order to ensure the assignments were graded fairly. I only had one assignment that I had to fail someone on and all of my graders passed me on both assignments. Like the labs, I got a lot out of the practical experience of doing the assignments even if they were jsut simple apps.
This course leads into other courses as part of a bigger “Mobile Cloud Computing” specialisation stream run by Coursera. This consists of 3 courses, including this one, and a ‘capstone project’. To partake in this you have to pay a fee of $50 for each of the courses and the project. This covers the costs of verifying that you are in fact the person doing the work that gets submitted. This is done by various means including using your computer’s webcam to ensure that you are in fact doing the work. I’m not sure what kind of technology they are using to analyse the data coming in to check for cheaters but I am pretty sure someone determined enough could get away with cheating although I’m pretty sure it would be less effort to just do the work. It would be interesting to see the number of cheaters caught to see how effective the system is.
Apart from my gripe with the lecturing style there is not much I can find at fault with this course. The material was well laid out and relevant to anyone looking to get into Android app development for either fun or in a professional situation. This course is perfect for anyone who is already an experienced programmer who has zero knowledge of the Android platform. I will definitely be using the skills I have picked up in a few projects of my own which I will be building next year and hopefully this will give me an edge at work if any Android development work comes up.