Advanced iPhone Development course now on iTunes U

MATC logo

The videos of the Advanced iPhone Development class I taught this past semester at the Madison Area Technical College are now available for free on iTunes U. These videos amount to over 35 hours of HD content, covering more advanced iPhone development topics such as Core Animation, multithreading, Quartz 2-D drawing, and OpenGL ES. The course notes that accompany the class are available for download here in VoodooPad format, or for viewing here in HTML. Links to all sample applications used for the class are present in the notes.

This course was presented as a professional development class, as opposed to a standard college course with homework and tests.  It was simply my goal to introduce everyone to the more advanced topics they might run into while developing iPhone (and later, iPad) applications, and then leave them with the detailed course notes and videos to review when they actually needed to know this specific information.

As you might tell from the videos, I didn't prepare many slides or a specific talk for each topic.  I used the notes as a prompt, but presented most of the topics off the top of my head.  Therefore, these presentations are a little less polished and more opinionated than you will find in equivalent WWDC sessions or in the very good Stanford iPhone development course.  It's a different style of presentation, but that may still work for many people.

I also apologize for the in-class video quality on the very first session.  We were using an older camera for that, before we switched to a new HD camera for the remainder of the semester, and I had some troubles processing the video from it.  I'll try to recover the missing sections and re-upload that particular segment.

Also, I will be posting the videos we took of 2 of the 3 guest speakers soon.  I just needed to make sure that I edited those properly before posting.

Finally, I would like to thank all of the people that made this class possible.  First, Eric Knapp deserves a lot of credit for organizing the iPhone applications development certificate program at MATC and for talking me into doing this class.  His hands-on approach in the introductory iPhone class at MATC solidly prepared the students in my class for doing real-world iPhone development.  Joleen Welborn and John Tomczak went far beyond the call of duty in handling the behind-the-scenes details of the class, from the video and audio recording, to helping me set up and tear down the class each day.  Many others at MATC provided significant help along the way, all of whom are listed in the video credits.


I've just watched the first of these classes and I wanted to thank you very much for it - the amount of useful books, web sites and software alone and following them up meant it took me about 7 hours to watch your video! I really appreciate you and everyone else who helped in making this resource available.

I'm keen to see the rest of the sessions.



Hi in iTunes I can not pause your video download . so every time it starts from 0.

Where are you trying to play this, the iPad? My recommendation is to use iTunes on the desktop to download the classes, then sync them to your iPad, iPhone 4, or transfer them to other HD-playing devices, like the Playstation 3.

Unfortunately, I have no control over how the content is presented within iTunes. You'll need to take that up with the people at Apple.

Ya I think you are right . thanks .

Anonymous wrote:
Ya I think you are right . thanks .

we can resume download in wwdc videso in iTunes on desktop but can't do so for your . But I understand you have no control over it .

Brad, when will we see Pi3 for the iPad? Thank you,

I'm working on it right now (along with iPhone 4 support and a bunch of other fixes). I hope to have it in review within a month.

I am really enjoying your lectures. It is very difficult to find anything that goes into this depth. But now Apple is recommending the new methods to replace the original animation blocks. What trips me up is the how these methods work with the run-loop -- what is happening when and what is known at that point??? Do you have any notes or samples using the new animation methods with blocks?


I haven't done much work with methods like the new +animateWithDuration:animations:completion: in iOS 4.0, because I tend to work with lower-level Core Animation methods. However, if these are like all the other animations, they will be kicked off on a background thread (managed for you by the Core Animation server). Any property changes should happen either at the beginning or end of the animation, not continuously throughout, so if you need those values you'll need to poll the UIView's layer's presentationLayer, which maintains the current state of the view's backing layer.

Everything new in iOS 4.0 will be covered in the fall semester of the class, which will be one of the ways I will update the curriculum.

Thank you. Will the fall semester be filmed as well? Is there any chance that the advanced Class will be offered via iTunes?? It looks great.

