Prerequisite

Syllabus

Title Topics Resources
2/22 Preface & Introduction
Class announcement & Introduction to the platform and developer tools.
  • Preface
  • Introduction to Apple's Platform
  • Introduction to Xcode
  • Git SCM tool
Keynote Slides
3/1 the Swift language - I
  • Literals, Variables, and Constants
  • Types
  • Operators
  • Functions
  • Control flows
  • Optionals
Keynote Slides
Playgrounds
3/8 the Swift language - II
  • Collections
  • Enum
  • Error Handling
  • Struct and Class
Keynote Slides
Playgrounds
3/15 the Swift language - III
  • Struct and Class
  • Extensions
Keynote
Playgrounds
Homework
3/22 the Swift language - IV
  • Protocols
  • Closures
  • Optional Chaining
  • Type Casting
  • Generics
  • Automatic Reference Counting (ARC)
  • Access Control
Keynote
Playgrounds
3/29 Your first iOS app
  • Swift Introduction - Generics
  • Swift Introduction - Automatic Reference Counting (ARC)
  • Swift Introduction - Access Control
  • The first iOS app - Counter
Keynote
Playgrounds
Sample Projects
Homework
4/5 Design an iOS app
  • Introduction to UIView
  • Storyboard review
  • Case: Build a Note app
  • the MVC pattern
Keynote
Sample Projects
Playgrounds
4/12 Midterm presentation - Proposal of the Final Project
  • 4 members for each team, register before the class of 4/5.
  • 7 min for presentation, and 3 min for Q&A. (Team based)
  • The presentation materials are not limited. Slides, videos, or other forms are acceptable. If you have digital materials, make sure they're okay to play with your computer. I could lend my VGA adapter for Macs with mini display port or thunderbolt port.
  • The presentation should include a problem to be solved, but not just tech items you are interested in. It should also table about who, when, where, why, what, and how to use this solution. You can provide a hand-draft or low-fi prototype of your app; Detail mockup/wireframe are not required, and also not suggested. If possible, you can also show your schedule/plan and related works
Keynote
4/19 Auto Layout and Adaptivity UI
  • Using Auto Layout to layout views
  • Using Adaptivity APIs to create responsive UI
Keynote
4/26 iOS Human Interface Guideline
  • Presentation
  • You have to prepare a 7 min presentation and 3 min for Q&A (team based), with assigned sections of the iOS HIG.
  • You should prepare slides with the outline or digest of the assigned sections.
  • Assigned sections of each teams
  • Lecture
  • Using Cocoapods Package Manager
Keynote
Reading Assignment
5/3 App Structure & File System Programming
  • File System Programming
  • App Structure and Bundle
Keynote
Sample Code
5/10 Storyboard Segue & Table View Controller
  • Lifecycle of UIViewController
  • Load Storyboard
  • Storyboard Segue
  • UINavigationController and UITableViewController
Keynote
Sample Code
Homework
5/17 Communication Patterns
  • Target-Action pattern
  • Delegate pattern
  • Notification pattern
  • Closure/Block (Callback) pattern
  • KVO, Key-Value Observing, pattern
Keynote
Sample Code
5/24 Gesture Recognizer & Midterm presentation - Progress Report of the Final Project
  • Progress report of your final project. Each team has 5 minutes to report current progress, including questions or some research you found interesting. There's no required content or format for this report.
  • Using Gesture Recognizer
Sample Code
5/31 Networking & Async Tasks
  • Concurrency programming in iOS
  • Networking in iOS
Keynote
Sample Code
6/7 Networking & Debugging
  • Swift 4
  • Networking in iOS
  • Using LLDB
Keynote
Playground
Sample Code
6/14 Unittest, UI Testing, and Objective-C
  • Unittest
  • UI Testing
  • Brief introduction to Objective-C.
Keynote
6/21 Final Project presentation
  • Don't be late. We won't wait for you if you're late.
  • Each team has 10-12 minutes to present.
  • Each team should also have to submit their slides and git repo at 2017 6/21 23:59.
  • The presentation should contain
    1. A brief review of the idea/goal of your final project
    2. Design process overview
    3. Demo of the app
    4. Tools/packages you used
    5. Summary
  • Please make sure your slides and demo could be displayed well with the projector.