Course Outline

  1. Week 1: Introduction
  2. Week 2: State Management
  3. Week 3: General Techniques, MVVM, and Closure
  4. Week 4: Navigation & Animation & View Transitions
  5. Week 5: Guest Speaker Session & Demystify SwiftUI
  6. Week 6: Error Handling & Advanced Layout
  7. Week 7: Network
  8. Week 8: Concurrancy Model
  9. Week 9: Persistence
  10. Originally Planned Week 9: Domain Specified Language
  11. 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