Лучший бесплатный курс по iOS-программированию — Стэнфордский курс CS193P Весна 2025

Начала перевод этого замечательного курса, который дал старт не одной карьере iOS разработчика.

Курс Стэнфордского университета CS193P (Разработка приложений для iOS с помощью SwiftUI) версии Весна 2025 года уже полностью доступен online.
Все 16 лекций от профессора Пола Хегарти (Paul Hegarty) опубликованы в свободном доступе вместе с учебными материалами.

Основные изменения в версии 2025 года

В отличие от предыдущий версии курса CS193P 2023 года, курс CS193P 2025 года получил значительные обновления в структуре и содержании:

Актуальность Swift и SwiftUI

Курс CS193P 2025 года полностью переработан под актуальные версии Swift и SwiftUI. В отличие от 2023 года, где часть материала уже устарела на момент выхода (например, ObservableObject был заменён @Observable ещё до публикации курса), версия 2025 года изначально построена на современных инструментах и подходах.
Лекции записаны до выхода iOS 26 и Xcode 26, но код остается полностью совместимым с современными инструментами разработки

Демо-приложение / Проект

Наиболее заметное отличие. В 2023 году весь курс строился вокруг Memorize (игра на совпадение карточек) и затем Emoji Art (холст с drag-and-drop). В 2025 году они заменены единственным приложением CodeBreaker(игра в угадывание кода в стиле Wordle/Mastermind), которое разрабатывается с нуля на протяжении всех 16 лекций.

Архитектурная парадигма

В 2023 году курс явно и подробно обучал MVVM (Model-View-ViewModel), посвящая этому целые лекции. В 2025 году акцент смещается на более простое разделение Model + UI (ближе к MVI), что отражает то, как современный SwiftUI с @Observable делает отдельный слой ViewModel менее необходимым.
Лекции теперь уделяют больше внимания созданию интерфейсов, работающих одновременно на iPhone, iPad, и Mac, включая использование NavigationSplitView и работу с Size Classes.

Механизм реактивного UI

В 2023 году курс использовал ObservableObject / @ObservedObject / @Published (старая система на основе Combine). В 2025 году это заменено новым макросом Apple @Observable, введённым в iOS 17 / Xcode 15, который чище и требует меньше шаблонного кода.

Swift Concurrency / Async

В 2023 году Лекция 14 охватывала асинхронное программирование на основе акторов (async/await, акторы). В 2025 году эта тема, по всей видимости, стала менее акцентированной, и курс больше сосредоточен на основах потока данных в Views и функционального программирования.

Пользовательская отрисовка и фигуры

В 2023 году были отдельные лекции по рисованию пользовательских фигур (например, фигура таймера-пирога) и пользовательским ViewModifier. В 2025 году эти темы менее выражены, поскольку CodeBreaker не требует такого же уровня пользовательской графики, как Memorize / Emoji Art.

Жесты и мультитач

В 2023 году жесты мультитач (Drags, Pinches, Taps) подробно рассматривались через Emoji Art. В 2025 году жесты менее рельефны, поскольку CodeBreaker — игра, основанная на нажатиях Taps.

Навигация и мультидокументность

В 2023 году поздние лекции охватывали поддержку нескольких документовDocumentGroup и NavigationView. В 2025 году навигация рассматривается через List + NavigationStack в контексте управления несколькими играми CodeBreaker (Лекции 10–11).

SwiftData

Одно из ключевых добавлений 2025 года — изучение SwiftData, фреймворка Apple для работы с базами данных, представленного в iOS 17. Он пришёл на смену CoreData и предлагает значительно более простой и декларативный способ сохранения данных, хорошо интегрированный с @Observable и SwiftUI. В курсе 2023 года эта тема отсутствовала полностью.

Качество видео

Практическое отличие: лекции 2023 года записаны как захват экрана со звуком (без полноценного видео). Лекции 2025 года — это полноценные видеозаписи, что значительно облегчает восприятие.

Итог: Версия 2025 года — это более современный и streamlined курс, построенный на актуальных идиомах Swift/SwiftUI (@Observable, более чистый поток данных), тогда как версия 2023 года — более глубокое погружение с богатым содержанием по графике/анимации и явным обучением архитектуре MVVM.

Таким образом, курс CS193P 2025 года можно считать не просто обновлённой версией, а фактически новым курсом, отражающим современное состояние экосистемы Apple — от архитектуры и реактивности до постоянного хранения данных с помощью SwiftData.

Где найти материалы

Требования к подготовке

Курс по-прежнему считается продвинутым. Официальное требование Стэнфорда включают уверенные знания в программировании (аналог курсов CS106A/B и CS107). По мнению экспертов с Reddit и LinkedIn, новичкам может быть сложно из-за высокой концентрации сложных концепций, таких как обертка свойства (property wrappers), непрозрачные ТИПы ( opaque types) и concurrency.

Статистика созданных ChatGPT алгоритмов Expeсtimax и Monte Carlo для игры 2048

