Stanford CS193P - Developing Applications for iOS Using SwiftUI
Instructor: Paul Hegarty
Introduction
- Course focused on developing iOS applications using SwiftUI.
- The course is available online, with supplemental material on cs193p.stanford.edu.
- Emphasis is not only on app development but understanding the SwiftUI system.
- Recorded laptop screens are available to follow along.
Course Structure
- 10-week course, divided into sessions:
- First 5 weeks: Building a complex app.
- Following 3 weeks: Building a similar app quickly.
- Last 3 weeks: Final project development.
- Assignments: Six programming assignments, usually due on Wednesdays.
- Final Project: Requires a proposal, and a rubric is provided.
Focus Areas
- SwiftUI for iOS, macOS, watchOS, Apple TV, etc.
- Emphasis on functional programming over object-oriented programming.
- Introduction to Swift, a new programming language for most students.
- Real-life application of multiple programming skills.
Prerequisites
- Experience in writing code and understanding structured programming.
- Familiarity with more than one programming language is beneficial.
Tools and Setup
- Xcode as the primary development tool.
- Setup includes GitHub integrations and Apple ID configurations.
- Use Xcode's simulator to preview apps on different devices.
Teaching Methodology
- Narrative-based learning: Building a story around SwiftUI development.
- Emphasis on combining narrative with vignette learning (short, focused lessons).
Concepts Covered
- SwiftUI Structs: Core of SwiftUI programming; everything is a struct.
- Structs behave like views using the colon syntax (e.g.,
struct ContentView: View).
- View Composition: Using VStacks, HStacks, and ZStacks to build UI.
- Modifiers: Used to change the appearance of SwiftUI elements.
- Building complex views from simpler ones, similar to Lego construction.
Example Project: Card Game (Memorize)
- Objective: Build a memory game using SwiftUI.
- Gameplay: Players flip cards to find matching pairs.
- UI Components: Use of emoji, rectangles, and text.
- Programming Considerations:
- Use of
@ViewBuilder to manage collections of views.
- Handling of dark mode and different orientations.
- Introduction to the Swift language constructs such as computed properties, modifiers, and default parameters.
Tips and Tricks
- Use Xcode’s preview and simulator for efficient testing.
- Understanding the importance of structuring code and using functions efficiently.
- Embrace SwiftUI’s paradigm of building views out of smaller subviews.
- Keep view struct sizes manageable for clarity and maintainability (suggested max of 12 lines for functions/computed properties).
Upcoming Topics
- Transition to creating a backend for game logic.
- Moving from horizontal stacks to grids for layout.
- No class next Monday; continue with content on the following Wednesday.
These notes provide a high-level overview of the primary topics covered in the lecture and can serve as a guide for further study and project development in the course.