Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Stanford University

CS193p - Developing Apps for iOS

Stanford University via Independent

Overview

Google, IBM & Meta Certificates – 40% Off
One plan covers every Professional Certificate on Coursera.
Unlock All Certificates
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!

Syllabus

  • Getting Started with SwiftUI
    • Introduction to the course. The basics of Xcode and SwiftUI, especially Views.
  • More SwiftUI Basics
    • More SwiftUI basics, including View modifiers. Start construction on this quarter's application: CodeBreaker.
  • 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.
  • Building CodeBreaker's Model
    • Build CodeBreaker's Model and hook the UI up to it. Along the way, @State, Optionals, onTapGesture.  CodeBreaker is playable now!
  • 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.
  • Data Flow Demonstration
    • A demonstration of how data flows through our SwiftUI application from the Model through one View and into another View.
  • 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.
  • Animation Demonstration
    • Armed with a basic understanding of Animation, apply it to our CodeBreaker in various ways to see how Animation works in practice.
  • Elapsed Time; Protocols
    • How to show elapsed time in our CodeBreaker. Discussion of protocols, an important aspect of the Swift Type system.
  • List and Navigation
    • CodeBreaker gains complexity by adding a list of games to choose from and UI for navigating between games.  More about ForEach and more detail about Hashable, Identifiable and other protocol conformance.
  • iPad; Sheets
    • CodeBreaker on iPad. Using a "sheet" to put up UI to edit the name and peg colors of a new CodeBreaker game.
  • CodeBreaker Editor
    • Extending our sheet to edit the name and pegs of existing CodeBreaker games.
  • SwiftData
    • Making our CodeBreaker games persistable into a database!  @Model, @Relationship, ModelContainers and ModelContext, FetchDescriptor and #Predicate.
  • More SwiftData
    • Using our @Model-based CodeBreaker Model to make them persist between application launches and to search for games in the database. How to create a #Preview for a View that access SwiftData.
  • Yet More SwiftData; Multithreading
    • Creating even more complex #Predicates for SwiftData. Reacting to database saves. Just the basics on multithreading.
  • Final Project Miscellany
    • Some miscellaneous topics which might be useful for final projects: custom Shapes, using GeometryReader, handling multitouch gestures, alternatives to SwiftData when it comes to persistence.

Reviews

Start your review of CS193p - Developing Apps for iOS

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.