В предыдущих постах — iOS приложения игры 2048 в SwiftUI  с ChatGPT 4-o. Часть 1, iOS приложения игры 2048 в SwiftUI  с ChatGPT 4-o. Часть 2. Анимация и UI, iOS приложения игры 2048 в SwiftUI  с ChatGPT 4-o. Часть 3. ИИ, — я рассказала о том, как ChatGPT помог создать эффективные ИИ алгоритмы Expectimax  и Monte Carlo для игры 2048. Это стохастические алгоритмы, то есть их результаты — максимальное значение value плитки maxTile и счет score — случайные величины. Хотелось бы иметь экспериментальное распределение этих случайных величин в виде гистограмм для того, чтобы выбрать их оптимальные параметры.

Приложение Game2048ChatGPT было расширено c целью сохранения результатов многократных запусков алгоритмов Expectimax  и Monte Carlo  в базе данных (БД) SwiftData для последующего статистического анализа. При написании кода максимально использовался ИИ ChatGPT, который иногда, ломая все стереотипы программирования, предлагает очень оригинальные решения, и именно это помогло получить такой лаконичный и читабельный код для нашей статистической задачи. Этот код находится на GitHub.

Я не буду утомлять вас протоколом взаимодействия с ChatGPT, a сразу приведу результаты статистических исследований, которые оптимальным образом помогли настроить параметры ИИ алгоритмов  Expectimax  и Monte Carlo.

Читать далее

WWDC 2023. Новый фреймворк SwiftData для управления данными. Эксперименты

SwiftData дебютировал на WWDC 2023 в качестве замены фреймворка Core Data и обеспечивает постоянное хранение данных на Apple устройствах и беспрепятственную синхронизацию с облаком iCloud. Весь API SwiftData построен вокруг современного Swift.

Примечание. SwiftData является частью iOS 17, и на момент написания этой статьи мы имеем версии Xcode 15.0 и iOS 17.0 .

В SwiftData, в отличие от своего предшественника, базы данных Core Data, очень просто создать Схему (или Модель Данных) для постоянного хранения информации в вашем приложении. Для этого прямо в коде создаются обычные Swift классы class со свойствами, имеющими обычные базовые Swift ТИПы, ТИПы или другие Swift классы Схемы. Вы также можете использовать как Optional, так и НЕ-Optional ТИПы.

Чтобы превратить эти обычные Swift классы в постоянно хранимые объекты, Apple дала нам «волшебную палочку» в виде макросов, самым главным из которых является макрос @Model.

Если вы пометите макросом @Model обычные Swift классы, то получите не только постоянно хранимые объекты, но и сделаете их Observable, Hashable и Identifiable, и вам не нужно предпринимать никаких дополнительных усилий при использовали их в SwiftUI, ибо новый в iOS 17 протокол Observable обеспечит вам «живое» отображение на UI всех изменений ваших хранимых объектов, а Identifiable и Hashable позволят беспрепятственное использовать их в списках ForEach.

В SwiftData, в отличие от Core Data, нет никаких внешних файлов для Модели Данных и никакой «закулисной» генерации старых Objective-C классов, которые еще нужно адаптировать для использования в Swift. В SwiftData всё исключительно просто.

Кроме того, в SwiftData существенно, по сравнению с Core Data, упрощена выборка данных и отображение её результатов на UI. Для этого предназначена «обертка свойства» @Query, для которой вы можете указать предикат Predicate (то есть условия выборки данных) и сортировку результата SoreDescriptor. Новый мощный предикат Predicate выгодно отличается от старого предиката NSPredicate Core Data тем, что теперь вы можете задавать условия выборки данных, используя операции самого языка программирования Swift, а не какую-то замысловатую форматированную строку.

SwiftData дополнен такими современными возможностями как Swift многопоточность и макросы. В результате в Swift 5.9 мы получили, по определению самого Apple, “бесшовное” взаимодействие с постоянным хранилищем данных в нашем приложении. SwiftData совершенно естественным образом интегрируется в SwiftUI и прекрасно работает с CloudKit и Widgets.

Если вы начнете работать со SwiftData, то вообще не почувствуете даже «духа» Core Data, всё очень Swifty. Apple настаивает на том, что SwiftData — это совершенно отдельный от Core Data фреймворк, нам точно неизвестно, является ли SwiftData «оболочкой» Core Data, но даже если это так, то она настолько элегантно, интуитивно и мастерски реализована, что у вас будет ощущение работы исключительно в «родной» cреде языка программирования Swift.

В этом посте я покажу вам, как:

  • определить Схему данных в SwiftData, 
  • выполнить CRUD операции (Create — Создать, Read — прочитать, Update — модифицировать, Delete — удалить),;
  • сформировать различные запросы Query к данным с помощью предиката Predicate
  • использовать «живой» запрос @Query в SwiftUI и как его динамически настраивать,
  • эффективно «закачать» JSON данные в SwiftData хранилище без блокировки пользовательского интерфейса (UI).
Читать далее