Author Archives: Mark Durham

Switching Tracks

Clearly, my plans for posting within the week did not pan out. What is more, I have temporarily stepped away from learning Android development to get a nanodegree in iOS development. Toward that end, I am currently involved in the “Intro to iOS App Development with Swift” class.

I am generally pleased with the class so far, although I have a great deal of familiarity with iOS app development already. Swift is new to me — of course, because Swift is a new language to everyone — but not much of the course has been about Swift. We have been promised more Swift in a future class toward the iOS Developer nanodegree.

I can tell Udacity has been learning more and more about what makes a successful online course. We are being strongly encouraged to participate in the forums and to create a community. In that vein, we are supposed to make a blog post about some particular subject. I need to go back and find that request and make that post here, but I am once again out of time, so look for that in the next post.

Back On Track

I am somewhat mortified to discover that 1) it has been a month since my last post, and 2) I have not yet finished Lesson 2. That is partly because the lessons for Android Development appear to be very, very long, but it is mostly because I have been busy with other projects. I think I was penny-wise (by signing up for the discounted course) and pound-foolish (by signing up for the course before I was really ready to begin). Other projects are out of the way now (for the time being anyway) and I am therefore back on track!

I find that I am enjoying the course a great deal. The presenters are very good and quite entertaining, in a geeky sort of way. Being a computer geek myself, I can appreciate geeky humor.

I can tell that Udacity and Google have learned a lot about how to present an online course since my having taken the previous course in HTML5 Game Development. The principal improvements all have to do with keeping the content up-to-date. The course would be a disaster without this upkeep, because it is clear on almost every page (slight exaggeration) that Android Development is a moving target. Even the open source weather data API changed out from under them!

I am somewhat disappointed in the approach however. Building the Sunshine app is a great idea for the centerpiece of the class, but the lessons are all tending to fall into the same, mostly unhelpful pattern:

  • Step A) We want you to go out into the Internet and find out how to do this thing
  • Step B) Do the thing in the Sunshine app
  • Step C) Run the app
  • Step D) Click this button saying you have done Step B and Step C
  • Step D2) Answer this question proving you have done Step B and Step C
  • Step E) Watch as we explain how we did it

As a software developer, I know this is how a great deal of software is developed (with the exception of Step E — we seldom get to see someone explain how we should have done something). As an educator, I know this is a terrible way to teach people.

It is a much better plan to explain material first, and then have the student attempt to integrate and use that new-found knowledge. It would not be enough to just present the working Sunshine code first though. At first you need to present the new information outside of the context of the Sunshine app.

As an example from Lesson 2, consider the UriBuilder. After a very brief discussion of why we might want to use UriBuilder (which I believe is actually Uri.Builder), we are told to “Use UriBuilder to build up the URL” without any instruction even hinting as to how to do that.

A properly scaffolded lesson would introduce the UriBuilder first, with an expanded discussion of why and how to use UriBuilder. This discussion should not mention the Sunshine app or require doing anything with the Sunshine app’s code. This would be a standalone mini-lesson about what UriBuilder is, why you might want to use it, and how to use it when you do use it.

The mini-lesson would conclude with a few questions (in other words, a short quiz) about UriBuilder and how to use it to create particular URLs. It would not hurt to spend a few moments talking about the difference between a(n) URI and a(n) URL, or to at least present that information in a sidebar. (Does Udacity even have sidebars? I don’t think so in the sense I mean, but you could put the information or a link to it in the Instructor’s Notes.) That difference really has nothing to do with Android Development, but it is the kind of thing you would expect to see in a book or (especially) a text book.

Once the student has demonstrated some context-free mastery of UriBuilder, only then should you ask her to “Use UriBuilder to build up the URL” used in the Sunshine app. Learning how to use UriBuilder and using UriBuilder within our Sunshine app are two very different things. By combining the two, Udacity and Google have made learning more difficult than it needs to be. And this is only one example. Lesson 2 is full of these missed opportunities to teach better.

I hope to comment more on the class in the coming weeks. My next post will hopefully be within a week of this one. Until then!