Launched in 2012 and founded by professors Andrew Ng and Daphne Koller, Coursera is an education platform offering over 1,000 courses from different fields. The courses are created by Coursera with the help of partnering universities and organizations worldwide and the best bit is: they are free and available for all.
Coursera Android course
The Coursera Android Course
The course was 8 weeks long and pitched as an entry level course into the world of Android Development. Android Development—not programming—so you needed to have a little bit of prior programming experience to get the most out of this course. The course content was taught by a professor of computer science at the University of Maryland, Dr. Adam Porter, who was supported by a group of Community Teaching Assistants. Which was probably a good thing given there were around 250,000 students enrolled on the course worldwide.
Now, how about we go through an average week of the course? No objections? Fantastic!
Each ‘week’ of the course was released on a Friday morning (evening if you are in the UK like me), and you had time until the following Sunday to watch the presentations, do the quizzes, the labs and a survey. Downloading the presentations onto my phone with the Coursera app made consuming the presentations on my way to work extremely easy, assuming I managed to get a seat that is, not so much when your personal space is being invaded by your fellow commuters. The presentations as a whole I found easy to absorb. I really liked the use of code samples and demoing apps on an emulator to really hammer home important Android Principles. All of the code samples used were made available to students for them to look into at their leisure.
After finishing the presentations, usually on a Wednesday night, I would sit down and go through that weeks quiz. The quizzes themselves did not take very long to complete, assuming you were paying attention and weren’t overridden with guilt when you got a question wrong and just had to take the quiz again to redeem yourself … (deep breath) … all in all they were pretty standard and it was good to have a small exercise to complete to test your knowledge on what was covered in the presentations.
A Lab is a coding exercise to give students an opportunity to put into practice what has been learnt from the presentations. For quite sometime now I have been debating on how to write this section—I could rant, I could be polite and say everything was perfect. But to avoid both and stay as neutral as possible, let’s do this as a series of questions.
Just like Dexters lab
What did you get for each lab session?
Each week consisted of a Skeleton project and an associated worksheet.
Was the worksheet useful?
Yes, mostly. I found the summary section the most useful part. It gave a nice overview of the problem that needed to be tackled for that week.
Mostly? What was wrong with it?
Well, the implementation details section was annoying. Most of the time it contained the same spiel about downloading the skeleton project, importing it into the IDE and looking for the TODOs. I know it had some actual important implementation details buried in there but I gave up, I don’t want to read duplicate information week after week—‘ain’t nobody got time for that’.
What would you do?
Put it on the website, have a “Important information to remember for the rest of time” section. Then I can have just the important implementation details in the document. This applies for the testing section too, I don’t need to know each week that there are tests, tell me once I’m sure I can remember.
How was the skeleton project?
In a word: messy. I think Novoda has made me a snob when it comes to reading code. Code at Novoda reads like a story, methods do exactly what they say they are going to do. The Methods are ordered based on when they are called. All in all it is a pleasant experience. Now the skeleton project did read like a story, if that story was a horror story. Comments all over the place, Hungarian notation used throughout, it was painful. I had to resist the urge to clean up the code base every week. I could have done it but that would have taken a significant amount of time each week to accomplish. I did feel a little like I was cheating on Novoda when I didn’t clean the code base before working on each of the labs—I’m sorry!
Would you do the lab section any differently?
Yes, I really did not like the whole “here’s a skeleton project, fix it” approach to coding. I felt really disconnected from the code I was writing. I appreciate that this is very close to a real world scenario where you could be jumping from projects week to week, but I don’t think that this works in a learning environment. I sincerely believe that a better approach would have been to guide students through the setup of a base project. This base project could then slowly be built upon each week to encompass the key concepts that go into making an Android app. For me, a lot of learning in code comes from understanding the code base you are working with, and whilst it is true that as a developer you will need to look at someone else’s code, when you are in a learning situation you are better off starting from a clean base to understand how everything fits together, without someone else obfuscating the code.
How was the submission system?
The submission was the bane of my life whilst doing this course. Each week the lab worksheet would supply a folder structure that the lab assignment had to follow for the submission system to process it. So did it work? No. I curse you submission system! If you tell me to put it in that order, make sure that the submission system actually recognises it, please. I nearly gave up on this course every week because of that stupid system. ‘But it can’t be that bad, you uploaded eventually right?’ Yes I did, that’s because the upload system, when you eventually get the submission result back, has a rather useful error message system. Here’s the thing though, I don’t want to rely on an error log to tell me how to upload a project.
I have one extra thing to say about the submission system: why you no use GitHub? Why you no use Git? Seriously, this is a useful skill to have if you want to do development. I used it all the time whilst doing this course. I think that every programming course should have one or two lessons on the basics of Git and how to set it up for development. Do it Coursera!
I haz certificate
A final note
It is worth saying that the team at Coursera have made a commendable effort to make an introductory course into Android and whilst it was not for me, I am sure that there are many students that found this course extremely useful. I am sure that they will continue to iterate over the course material to make it better year on year. Give the course a try, you might get a certificate.