Duh - the title says this is the Advanced course. So that only leaves the question about the fall class -- will it be filmed as well? It would be nice to see this kind of coverage on iOS4

Yes, the fall class will be recorded as well. Whether we release videos as the class proceeds or at the end of the semester in one grouping (like we did this time) will be a question, because we want people to attend the sessions.

Let me place a vote in favor of releasing them as the class proceeds. I'd love to attend but New Mexico is a little far from where you are holding the sessions. If you wanted to offer the class for a subscription fee, I'd be happy to do that. This is worth supporting.

Hello I am so delighted I found your webpage, I really found you by accident, while I was searching on
Bing for something else, Regardless I am here now and would
just like to say thanks for a fantastic post and a all round entertaining blog (I also love the theme/design), I don’t have time to browse
it all at the minute but I have bookmarked it and also included your RSS feeds, so
when I have time I will be back to read a lot more, Please do keep up the
great b.

Hi , i tried to download your free video course from itunesU but the download rate is very slow < 8 KB/s although i have 12Mbps connection.
is there any alternative other than itunesU to download from ? the single file takes ages and finally gives download error.
Your course looks very interesting BTW.

That's odd. These videos are hosted by Apple on their iTunes content servers, so they should be as fast as the rest of the content on the iTunes Store. I've had them download ridiculously fast on a good connection. Maybe you can try them later and get better results.

These are not hosted anywhere else, because we wouldn't be able to afford the bandwidth for them. We've already seen 27 terabytes of download traffic for the course so far.

Brad i had a similar problem
i tried to download the whole course from itunes and when i had downloadedmore than half of any video it crashed time after time
and of course at a ridiculous slow rate
i had to download them using Jdownloader.

Hello Brad,
first of all thank you so much for the wonderful material.
I've been having a great time watching it so far.
One question: On the iTunes course page there are links for the Spring 2010 course notes and Fall 2010 course notes, but they both point to the Spring 2010 course notes.
Would you mind making the Fall 2010 version available?
All the best from Brazil,

I just tried in iTunes, and the two links both lead to the correct set of notes. The fall course notes link does download the course notes specific to the fall session.

In any case, this link should lead to the fall notes directly.

Hi Brad,

I just discovered the course at iTunes and it is chock full of great stuff! I planned on going through them all in order but I just had to jump ahead to the OpenGL ES 2.0 class. Thanks for packing so much detail in this one class, it has helped a great deal. As you say in the class, a lot of the intro material for OpenGL expects that you already know OpenGL, so every little bit of exposition helps us beginners.

Just one question about the class, I can't seem to find the ShaderExamples iPad source code that you use at the end of the class to explain the various shaders you implemented or ported. Is that available somewhere? It seems like a nice way to explore and compare different shaders and seems like the perfect place for a beginner to add new shaders as they learn about OpenGL.

Thanks again!


All of the sample applications are linked to in the course notes, which can be found in the links to the left of the page when viewing the class in iTunes on the desktop.

This particular example can be found here.

Thanks Brad for this great course, really thanks.


These videos created by Handrake will not play on my first generation AppleTV.

Yes, the first generation AppleTV lacks the ability to play 720p HD videos at 30 FPS (it tops out at 24 FPS). My options were to either drop the resolution (making the text too blurry to see) or reduce the framerate (which made the video too stuttery). I decided not to degrade the video quality just to support the original AppleTV.

iPads, iPhone 4, third generation iPod touch, and the 2nd generation AppleTV all support this video well. With the 2nd generation AppleTV only being $99, it's inexpensive to upgrade.


It would be good to be able to view your course on the Apple TV 1 but for now that' s not to be. After reading about what the Apple TV 2 cannot do that the Apple TV 1 can I decided not to pick up an Apple TV 2 for now.

Please consider making your videos playable on Apple TV.

Hello Brad,

