CS193p - Developing Apps for iOS

2 min read Original article ↗

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.

Model and UI; Swift Type System

Lecture 3

Understanding the separation of Model (logic and data) from UI.  Introduction to some of the fundamentals of the Swift Type System.

Watch Lecture

Reading Assignment 2

Layout; Data Flow

Lecture 5

How SwiftUI lays out UI elements on screen. Also a discussion of how data flows through a SwiftUI application. Intro to functional programming.

Watch Lecture

Generics and Views; Animation

Lecture 7

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.

Watch Lecture

Reading Assignment 3

CodeBreaker L7

Elapsed Time; Protocols

Lecture 9

How to show elapsed time in our CodeBreaker. Discussion of protocols, an important aspect of the Swift Type system.

Watch Lecture

CodeBreaker L9

SwiftData

Lecture 13

Making our CodeBreaker games persistable into a database!  @Model, @Relationship, ModelContainers and ModelContext, FetchDescriptor and #Predicate.

Watch Lecture

CodeBreaker L13

Yet More SwiftData; Multithreading

Lecture 15

Creating even more complex #Predicates for SwiftData. Reacting to database saves. Just the basics on multithreading.

Watch Lecture

CodeBreaker L15