Consistent with my New Years’ resolutions, I have begun the free iTunes U Stanford course from Fall 2010, “Developing Apps for iOS”, watching two lectures so far. They look to be pretty good – the production values are high and the course has good reviews from people who finished the series. I’m glad I already have some iOS programming under my belt, as it would be hard to keep up without. There were a couple of course prerequisites related to object-oriented programming which I of course do not have, but they probably would have been useful.
In addition, I am going through iOS Programming:The Big Nerd Ranch Guide by Joe Conway and Aaron Hillegrass and have completed Chapter Four (of twenty-nine total). Unlike the Stanford course, where I’m not attempting the homework, I am doing all the assignments in The Big Nerd Ranch Guide. The assignments are quite valuable, because that’s where I figure out whether I’ve really understood the chapters.
One thing interesting to me is the difference between these sources and Steve Kochan’s two online iOS programming courses, which I took this past fall. I learned a lot in his courses, but I am realizing he took a pretty practical approach to teaching the material, just covering what you needed to know to get an app to work. His online course doesn’t do much theory, for example in the area of the Model-View-Controller (MVC) pattern.
[You don’t have to read this, but a brief explanation of MVC here, as best I understand it, may be useful. MVC is the basic theoretical underpinning of iOS; it’s how touches to the screen are translated into code that does something useful. Basically, the View collects the input from the user, and the Controller then takes the input from the View and asks the Model to do something with it, as needed. So when you press a + sign on your calculator, the View registers the touch and tells the Controller that a touch happened, the Controller sends a message to the Model that it will need to do something with the data, and the Model actually contains the code to do the addition. The process is approximately reversed to put the result of the addition on the screen.
If I have this explanation all wrong, please don’t flame me, I’m still just learning.]
The Stanford course especially emphasizes MVC, spending most of the first session explaining how it works, claiming that it is necessary in order to program in iOS. I guess it’s not surprising that an academic course would spend time on theory as well as practice. In the long run, I’m sure you would want to understand the theory to be able to produce complex apps, but it seems that the practical approach should work OK for simple apps. It must work, since I got a few apps going without much understanding of MVC. As far as I can tell, Steve Kochan kept with good programming practices using MVC, but just didn’t emphasize the model.
I’m glad I got a start with Kochan, since it was the MVC thing that threw me when I was first programming – I didn’t quite understand it and couldn’t see how it translated into code, since I didn’t know any code. I remember going through one of those “For Dummies” books on iPhone programming at the start of this process and feeling like, well, a dummy, since I didn’t understand any of it. Now I have a better sense of how MVC is represented in code, and knowing some code has helped my understanding of MVC. It’s all coming together, in one big twisty mess; I just wish it could have been faster and neater.