#10 overallClassic
CS193P Developing Applications for iOS using SwiftUI
Stanford University
39 recommenders · 40 threads · recommended in 13 years, 2009–2025 · score 59.2
CS193P is Stanford's iOS application development course, taught by Paul Hegarty, with free lecture videos and assignments covering Objective-C, Cocoa Touch, and later SwiftUI. Commenters describe it as a structured, lecture-based introduction to building iPhone apps.
Commenters repeatedly call the Stanford iOS lectures excellent and free, saying they give a structured, conceptual foundation that tutorials and sample code do not.
Recommendations by year
20062026
"I am looking for explanations that will help me build a conceptual understanding of macos UI development."
it depends on your learning style of course, but if you like lecture / course-style learning, i highly recommend paul hegarty's CS193P, it will definitely give you the in-depth, conceptual explanations you're describing.
while it is an iOS dev course (taught at stanford, lectures are freely offered online), the newest lectures are using swiftUI for UI, so pretty much all of it will translate to doing macOS dev.
paul is a cs prof at stanford and worked at NeXT and then on the objc lang many, many years ago, so he's been doing this a while and knows a thing or two :)
https://cs193p.sites.stanford.edu/
When I wanted to develop a mobile app, I started with PhoneGap and then Appcelerator, but I really didn't like the outcome. The UX didn't cut it in terms of visual appeal. Then I decided to learn Obj-C and started to go through the Stanford lectures on iOS 5. The only thing I did for 15-20 days was to listen to all the lectures without even jumping into coding. After the lectures were over, I started to work on the exercises. That helped me a lot. I didn't have any idea how Obj-C works and did a whole lot of research after each lecture what it was about and what constructs were used.
I would recommend anyone who wants to learn iOS programming to go through the Standford lectures (https://itunes.apple.com/itunes-u/ipad-iphone-application-de...) and do the due diligence after each lecture to get in-depth knowledge. It is going to take time, but it is worth it.
Speaking from the point-of-view of someone who already has a bachelor's degree, I have found it hard completing free online classes — the majority of the time I just scan through the lecture notes and assignments. On the other hand, my dad (who has two master's) has worked through almost a dozen MIT courses — and normally reads through the accompanying textbooks.
The one course I found truly useful was Stanford's iOS course (it really is one of the best iTunes U courses available). Other than that, I'm much more likely to watch a single lecture (think TED or Stanford's lecture series on YouTube) than a whole course.
Stanford's course is excellent. If you're starting out, watch a lecture a day alongside any other reading / researching you do.
The nice thing about the Stanford course is that it covers a lot of ground, ranging from good code design, to all the major Cocoa components, to details about most of the important ios lifecycles.
http://itunes.apple.com/us/itunes-u/ipad-iphone-application-...
Your best bet is to find a complete course, and as a Stanford student who has taken the iOS programming course, I can tell you that I learnt a ton. Videos are good, but you won't get enough practice. The same goes for book, there are a lot of examples but the learning by example is very limited.
By taking a complete online course, you will have lectures, videos, examples, sample code, and most importantly, you will get homework's. As a CS major, the most effective way that I have found to learn to code is to practice by example, and the homework's assigned in university courses are designed to make you learn and apply the specific skills that you have learnt in past lectures.
Great Job OP. I left my full-time job last year to become an iOS Developer. Best decision I have ever made. IOS Programming Version 2 is the best book out there, so you are on the right track.
I would also highly recommend the Stanford iTunes U Courses. http://itunes.apple.com/us/itunes-u/ipad-iphone-application-...
If you are using Xcode 4.2 the differences from the iOS Programming book are kinda tricky. I plan on posting the updated steps in the coming weeks. In the mean time, feel free to reach out to me at Steve @ Bixbyapps.com.
Thanks OP and Congrats.
iTunes U (as in U for University) is a section of iTunes where you will find a whole host of University courses to download and watch. I mention this to many people and there seems to be very little awareness that all this high quality content is available on iTunes.
There are some great courses available (most for free), in fact I have just finished the Stanford iPhone programming course by Paul Hegarty which I highly recommend.
I agree with you, it's not about the degree itself or the certification. It's about the education, and the confidence it gives you knowing that you've completed certain coursework that others in the field think is important.
As a scaled-back example, I worked through the Stanford iPhone Programming course. It was great, even without videos of the lectures or being able to ask questions. The slides and exercises provided context, structure, introduced material appropriately, etc. Much better than what I'd been able to piece together through tutorials and sample code from Apple. In the end, it was nice to know that I had the same basis that the Stanford students had when they worked on their class projects. Those projects got written up on Techcrunch, too. http://www.techcrunch.com/2009/01/22/stanford-students-relea...
Excellent course (I did mine ~2019), super grateful to Paul and Stanford for continuously releasing it publicly and updating them all these years later.
Stanford's course on writing apps for iOS is wonderful. I took it years ago. Now it has moved on to SwiftUI. I think the previous versions on Objective C (the one I took) are still available.
Most of the iOS learning material will directly apply to macOS and the things that don’t are fairly easy to figure out.
I’d dive right in and just go for it. And don’t forget to check out the free Stanford course (cs193p) on YouTube.
My personal experience: after working on existing UIKit application for over a month or so, I spent a couple of weeks trying SwiftUI out in last summer, by first watching most of the Stanford's great SwiftUI iOS lectures https://www.youtube.com/watch?v=SIYdYpPXil4&list=PLpGHT1n4-m...
With the little experience I got, I agree with mikenew's comment. SwiftUI felt like an expressive way to define UI elements, but I had some small weird details that took long time to solve, perhaps because I defined something in a way that wasn't supposed to. Ultimately, I mostly got the code to look in the way I preferred, but for example regarding animation or gestures there were some problematic details I didn't want to spend time to get exactly right.
Overall I enjoyed it much more than UIKit but I would hesitate to use it in the future in a professional setting without properly investigating how mature it is at that point of time.
If anyone is interested, here's the Shogi app I developed, intended for two local two players, and as a reminder I am quite new to the iOS ecosystem: https://github.com/EvidentSolutions/toodim
The calculator being the first app for which they used Swift... I’m guessing a calculator app was the first app many Swift programmers wrote after viewing the excellent Swift lectures from Stanford.
There is a lot of deep material on SwiftUI, for example https:// swiftwithmajid.com and https://swiftui-lab.com. The latest edition of the excellent Stanford course also uses SwiftUI, and the tutorials by Apple are great.
Stanford publishes Paul Haggerty’s course “Developing iOS Apps With Swift” free online. The whole class is small iOS app projects with source code available and he’s really great at walking through the code in the lecture videos.
Start simple and get something on your phone - that's how I did it. My personal opinion: stick to official iOS developer documentation and code samples first. That way you'll get a good feeling how e.g. Swift should be used.
My mistake was reading too much open sourced code on Github and adapt a lot of bad coding habits.
The Stanford courses are great too https://itunes.apple.com/us/course/developing-ios-11-apps-wi...
Hardest part isn't the language. Swift is among the best languages you can get today. IOS sdk, on the other hand, has become a bit of a mess, due largely to the pace at which the field is moving ( although not as bad as android).
Stanford courses are the best you can find online for free. https://youtu.be/HitSIzPM_6E
I love the Lynda.com videos on Swift and iOS. The latest Stanford iOS course uses Swift and is excellent.
The Stanford course on iTunes U comes highly recommended too: https://itunes.apple.com/gb/course/developing-ios-8-apps-swi...
I guess that is where one needs to a fair bit of market analysis. One could argue that ghostnote might or might have a potential for $50k but who knows? Add the fact that some gurus say paid apps are dead while you can find numerous paid ones working fine, it is just confusing.
Then there is decision on pricing the app. I was reading up on some devs who put out their income figures. One might be inclined to think Dash for iOS at $10 might be a hard sell but it has done really good. On comparing to another app priced at $3.99 with same number of downloads, the returns have been much higher.
So the issue doesn't stop with whether I can make it back. But also, how do I make it back. I am too learning it the hard way :)
My first impression after scrolling through the page is - It is too detailed. Maybe for complete beginners in programming.
I have started with free Udemy course - https://www.udacity.com/course/ud585
Following it up with the free Stanford classes. Currently need to start with the 3rd lecture.
Hey, I've been learning iOS dev on my own since the beginning of the year, try these:
-Stanford's Developing iOS Apps Course (free on iTunes U)
-developer.apple.com (unpaid account), gives you access to plenty of code examples to learn from and programming guides
-check out raywenderlich.com, objc.io, nshipster.com to name a few
-stackoverflow
-youtube(!)
-and if you can gather a few bucks, I'd recommend Big Nerd Ranch guide for Objective-C and the iOS programming version too
-IRC
Good luck!
Edit: formatting
I started with the Big Nerd Ranch Objective C book (http://www.amazon.com/dp/032194206X), then my job paid for a week-long class put on by Big Nerd Ranch. I can highly recommend both. I learned a ton and watching the Stanford iTunes U course on iOS development makes a lot more sense now.
Apple's own tutorials and videos are quite good. They are available once you become a paid ADC member.
Hillegass's book is what most people use, but it's slightly dated at the moment. I actually prefer Ray Wenderlich's material these days. Once you get advanced, Mike Ash's Friday Q&A is a great resource.
Video wise, the Stanford iOS course on iTunes U is great, but I'm not sure how up to date it is.
Stanford University have been running a very good course for a few years now, and it's freely available on iTunes[1]
I'd also recommend the free tutorials[2] and the more in depth ebooks[3] at Ray Wenderlich's site (the content is far better than the site's design would have you believe).
Whatever you learn, make sure it covers iOS6 and is ARC based, the older tutorials are very dated and will only confuse.
Now, if someone could point me in the direction of some really good Android tutorials…
[1]http://www.stanford.edu/class/cs193p/cgi-bin/drupal/
[2]http://www.raywenderlich.com/tutorials
[3]http://www.raywenderlich.com/store
iOS training companies fees break down to about $100 an hour, but for real life instruction including hotel and food. It is overpriced for Skype tutorials. I would suggest the Stanford iOS course which is available for free on iTunes U, supplemented by the materials on ADC.
Stanford has a free series of iOS lectures that you can get on iTunesU: http://itunes.apple.com/itunes-u/ipad-iphone-application-dev...
I highly recommend them.
1,3,4 & 6: Just fill out a Linkedin profile right now. The recruiters will start calling.
2. No, it's a seller's market now.
Go to some meetups and meet with local developers. If you're any good, you'll get lots offers for freelance work or jobs.
Since you're still a student, you should take the time to learn mobile programming. Pick ios or android. If you're going the ios route, look at the Stanford Fall 2011 video lectures on Itunes university by Paul Hegarty. That will give you the basics. The rest you can look up on stackoverflow or the Big Nerd Ranch book. If you can make a non-ugly app or two, there will definitely be more recruiters calling.
Me and a team of 3 others recently completed an iPhone app for the Evernote DevCup (I literally just submitted this link 3 minutes ago: https://news.ycombinator.com/item?id=4228897). From what the two iOS devs told me, the best resource is the Stanford iOS lectures on iTunes U. They offer lectures as recent as the last semester of classes. Good luck!
Hi, I am in a similar position as you, and have sought help in much the same way. The most common responses I got were:
Programming in Objective-C - Kochan (http://www.amazon.com/Programming-Objective-C-4th-Developers...) I am currently halfway through this book, it is primarily focused on the actual Objective-C language, and almost nothing on actual iOS/Cocoa Development (some small bits in the later chapters). I was recommended this to learn the underlying language before jumping in, very enjoyable so far, the exercises are great.
I have heard good things about both Nerd Ranch books (http://www.amazon.com/iOS-Programming-Ranch-Guide-Guides/dp/...) and will likely use that for introduction to Cocoa and iOS SDK.
Originally I planned on using "Beginning iOS 5 Development" from Apress as the iOS SDK learning book (http://www.amazon.com/Beginning-iOS-Development-Exploring-SD...), but it seems that the reviews are quite low compared to previous versions.
Finally, if you enjoy learning through video, the Stanford course is very highly recommended, through iTunes (http://itunes.apple.com/us/itunes-u/ipad-iphone-application-...). I found them very useful to start with, but I felt I wasn't learning much syntax through the videos, the talking portions are very in depth, but the coding portions are very quick (and went over my head due to not knowing Objective-C!). I will likely return to these when I have a working understanding of Objective-C.
(Most of these tips from my understanding of: http://stackoverflow.com/questions/3403049/best-book-resourc... and http://stackoverflow.com/questions/1939/how-to-articles-for-...)
Awesome list, I'd add the iTunesU course CS193P (Fall 2011) and Treehouse - with these resources, you're more than set!
Also: +1 for the interest in the apps you released.
I'm a big fan of all of the Big Nerd Ranch books. Also, Objective-C is pretty simple to learn, the real hurdle is learning the Cocoa/Cocoa Touch framework in addition to others. I would recommend the BNR books (they have one on iOS programming as well as one that teaches Objective-C) as well as watching the video lectures from Stanford since your focus is learning to program for iOS.
For learning iOS I'd definitely recommend the free Stanford lectures on iTunes U: http://itunes.apple.com/itunes-u/ipad-iphone-application-dev...
I would highly recommend Stanford's iOS programming course: http://itunes.apple.com/us/itunes-u/ipad-iphone-application-...
The professor is very good, the lectures are current as of iOS 5, and they've made the slides and code available as well.
Here's how I learned iOS dev (still not wildly experienced, but I'm familiar with the beast).
If you're a Rubyist, pick up PeepCode's Objetive-C for Rubyists. You're going to watch that multiple times.
Then, go and get yourself a subscription at teamtreehouse.com and subscribe to Stanford's CS193P (a fantastic course taught by Paul Heggarty) on iTunes U.
Treehouse's iOS 4 badges' topics are somewhat aligned with the topics on CS193P. You should watch the topic on treehouse first, and then watch the corresponding Stanford lecture, which will be much more detailed and a bit heavier. Having watched the treehouse videos, though, you'll have a basic understanding of what Paul is talking about, and the progression will seem very natural.
Set aside 1-3 hours a day for this. The basic things I learned in a day, the more complex ones like CoreData took me a bit longer. If you don't fancy the homework assignments on iTunes U (the first one is rather boring, the other ones are ok and practical), do something else that uses what you learned.
Two weeks of 2-3 hours a day and you'll be on your way.
This semester's Stanford course, featuring iOS 5 (including Storyboard) is really very good. Just watch the lessons you need.
I see you studied computer science at least a little. I would start with a few of the programming guides on developer.apple.com and check out the sample code from apple [1] and pick up a copy of "Programming in Objective-C 3rd edition" [2] If you are a visual learner and enjoy lectures (Sometimes annoying and slow for experienced programmers) check out the stanford courses on iTunes. [3]
I would strongly recommend downloading all the videos as well as Xcode 4.2 before you leave for China. The files are quite large and I hear it's a long plane ride. Sign up for the iOS developer program if you have not already - you can't build to your device otherwise. [4]
Feel free to shoot me an email (contact in profile) if you get stuck on something - I might be able to point you in the right direction.
Finally, learning to program iOS apps may not be your best use of time on a trip to China. Even if you are able to go often catching up with what is going on generally and what people are doing/using in the mobile space is probably a better use of your time while there. I know I would not be writing code if was able to take that trip and perhaps even speak the language.
[1] http://www.amazon.com/Programming-Objective-C-3rd-Developers... (Maybe the kindle edition for reading on your laptop/iPad)
[2] http://developer.apple.com/library/ios/navigation/#section=R...
[3] http://itunes.stanford.edu
[4] http://developer.apple.com/library/ios/#documentation/Xcode/...
Bump. In the past, I've been through Stanford's IOS dev course and ML course (via iTunes). Currently, I'm doing the AI course. It is truly amazing that Stanford is giving away this content for free.
As an academic, it makes me wondering how education will change over the next 10 years. If a prof gives a fantastic lecture in the Fall of 2010, does he need to repeat himself in 2011? I had the experience of lecturing an undergrad course in Programming Languages many years ago. Honestly, the content didn't change much (I was teaching Scheme, ML and Prolog). I did get a bit better answering and anticipating student questions. I'll admit that in some cases, content must be updated fairly frequently. For instance, Prof. Ousterhaut's web app course on the site seems to be covering Rails 2.x.x. Teaching it today, perhaps 3.x or 3.1 would be used.
However, when I look at how well the community can improve the quality of a lecture, it blows my mind. In the Stanford AI class, for instance, the lecturer made a slight error where he defined the admissibility criteria of the h function (estimated cost) in A* search as less than the true cost rather than less than or equal to the true cost. Well ... this was quickly spotted by students and a correction was promptly issued. This blows my mind!
This also has the potential of making things worse on the supply side of education. In the last decade, it has undoubtedly gotten harder to get a faculty position in Computer Science. Will the advent of online education make that situation worse? As someone who has been an educator in the past, my personal opinion is that education should be available for free. But, I worry that it might not be sustainable.
Given that (at least for now) you're in it for fun, and that you already have Mac hardware, seems to me iOS is a good place to start. With the combination of the iPhone simulator and your iPod Touch you have what you'll need to dive in.
One thing other posters haven't brought up is the abysmal condition of the Android emulator. Unless you have an Android device on hand, you're in for a world of pain trying to develop apps using the emulator. It's snail slow, with a long boot-up time & very poor graphics performance. (It's something the Android dev tools team at Google is working hard on fixing, but it's a ways out, from my understanding.)
Finally, if you're the type who likes a structured approach to learning there's a great course that Stanford University offers covering introductory iOS development (http://goo.gl/SouE) to help get you started.
Good luck to you, my friend!
if you prefer learning in a lecture setting I'd suggest taking the stanford iphone dev class online (free from itunes) http://itunes.apple.com/us/itunes-u/iphone-application-devel...
Neat. When you're ready for more, be sure to check out http://courses.csail.mit.edu/iphonedev/ for a quick dive into Objective-C + iPhone SDk. Then to get a non-trivial Hello World, check out this:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/download...
Seems reasonable - but you should also investigate Core Animation.
Look at the Stanford course: http://www.stanford.edu/class/cs193p/cgi-bin/index.php
Although there aren't any books I can recommend, I have heard that Beginning iPhone Development is good for newer developers.
Good luck!
Is there any website to get duly updated on this super awesome courses? The OCW MIT site is not even reflecting that this edition of the course was released.
Similar example to this one... latest publishing of CS193P (iOS Development) was released a few months back, its awesome, but no traces of it on iTunes or other sites, found it on Twitter, so I have the feeling I am missing many of these..
As a working developer you will spend a sizeable portion of your time learning new things, so if you are not good at teaching yourself programming, maybe it's not a suitable career choice? Especially with amazing MOOCs like Stanford's Swift course?
At least in the context of something like Lambda school, that does not teach computer science, as I understand it.
It would be interesting to know how many applicants got interested in Computer Science from watching Stanford's excellent iOS courses on iTunesU.
Additionally, it would be interesting to learn how many students declare Computer Science before they enroll and how many students switch into Computer Science because "all their friends are doing it" now that it's the most popular major.
It's funny, I was just discussing udacity with a co-worker today. I might try some of the easier courses before I tackle the more hardcore topics like a self-driving car!
On a slightly tangential note, I'm blown away when I look at the learning resources on the web in the last year or two. I largely learned the (admittedly rudimentary) iOS knowledge I have from the Stanford U course on iTunes[1]. Then you look at things like Udacity, Coursera and Khan Academy. In the case of the self-driving car course, you are getting a world-class computer-science education, free, from one of the foremost experts in AI, all from the comfort of your own bedroom. We might not have flying cars yet, but you can get a world-class education for free! The times we live in.
I'd also encourage you to do more write ups on your bot experiences! You have a knack for explaining things well. I'm toying with the idea of doing maybe a series of YouTube videos or blog posts myself once my Python skills get above the level of being totally embarrassing ;-)
BTW, here's a link for a series of blog posts on how this guy builds working poker bots:
http://web.archive.org/web/20090608115755/http://www.codingt...
http://web.archive.org/web/20100130074034/http://www.codingt...
(Had to put it through the wayback machine as some current employer of his persuaded him to take the content offline!) Not sure if it's something you would be interested in, but have a look at some of the content. He goes through using Monte Carlo simulations and everything to aid decision making. Very C++ and Windows based, but have a look nonetheless, there may be transferable concepts to your own projects.
[1] http://itunes.apple.com/us/itunes-u/developing-apps-for-ios-...
A book I heard about via Matt Gemmell is "Learning iPad Programming" (Kirby Turner, Tom Harrington) - it's really an excellent overview, explained by programming a real-life iPad app step by step. Massive coverage of tons of major topics. http://www.amazon.co.uk/gp/product/0321750403
Also, as others mention, the Stanford lectures are awesome, especially combined with the iTunesU iPad app.
And finally, for me the breakthrough into iOS programming came when I went to a hackathon and pair programmed with a total iOS pro, I learned WAY more in a few hours than I did reading a bunch of tutorials.