Course Outline
- Week 1: Introduction
- Week 2: State Management
- Week 3: General Techniques, MVVM, and Closure
- Week 4: Navigation & Animation & View Transitions
- Week 5: Guest Speaker Session & Demystify SwiftUI
- Week 6: Error Handling & Advanced Layout
- Week 7: Network
- Week 8: Concurrancy Model
- Week 9: Persistence
- Originally Planned Week 9: Domain Specified Language
- Week 10: Packaging and Shipping
All schedule listed below is subject to change throughout the quarter.
Week 1: Introduction
- Lecture 1.1 (Mar 29): Logistics & Intro to iOS Development with Xcode
Lecture 1.2 (Mar 31): Built-in SwiftUI Controls & Simple Layout
Assignment 0 out on Thursday
Week 2: State Management
- Lecture 2.1 (Apr 5): Swift Type System & How to Manage State
Lecture 2.2 (Apr 7): More Built-in SwiftUI Controls and More Swift Syntax — “ForEach & Protocol & View Modifier”
Assignment 1 out on Thursday
Week 3: General Techniques, MVVM, and Closure
- Lecture 3.1 (Apr 12): General Techinques and MVVM
Lecture 3.2 (Apr 14): Advanced Swift Syntax - Closure & SwiftUI Navigation
Assignment 0 due on Thursday
Assignment 1 due on Friday
Week 4: Navigation & Animation & View Transitions
- Lecture 4.1 (Apr 19): Implicit and Explicit Animation
Lecture 4.2 (Apr 21): View Transitions
Assignment 2 out on Wednesday
Week 5: Guest Speaker Session & Demystify SwiftUI
- Lecture 5.1 (Apr 26): Guest Speaker Session hold by Prof. King
Lecture 5.2 (Apr 28): SwiftUI Rendering Pipeline & Lifetime & Life Cycle & Identity
Assignment 2 due on Sunday
Assignment 3 out on Sunday
Week 6: Error Handling & Advanced Layout
- Lecture 6.1 (May 3): Optional, Guard and Common Error Checking
Lecture 6.2 (May 5): Advanced Layout
Assignment 3 due on Sunday
Week 7: Network
- Lecture 7.1 (May 10): Intro to Web APIs and JSON
Lecture 7.2 (May 12): Make API Call & Intro to Task System (await/await) in Swift
Assignment 4 out on Tuesday
Week 8: Concurrancy Model
- Lecture 8.1 (May 17): Continued Task System & Final Project Prompt
Lecture 8.2 (May 19): Structured and Unstructured Concurrancy, Actor Model
Assignment 4 due on Tuesday
Brainstorm on Final Project and Proposal Submission is Open on Friday
Week 9: Persistence
- Lecture 9.1 (May 24): Use UserDefault to Save User Settings
Lecture 9.2 (May 26): Persistence with Property Wrapper (Swift Syntactic Sugar)
Final Project Proposal is due on Friday
Originally Planned Week 9: Domain Specified Language
- Lecture 9.1 (May 24): Intro to the Concept of Domain Specified Language
- Lecture 9.2 (May 26): DSL Application on SwiftUI
Week 10: Packaging and Shipping
- Lecture 10.1 (May 31): Packaging to Swift Package Manager
- Lecture 10.2 (Jun 2): Shipping to TestFlight & App Store