This website is for a previous semester and will not be updated. Click or tap on this banner to go to the current CIS 1951 website.

CIS 1951
Spring 2024

Syllabus

Course Structure

  • Lectures: Once a week, 1.5 hours each.
  • Homework Assignments: 5 assignments spread over Weeks 1-11.
  • Final Project: Week 11 brainstorming, Weeks 12-14 working; teams of 3.

Policies

  • If for some reason you cannot make a lecture for a week, you may join the other section as long as you ask at least 48 hours in advance. Note that for everyone in the Monday 202 section, this means you must ask before Thursday the week before since this is the one with the same content. (Attendance is required!)

Weekly Plan

Week 1: Introduction to iOS Development and Xcode

  • Overview of the iOS platform and its evolution.
  • Installing Xcode and understanding its interface.
  • Creating a simple "Hello, World!" app in Xcode.
  • Introduction to the Swift Playgrounds for experimenting with Swift code.

Homework 0 Assigned: Download and set up XCode. Due in Week 2.

Week 2: Swift Basics

  • Swift language fundamentals: variables, constants, data types.
  • Control Flow: if-else statements, loops, switch cases.
  • Functions: declaration, parameters, return types.
  • Structs, classes, and protocols.
  • Basic error handling in Swift.

Homework 0 Due.

Homework 1 Assigned: Create a basic Swift playground that includes various data types, control flows, and a custom function. Due in Week 4.

Week 3: SwiftUI Fundamentals

  • Introduction to SwiftUI and its declarative syntax.
  • Building basic user interfaces: Text, Image, Button.
  • Understanding the SwiftUI layout system: VStack, HStack, ZStack.
  • Modifiers: applying basic modifiers to SwiftUI views.
  • Lists and scrolling views.
  • Sidebar: Debugging tools in Xcode: breakpoints, console, and debugging commands.

Week 4: SwiftUI State Management

  • View hierarchy in SwiftUI.
  • Data passing and state management in views.
  • Property wrappers in SwiftUI: @State, @Binding, @ObservedObject, @StateObject, @EnvironmentObject.
  • Building forms and handling user input: Button, TextField, .onChange.
  • Basic animations and transitions in SwiftUI.

Homework 1 Due.

Week 5: App Lifecycle and Structure

  • Lifecycle events: onAppear, onDisappear.
  • Navigation in SwiftUI: NavigationStack, NavigationLink. TabView.
  • MVVM (model–view–viewmodel) architecture.
  • Modal presentations: .sheet, .alert.

Homework 2 Assigned: Develop a SwiftUI application with multiple views and navigation, utilizing state management. Due in Week 7.

Week 6: Custom Views & Event Handling

  • GeometryReader, safe area.
  • SwiftUI shapes, .fill/.stroke.
  • Understanding event propagation and handling in iOS.
  • Keyboard handling and text input events.
  • Custom gesture recognition in SwiftUI.

Week 7: Working with Sensors

  • Accessing device sensors: GPS, accelerometer, gyroscope.
  • Using Core Motion to access motion data.
  • Handling location data with Core Location.
  • Practical use cases of sensor data in apps.

Homework 2 Due.

Homework 3 Assigned: Create an app that utilizes at least one device sensor, displaying relevant data to the user. Due in Week 9.

Week 8: Networking in iOS

  • Making HTTP requests and handling responses (async/await).
  • Working with URLSession for network tasks.
  • Parsing JSON data and integrating it into the app.
  • Error handling and network best practices.

Week 9: Data Persistence

  • Introduction to UserDefaults for simple data storage.
  • Using Core Data for complex data models and persistent storage.
  • CRUD operations in Core Data.
  • File management: reading and writing files on the device.
  • Other data storages: Keychain, SwiftData

Homework 3 Due.

Homework 4 Assigned: Create an app that interacts with an API to fetch data and store the data in a local persistent storage. Due in Week 11.

Week 10: UIKit & UIKit Integration with SwiftUI

  • UIKit basics: MVC architecture in iOS.
  • Integrating UIKit in SwiftUI: using UIViewRepresentable.
  • User interaction in UIKit: event and input management.
  • Combining UIKit & SwiftUI: navigation and data sharing strategies.

Start Final Project Team Formation & Brainstorming.

Week 11: App Design and User Experience

  • The UI design process: steps toward a UI from scratch.
  • Design principles for mobile apps: clarity, efficiency, consistency.
  • Multi-platform and OS version compatibility: adapting to different devices.
  • Accessibility in iOS: making apps accessible to all users.

Homework 4 Due.

Final Project Proposal Due.

Week 12: App Distribution and the App Store

  • Code signing and provisioning profiles.
  • Preparing an app for distribution: icons, launch screens, app metadata.
  • App Store submission process and guidelines.
  • Understanding the review process and managing app releases.

Week 13: Bonus Lecture (TBD)

Potential Topics:

  • Advanced UI/UX Design Concepts (Animations, Transitions, AR/voice-based Interfaces)
  • Integrating Machine Learning with Core ML
  • Augmented Reality with ARKit
  • Designing Home Screen Widgets with WidgetKit
  • Apple Watch and Wearable Integration
  • Internet of Things (IoT) and HomeKit

Week 14: Final Project Presentations

Final Project Demo Slide Deck Due.

Final Project

  • Duration: Last 4 weeks.
  • Team Composition: 3 students per team.
  • Objective: Develop a fully functional and creative iOS app.
  • Presentation: Demonstrate the app and discuss design and development challenges.

Grading

  • Attendance and Participation: 10%
  • Homework Assignments: 60%
  • HW0: 20 points
  • HW1-4: 100 points each
  • Final Project: 30%
Dates and times are displayed in EST.