Course details

Programming Apple Devices

IZA Acad. year 2023/2024 Summer semester 5 credits

Apple's software is a comprehensive system of traditional libraries, application paradigms and a wide range of skills. Its long-term fundamentals remain stable in the last decades. The course will analyse major architectural elements of Apple application software, discuss thoroughly the meaning and application of its components and compare them with alternatives in other systems. The opening lectures will present Objective-C and Swift languages and their context among modern and historical programming languages. Then we will further establish the concept of application architecture based on the paradigms of Model-View-Controller and Key-Value Observing, demonstrated primarily on the iOS platform. The core of the lectures will include chapters on the design of multithreaded applications (GCD) and their connecting to internal (sqlite3, CoreData) and external database systems (CloudKit, DropBox). The final lecture will discuss the specifics of desktop applications (MacOS) and consumer electronics (TVOS, watchOS). The course also brings a set of practical seminars of programming in Swift.


Course coordinator

Language of instruction

Czech, English


Examination (written)

Time span

  • 26 hrs lectures
  • 12 hrs seminar
  • 14 hrs projects

Assessment points

  • 70 pts final exam (written part)
  • 30 pts projects




Learning objectives

The course is focused to give a very deep insight to concepts of programming of Apple devices, i. e. personal computers with MacOS operating system and mobile devices (phones, tablets, watches) based on iOS. Moreover, the course studies the architecture of software libraries and programming concepts which could be an inspiration in overall programming practice, no matter what platform, operating system or language is employed. Finally, the course teaches programming in Swift language. 
Understanding the principles of programming applications for macOS, iOS, tvOS and watchOS. Concepts of multi-threaded applications. Programming in Swift. Integrating DB engines to the MVC concept of applications. Students will learn the concept of Swift programming language and its system libraries. They might employ these concepts in their jobs.

Why is the course taught

Computers, devices and software made by Apple play a significant role in the current IT world. The course emphasises programming for iOS, however, we mention also desktop based macOS and consumer-oriented platforms like tvOS and watchOS.

Study literature

  • Neuburg, M.: Programming iOS 9: Dive Deep into Views, View Controllers, and Frameworks. O'Reilly Media, 2015.
  • Mathias, M., Gallagher, J.: Swift Programming: The Big Nerd Ranch Guide (2nd Edition). Big Nerd Ranch Guides, 2016.

Syllabus of lectures

  1. Introduction. Historical backgrounds of Apple in the context of other computer companies.
  2. Objective-C in the context of C/C++ and Smalltalk. Dynamic memory allocation, object referencing and garbage collecting.
  3. Introduction to Swift programming language. Basic libraries with collections and algorithms (Foundation).
  4. Model-View-Controller (MVC) paradigm for developing event-driven applications. Basic Controllers (Table, TabBar, Master-Detail).
  5. Development of user applications for mobile devices. Elements of User Interface (Cocoa Touch library).
  6. Programming of multithreaded applications. Concepts of threads management (GCD). Applications main control. Asynchronous calls. Modelling of multithreaded applications.
  7. Data encoding in applications. Creating structured documents. Synchronization of documents. Inter-application message passing (Key-Value Observing, KVO).
  8. The architecture of object data storage (CoreData). The synchronous connection of the database and application control via KVO.
  9. Multiuser applications with a central database (CloudKit). The asynchronous connection of the database and application control via GCD.
  10. Application lifecycle in the context of the operation system. User configurations. Runtime memory optimizations.
  11. Simulation kernel for games development (SpriteKit, SceneKit). Modelling of the physical environment and mechanics.
  12. Desktop applications architecture. Runtime interconnection of a mobile and desktop application.
  13. Applications development for tvOS and watchOS.

Syllabus of seminars

  1. Programming in Swift. Using XCode IDE.
  2. Foundation library in examples. Data collections and basic algorithms.
  3. Application for iOS. Implementing DataSource and Delegate objects.
  4. Multithreaded applications. Message passing within the application. Key-Value Observing. Documents.
  5. Application based on CoreData.
  6. Application based on CloudKit.

Syllabus - others, projects and individual work of students

  1. Design and implementation of an application with given features.

Progress assessment

At least 15 points (out of 30) received from the project.

Individual project and the final exam. The final exam has two alternatives.  he minimal number of points which can be obtained from the final exam is 25. Otherwise, no points will be assigned to a student. 

Exam prerequisites

At least 15 points (out of 30) received from the project.


Tue exam 2024-05-07 E112 10:0011:50 1. termín
Tue exam 2024-06-04 E104 16:0017:50 3. termín
Wed lecture 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. of lectures G202 14:0015:5080 2BIA 2BIB 3BIT xx Hrubý
Thu seminar 2024-05-02 D0207 15:0016:5090 2BIA 2BIB 3BIT xx Hrubý
Thu seminar 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11., 12. of lectures D0207 16:0017:5090 2BIA 2BIB 3BIT xx Hrubý
Fri exam 2024-05-24 E104 10:0011:50 2. termín

Course inclusion in study plans

  • Programme BIT, 2nd year of study, Elective
  • Programme BIT (in English), 2nd year of study, Elective
  • Programme IT-BC-3, field BIT, 2nd year of study, Elective
Back to top