Stanford University has published an iOS programming course (CS193P) on iTunes U annually since the very first iPhone SDK was released. Back then, the course was taught by Apple engineers, which was unheard of at the time, and a perhaps a sign of greater openness to come. There are still a lot of good basic lessons on Objective-C, model-view-controller patterns, and other fundamentals in that first lecture series, even though Cocoa Touch APIs have changed substantially over the years. But, perhaps my favorite lecture from that first class is a short talk Loren Brichter gave on the development of Tweetie, his Twitter client that was the first app to feature pull-to-refresh and was eventually purchased by Twitter.
Now, seven years later, Stanford has begun posting lectures for Developing iOS 9 Apps with Swift. It helps to have some basic object oriented programming experience before taking on this class, but don’t let that discourage you. When I started teaching myself programming I watched that first lecture series over and over, stopping to research things I didn’t understand as I went. And even if you’re not interested in learning to program for iOS, go back and watch Loren Brichter’s talk, it’s a fascinating time capsule of how far iOS has come and the clever tricks programmers used in 2009 to get around the technical limitations of early iPhones.