Where can i find sample codes for your advanced iphone course (specially the code for the multithreading course, which is an awesome course on a difficult subject so thanks for this:).


As I state in one of the comments above, the class notes are linked to on the left hand side of the class page in iTunes U (on the desktop). The fall class notes can be found here in VoodooPad format. Within the notes are links to all sample applications I use in the class sessions, including the ones I wrote as well as those put together by Apple and others.

That's Ok, thank you very much Brad :).

Many regards.

Thanks a lot Brad, you did a wonderful job on teaching the advance iphone app course.

Hey, Brad.

Just finished watching all of your videos and i have to say - great job - i've learned so much from them.

Are you going to do more videos for this semester?
Maybe talk about all the new things with iOS 5 - ARC, Storyboarding and the like?



After I did the second semester of the course last year, I found that I just didn't have the time to keep it up. I could barely keep up with each week's session, and all of my other work soon became completely neglected. I decided that what I had in those two semesters was a pretty good body of work.

To be honest, not a lot of the fundamentals change, so there wouldn't be a need to update an entire semester. I saw this when going from the spring to fall semesters, with iOS 4.0 launching in between. Despite that major new OS (which arguably had more significant changes than iOS 5.0 brings), I found myself not having to change much to reflect the new OS.

Xcode 4, ARC, and some of the other new iOS 5.0 additions could be covered in a single class, so I might do a recorded guest appearance in the current MATC course (which isn't recorded because of its more hands-on nature). However, I'm too busy with my day job and my other projects to even think about doing that for a while.

Well, still - thank you.
I'll be following your blog if you manage to do that guest appearance after all.

Great job,


Thanks for sharing these videos. They are absolutely fantastic!!

P.S. I've just watched the second one, Understanding Cocoa, but I didin't find VoodooPad notes about Blocks and Handling multiple OS and device versions.

The class notes are linked to on the left-hand side in iTunes U, and can be found here.

Thank you for your reply. I've already downloaded course notes, but I can't see Blocks section on Understanding Cocoa note. On the contrary, in the relative video it's possible to see the note for this argument. Thank you very much. Regards.

Did you get the class notes for the fall semester? The ones for the spring semester didn't have anything with blocks in them. My notes here for the fall semester have the bit on blocks at the very bottom of the Understanding Cocoa section. There's also a bit on blocks in the Multithreading section, in regards to their use in GCD.

Ok, now I can see Block section. Thank you very much for your support. Have a nice day. Regards, Lorenzo.

UIView's main layer's coordinate system gets flipped to make the origin point x:0,y:0 at TOP-LEFT corner. When you add an image directly to the layer's contents and set gravity to top, like this:

myView.layer.contents = [[UIImage imageNamed:@"ball.png"] CGImage];
myView.layer.contentsGravity = kCAGravityTop;

ball appears in the bottom. Is it an intentional inconsistency?

That's what happens when the CALayer's coordinate system gets inverted. "Top" was defined as being the top of the layer under the Quartz coordinate system, so when UIViews invert their backing layer, this gets flipped as well.

Hello Brad,

I have downloaded and watched your advanced iOS development course via iTunesU and I have a question. I am working on my frist app and I have yet to find a site/person that can give me an answer

I am using Xcode 4.3.3 with storyboards and I am trying to figure out how to embed videos on the detail split of some of the different views. I am writing an educational app and I have users selecting lessons in the master split on the left, which pulls up a segue that pushes the new lesson into the detail view on the right and each lesson has a video that goes along with it. I have found examples on how to just create a "play movie" button but that's not what I'm looking to do, I would rather it look like if you visited a website and saw the video with a frame waiting to play.

Any suggestions?

To be honest, I've not used storyboards at all, because all of my work still targets iOS 4.x. In fact, my two applications don't even use Interface Builder at all. Therefore, I'm not the person to ask about this.

If you were able to describe and preferably diagram what you want to do, this would make for a good question to ask on Stack Overflow.

Syndicate content