Paul Hegarty's updated CS193p SwiftUI course released by Stanford
(cs193p.stanford.edu)198 points by yehiaabdelm 8 days ago
198 points by yehiaabdelm 8 days ago
I can't seem to find the 2007 webpage (maybe it was one of the wiki-based ones?) but the 2008 syllabus looked very hands on: https://web.archive.org/web/20081208171743/http://stanford.e...
I never took 193p, but I always found 148 to be hands on, and I made it very hands on for the year I contributed: https://web.archive.org/web/20130522184434/https://graphics.... .
I regret that we put my subdivision assignment as the last one, and we allowed students to skip one assignment. Most students skipped it, but those that did the work thought it was super cool to have their own subdivision tool for making smooth meshes.
Yeah. Instagram was lovely. It might be disheartening to see what it became, what it does to people's minds for a profit, the costs for society as a whole.
This course was integral in kicking off my career over a decade ago. I think there's no better way to learn to build an iOS app, and the fact that it's free is a true gift. Pre-reqs are in the first lecture:
-Experience writing code (100% of the work in this course involves programming) -At least CS106A (Programming Methodology) + CS106B or X (Programming Abstractions) and CS107 (Computer Organization & Systems); CS108 (Object Oriented Programming), CS43 (Functional Programming Abstractions), CS11O (Principles of Computer Systems), CS147 (Introduction to Human Computer Interaction Design) are awesome! -Know some "structured" programming paradigm, e.g. OOP or Functional Programming -Preferably you know more than one language (cause you're gonna learn a new one here!)
This was my first learning experience with iOS around late 2012. Watched all the lovely videos and did the homeworks just to learn, and eventually went on to write lots of probably horrible working code for early Tinder. At least we had a QA team that rocked back then.
Thanks Paul! Could not have asked for a better intro to working with Objective-C at the time. The fact that this is free and everyone can learn with it is awesome!
I love cs193p! Paul Hegarty is an incredible teacher. I did the course twice [1], first in 2020 as a programming noob who just threw everything into one file. His teaching of MVVM was my first introduction to proper software architecture. Then I went through it again last year as a refresher before building my first app and even on the second run, his lectures were fun to listen to.
Very cool! Thanks for sharing this.
Not sure if I'll do it, myself, because I think I may have already gotten past it, but that's been a long, painful slog. Wish I had this resource a few years ago.
What a fantastic resource this has been over the years. Hegarty is a real old NeXT guy too!
When I was in school, the corporate shill language was MATLAB, and even today not every program has moved on to greener pastures (Python/numpy, Julia). But doesn't Swiftui support Android now? https://github.com/skiptools/skip, I'm extremely skeptical and critical of anything Apple does, and I don't like programming languages without critical mass of community and corporate contributers, but seems like Swift is going in the right direction here.
Swift is a cross-platform compiled programming language that offers memory safety as a tentpole feature.
SwiftUI is a platform specific API for developers who are writing native apps for that platform.
You can think of Swift as being similar in concept to Rust and SwiftUI as being similar in concept to Win32.
SwiftUI is also now an API for writing Android native apps, too.
I don't know why you skipped over that part? It's maybe like when Google rewrote Java. Win32 is a bad comparison because there's no Win32-compatible API for native apps on other platforms (that I know of?) except for emulation, but the Android SwiftUI project is not using emulation, it runs the code natively and the result is native Android UI.
https://swiftcrossui.dev is also promising for somewhat SwiftUI compatible APIs across desktop OSs
I like LLVM, and I enjoy a good UI focused-language like Vala or Obj-C. Building with or contributing to Swift is a waste of my time as a Linux developer, it was in 2018 and it still is in 2025. Foundation will not fully support Linux until the late 2030s, and even a fully-implimented SwiftUI translation is still ignoring basic GNOME HIG and lagging behind best-practices. I would not be developing apps I want to use, or ship to users on other platforms. Electron would be preferable to cross-platform SwiftUI, and deep down you know it.
And that's my sympathetic opinion, as a Linux developer who loves their native UI trinkets and pseudopolish. Windows developers have dozens more options and likely won't find out Swift ever existed until Swift 2 is announced during a keynote presentation. Broader adoption of Swift has simply failed. If the language disappeared tomorrow, I wouldn't know as nothing on my system consumes Swift as a dependency according to nix-tree.
Obj-C is unusable for many new Apple platform features. Not suitable for building anymore.
Electron - not available on iOS, so it is out of the question.
I make a living off my iOS/macOS apps so I am interested in ways to diversify without giving up the platform that makes me my money. These cross platform solutions for Swift are interesting for those targeting Apple platforms. I agree they are not compelling if you do not prioritize Apple platforms.
I can't make a living off Linux like I can on Apple. Android is also much less profitable. So Apple continues to make business sense for me, for what I build and who my customers are. And thus Swift.
I think it’s only the 193 series of classes that are industry-related electives. Swift is open source too.
People have such strong delusions about universities (and they're so vocal about them too).
I am surprised that a university with the renown of Stanford would have a course specifically on "the fundamentals of how to build applications for iPhone and iPad using SwiftUI." Not even mobile UI/UX, or UI/UX principles in general; straight up yolo iOS.
How do people not find this absolutely egregious?
At my uni, we organized protests for much smaller intrusions of corporate interests into education.
Is Stanford not much better than a bootcamp these days?
> Is Stanford not much better than a bootcamp these days?
Rage-bait?
Universities are criticized for not providing enough economic value and real job training, yet when they do, they are labeled corporate shills.
I took CS193P when it was first offered in 2007; one of my favorite classes at Stanford because it was so hands-on. At the time few people had iPhones, so everyone in the class got a free iPod Touch for development. My final project was a photo sharing app with a Polaroid shake to reveal mechanic… lightly influenced Instagram which Kevin and I built a few years later!