CS193p - Developing Apps for iOS
Below you will find links to videos and supporting course material for the Spring 2025 version of Stanford's CS193p (Developing Applications for iOS using SwiftUI). It is a course Stanford students take to learn some of the basics of iOS development.
The course happened before iOS 26 and Xcode 26 were released, but the code written during the course seems to be mostly compatible. The big change in Xcode 26, of course, is built-in LLM assistance, and iOS 26 introduced Liquid Glass in the UI, so of course there's none of that in any of these videos.
Unfortunately, we aren't able to provide any support for you as you watch these, but there are lots and lots of fantastic resources online for helping you in your quest to learn how to develop apps for iOS, so seek them out!
For more, check out the About page.
Getting Started with SwiftUI
Introduction to the course. The basics of Xcode and SwiftUI, especially Views.
Model and UI; Swift Type System
Understanding the separation of Model (logic and data) from UI. Introduction to some of the fundamentals of the Swift Type System.
Layout; Data Flow
How SwiftUI lays out UI elements on screen. Also a discussion of how data flows through a SwiftUI application. Intro to functional programming.
Generics and Views; Animation
How Views like VStack take a ViewBuilder as an argument. Handling the passing of an @Binding to the init of a View. Slides going over some of the basic ideas of Animation.
Elapsed Time; Protocols
How to show elapsed time in our CodeBreaker. Discussion of protocols, an important aspect of the Swift Type system.
iPad; Sheets
CodeBreaker on iPad. Using a "sheet" to put up UI to edit the name and peg colors of a new CodeBreaker game.
SwiftData
Making our CodeBreaker games persistable into a database! @Model, @Relationship, ModelContainers and ModelContext, FetchDescriptor and #Predicate.
Yet More SwiftData; Multithreading
Creating even more complex #Predicates for SwiftData. Reacting to database saves. Just the basics on multithreading.