COMP47390 Swift programming for App Development using UIKit and SwiftUI

Academic Year 2022/2023

This module provides a practical introduction to Swift programming for App development using UIKit and SwiftUI. With a primary focus on iOS, it also provides some exposure to several frameworks such as CoreML or CoreData. Programming language is Swift. Pre-requisites are Object Oriented Programming (ideally Python, Java, Swift), Graphics, Software Engineering. In addition, it is required that students have access to a computer operating macOS supporting the current release of the operating system and development toolchain (Xcode). Syllabus will included the following topics:

Swift programming language, Foundation classes,
Designing user interfaces using the Xcode software development tools,
Overview of the iOS SDK,
UIKit framework, multitouch gesture recognition
Model-View Controller paradigm: Data driven models, Controller hierarchy, Standard and custom views,
SwiftUI and Model-View- ViewModel design pattern,
Performance Optimization and Threads
Basic Animation, Multimedia & Graphics
Location awareness (e.g. CoreLocation and MapKit)

Note: this module requires strong programming skills

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

The student will acquire knowledge of App development on mobile platforms using touch interfaces and running iOS, learn how to design intuitive user interfaces, and gain experience in Swift programming using rich API frameworks.

Indicative Module Content:

iOS overview
MVC and MVVM paradigms and examples
Objects and OOP review
Swift programming language
Foundation library
Xcode IDE
UIKit overview: multitouch gestures, custom views
SwiftUI declarative UI design
Protocol and Delegation
Storyboards and multiple MVCs
Modal views and popover
App navigation and segues
View controller lifecycle
UI design and autolayout
ScrollView, ImageView, TableView, CollectionView, data source protocol
Multithreading, Closures
Error handling
UI Animations
Persistence, CoreData
App lifecycle
Introduction to a selection of iOS frameworks (e.g. Location, ML, AR, AV)

Live demos building all many apps from scratch: e.g. Simple Calculator (MVC+UIKit, MVVM+SwiftUI), Custom Spirograph View, UI Animation Game, Custom Gesture using CoreML (SwiftUI), CoreData and declarative UI design

Student Effort Hours: 
Student Effort Type Hours


Autonomous Student Learning




Approaches to Teaching and Learning:
Interactive classes with numerous live programming demonstrations 
Requirements, Exclusions and Recommendations
Learning Requirements:

Good Programming Skills (Python, Java, Swift)

Learning Recommendations:

Programming languages (ObjectiveC, C++, Swift)
Graphics (OpenGL)
Graphic User Interface design

Module Requisites and Incompatibles
Not applicable to this module.
Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Assignment: Development of iOS apps (Swift+UIKit/SwiftUI) Varies over the Trimester n/a Graded No


Class Test: 2h programming test Week 6 n/a Graded No


Carry forward of passed components
Resit In Terminal Exam
Spring No
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Group/class feedback, post-assessment

How will my Feedback be Delivered?

Not yet recorded.

Timetabling information is displayed only for guidance purposes, relates to the current Academic Year only and is subject to change.
Lecture Offering 1 Week(s) - 1, 3, 4, 6, 8, 11 Tues 11:00 - 12:50
Lecture Offering 1 Week(s) - 2, 5, 7, 9, 10, 12 Tues 11:00 - 12:50
Lecture Offering 1 Week(s) - Autumn: All Weeks Wed 09:00 - 10:50