Lectures
I’ve divided the lecture topics into lecture blocks. One lecture block may span multiple lectures. This way I can stay flexible in how many lectures I dedicate to one block.
Lecture Block 1 - Mobile Development Overview, Swift Fundamentals
After this block is finished, you should have the required knowledge to complete the Swift exercise.
Topics
- Mobile App Development Overview
- Mobile platforms, differences, advantages, disadvantages
- Main aspects of mobile development:
- Interacting with the network
- Data persistence
- Displaying data, UI, UX
- Cross platform frameworks overview
- Cross platform pros/cons
- Cross platform alternatives
- Swift language overview
- Swift pros/cons
- Introduction to Swift
- More advanced Swift concepts
Resources
- Swift Guided Tour
- Swift Language Guide
- Lectures 3, 4, and 5 in the Stanford class
- Advanced Resource: Protocol-Oriented Programming in Swift
- Advanced Resource: Building Better Apps with Value Types in Swift
Lecture Block 2 - UIKit & Auto Layout fundamentals
After this block is finished, you should have the required knowledge to complete the Login exercise.
Topics
- Different UI frameworks (UIKit, SwiftUI)
- Model-View-Controller (MVC), Model-View-ViewModel (MVVM), VIPER
UIView
fundamentalsUIViewController
fundamentalsUILabel
andUITextField
UIAlertController
- Auto Layout and
UIStackView
- Storyboards vs Code
Resources
- Lectures 2, 5, 10, 12, 15 in the Stanford class
- Apple UIView Documentation
- Apple Auto Layout Documentation
- Swift Auto Layout Tutorial
Lecture Block 3 - Networking fundamentals
After this block is finished, you should have the required knowledge to complete the REST exercise.
Topics
- Interacting with a REST API in Swift
- Using URLSession
- Multithreading fundamentals
- JSON parsing and the
Codable
protocol
Resources
- Lecture 10 in the Stanford class
URLSession
tutorial- Apple
Codable
documentation
Lecture Block 4 - Advanced UIKit topics
Topics
UIScrollView
- Transitioning between ViewControllers
- Storyboard segues
UINavigationController
UITabBarController
- ViewController Lifecycle
UITableView
andUICollectionView
Resources
- Lectures 7, 9, 11 in the Stanford class
Lecture Block 5 - Persistence
Topics
UserDefaults
- Keychain
Codable
protocol- File System
- Mobile Databases and Object-Relational Mapping (ORM)
- SQLite
- CoreData
- Realm
Resources
- Lecture 13 in the Stanford class
- Apple Core Data Documentation
- Apple Core Data Guide
- Core Data Tutorial
- Realm database documentation
Additional Topics
These topics are extra topics that we may or may not tackle depending on our progress in the core topics.
- Automated testing
- Unit testing in Swift with
XCTest
- Dependency injection in Swift
- Testing asynchronous code
- Unit testing in Swift with
- Modals, PopOvers
- Embedded ViewControllers
- Advanced git workflows
- Third party dependency management (CocoaPods, Carthage, Swift Package Manager)
General Resources
The official Apple and Swift documentation are always a great place to start if you’re stuck.
Attendance
If you can’t come to the lecture, or will be late/leave early, please send me an email in advance to inform me of your absence. Please don’t tell me at the lecture or via Telegram, since it’s hard for me to keep track of who is excused if I have to use multiple communication channels.
If you miss one of the lectures with a scheduled code review for one of the exercises, you’ll be given another chance to complete it in the following lecture that you attend. Please note that this doesn’t affect the deadline for submitting the code itself. Make sure to take another look at the code before the code review, since you’ll be graded on your understanding of the code and concepts, not the code itself.
Otherwise, standard FH Campus attendance rules apply. For more information please see the FH wide rules on attendance in the “Studien- and Prüfungsordnung” which you can find here.
Stanford Class
Some of the lectures will be loosely based on the Stanford class CS193P from the fall 2018 semester. The videos for this class are on YouTube, and the lecture slides, exercises and code are also available.