Course detail
Programming Apple Devices
FIT-IZAAcad. year: 2018/2019
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.
Language of instruction
Number of ECTS credits
Mode of study
Guarantor
Department
Learning outcomes of the course unit
Students will learn the concept of Swift programming language and its system libraries. They might employ these concepts in their jobs.
Prerequisites
Co-requisites
Planned learning activities and teaching methods
Assesment methods and criteria linked to learning outcomes
Course curriculum
Work placements
Aims
Specification of controlled education, way of implementation and compensation for absences
The minimal number of points which can be obtained from the final exam is 25. Otherwise, no points will be assigned to a student.
Recommended optional programme components
Prerequisites and corequisites
Basic literature
Recommended reading
Mathias, M., Gallagher, J.: Swift Programming: The Big Nerd Ranch Guide (2nd Edition). Big Nerd Ranch Guides, 2016.
Neuburg, M.: Programming iOS 9: Dive Deep into Views, View Controllers, and Frameworks. O'Reilly Media, 2015.
Trent, M., McCormack, D.: Mac OS X Programming. Wiley Publishing, 2005.
Zarra, M. S.: Core Data: Data Storage and Management for iOS, OS X, and iCloud. Pragmatic Bookshelf, 2013.
Classification of course in study plans
Type of course unit
Lecture
Teacher / Lecturer
Syllabus
- Introduction. Historical backgrounds of Apple in the context of other computer companies.
- Objective-C in the context of C/C++ and Smalltalk. Dynamic memory allocation, object referencing and garbage collecting.
- Intruction to Swift programming language. Basic libraries with collections and algorithms (Foundation).
- Model-View-Controller (MVC) paradigm for developing event driven applications. Basic Controllers (Table, TabBar, Master-Detail).
- Development of user applications for mobile devices. Elements of User Interface (Cocoa Touch library).
- Programming of multithreaded applications. Concepts of threads management (GCD). Applications main control. Asynchronous calls. Modelling of multithreaded applications.
- Data encoding in applications. Creating structured documents. Synchronization of documents. Inter-application message passing (Key-Value Observing, KVO).
- Architecture of object data storage (CoreData). Synchronous connection of the database and application control via KVO.
- Multiuser applications with a central database (CloudKit). Asynchronous connection of the database and application control via GCD.
- Application life cycle in the context of operation system. User configurations. Runtime memory optimizations.
- Simulation kernel for games development (SpriteKit, SceneKit). Modelling of the physical environment and mechanics.
- Desktop applications architecture. Runtime interconnection of a mobile and desktop application.
- Applications development for tvOS and watchOS.
Fundamentals seminar
Teacher / Lecturer
Syllabus
- Programming in Swift. Using XCode IDE.
- Foundation library in examples. Data collections and basic algorithms.
- Application for iOS. Implementing DataSource and Delegate objects.
- Multithreaded applications. Message passing within the application. Key-Value Observing. Documents.
- Application based on CoreData.
- Application based on CloudKit.
Project
Teacher / Lecturer
Syllabus
- Design and implementation of an application with given features.