Mobile Device Programming introduces native iOS application development with Swift, Xcode, and UIKit. The course takes students from creating their first project and building adaptive interfaces to integrating data, network services, and device capabilities.
The learning path is strongly practice-oriented: each topic leads to an exercise that extends a reference application and prepares students for the final project. The course covers architecture and lifecycle, navigation, lists and collections, permissions, location and maps, concurrency, persistence and security, camera and sensors, localization, notifications, Live Activities, and HealthKit. It concludes with a first look at SwiftUI and interoperability between technologies.
The aim is for students to understand the complete process of building a robust, usable, and maintainable iOS app, and to make well-founded technical decisions in a professional context.
Titular Professors
Professors
To follow the course successfully, students are expected to have:
• Basic knowledge of object-oriented programming.
• Familiarity with data structures, algorithms, and error handling.
• A basic understanding of client-server architecture, web services, and data access.
• General knowledge of interface design, usability, and user experience.
No previous experience with Swift, Xcode, or iOS development is required.
The course objectives are:
• Master the foundations of Swift and use Xcode confidently to create, debug, and test iOS applications.
• Design adaptive and accessible interfaces with UIKit, Storyboards, Auto Layout, UITableView, and UICollectionView.
• Structure an application through clear responsibilities, design patterns, and appropriate navigation mechanisms.
• Consume remote services, decode data, and manage asynchronous operations and third-party dependencies.
• Persist data and handle sensitive information with appropriate mechanisms, including Core Data and Keychain.
• Integrate permissions and system capabilities responsibly: location, maps, camera, sensors, notifications, background work, and health data.
• Apply UI/UX, localization, efficiency, privacy, and code-quality criteria throughout development.
• Plan, document, present, and defend a complete iOS application as a team.
The course content is organized as a progressive sequence:
• iOS foundations and development environment. The Apple ecosystem, iOS, and UIKit; Xcode projects, targets, schemes, simulator, and physical devices; Storyboards, connections, Auto Layout, safe areas, stack views, and adaptivity.
• Swift for UIKit. Types, optionals, collections, control flow, functions, closures, structs, classes, enums, protocols, extensions, errors, ARC, and an introduction to async/await.
• Architecture, lifecycle, and navigation. Responsibilities of views and controllers, MVC and supporting collaborators, app and scene lifecycle, tabs, navigation stacks, segues, modal presentation, data passing, and component communication.
• Data-driven interfaces. UITableView and UICollectionView, reusable cells, XIBs, self-sizing, traditional and diffable data sources, snapshots, flow layout, and compositional layout.
• Privacy, location, and maps. Permissions and purpose strings, Core Location, location-data quality, responsible battery use, MapKit, annotations, and testing on simulators and devices.
• Networking and dependencies. Swift Package Manager, version resolution, Alamofire, Codable, concurrency, error handling, transport and domain models, image loading, and caching.
• Persistence and security. UserDefaults, files and Codable, Core Data, queries, migrations, repositories, and Keychain.
• Device capabilities and internationalization. Photos, camera, sensors, resource management, string catalogs, locale-aware formatting, Dynamic Type, and interfaces that adapt to different languages.
• Notifications and background execution. Local and remote notifications, permissions, categories and actions, BackgroundTasks, and Live Activities.
• Health data. HealthKit availability, authorization, types, units, queries, statistics, and no-data states.
• Introduction to SwiftUI. Declarative programming, view composition, state, bindings, lists, and UIKit interoperability.
The course combines conceptual explanations, demonstrations, guided practice, and independent work within a project-based learning approach.
• Face-to-face sessions: 14 three-hour sessions. Each session introduces the essential concepts and devotes most of the time to applying them in Xcode.
• Progressive exercises: weekly hands-on labs extend a reference application and require students to test normal paths, errors, denied permissions, empty states, and different device configurations.
• Independent learning: students consult documentation, compare alternatives, and solve problems with guidance from the teaching staff.
• Final project in pairs: students develop a complete iOS app. Before implementation, each team validates the concept, the required APIs and SDKs, and a complete screen design. Progress is reviewed through checkpoints and short interviews.
The methodology emphasizes deliberate practice, justified decisions, and the ability to turn requirements into a functional product.
Assessment is continuous and combines knowledge acquisition with its application in a complete project.
Final grade = 30% knowledge and weekly exercises + 70% practical work and final project.
• Knowledge and weekly exercises (30%): individual activities linked to the course topics. Assessment considers functional correctness, understanding, code quality, diagnostic ability, and submission within the required deadline and format.
• Practical work and final project (70%): development in pairs of a functional iOS app that integrates, at minimum, an HTTP-accessible API, user authentication, a device SDK or capability, and a complete interface suitable for real use. It includes prior design, a written report, source-code submission, and a project defense.
All compulsory activities and the final project must be submitted to pass the course. Work must be submitted through eStudy and follow the stated naming and academic-integrity rules.
Use of artificial intelligence (AIAS)
- Weekly hands-on exercises completed and assessed entirely in the classroom or laboratory (40%): Level 1 (No AI). They must be completed without the assistance of generative artificial intelligence tools.
- Final application development project and resit project (60%): Level 2 (AI Planning). AI may only be used for ideation, initial exploration, organisation and planning. It may not be used to generate, complete, correct or rewrite code, documentation or any other part of the submitted product.
- Project demonstration, presentation and individual defence: Level 1 (No AI).
Any permitted use of AI must be declared in the submission, identifying the tool used, its purpose, and the prompts or instructions entered. Any use exceeding the stated level, or any undeclared use, will be considered a breach of academic integrity rules. Students remain responsible for the authorship, accuracy and correct operation of all submitted material.
Assessment evidence is evaluated according to the following criteria:
• Functionality and robustness: the application meets the requirements, handles errors and alternative states, and runs on the target device.
• Swift and code quality: correct use of types, optionals, collections, concurrency, error handling, and memory management; readable and consistent code.
• Architecture: well-separated responsibilities, understandable navigation, appropriate models, and encapsulated dependencies.
• Data and services: correct API integration, decoding, persistence, and protection of sensitive information.
• iOS integration: contextual permission requests, justified use of frameworks and capabilities, and correct behavior when availability or authorization changes.
• UI/UX: a complete, adaptive, localizable, accessible interface that follows platform conventions.
• Process and communication: completion of checkpoints, testing, documentation, presentation, ability to justify decisions, and balanced team contribution.
• Apple. Xcode Documentation. https://developer.apple.com/documentation/xcode
• Apple. UIKit Documentation. https://developer.apple.com/documentation/uikit
• Apple. Human Interface Guidelines. https://developer.apple.com/design/human-interface-guidelines/
• The Swift Project. The Swift Programming Language. https://docs.swift.org/swift-book/documentation/the-swift-programming-language/
• Apple. SwiftUI Documentation. https://developer.apple.com/documentation/swiftui
• Apple. URL Loading System. https://developer.apple.com/documentation/foundation/url-loading-system
• Apple. Core Data. https://developer.apple.com/documentation/coredata
• Apple. MapKit. https://developer.apple.com/documentation/mapkit
• Apple. UserNotifications. https://developer.apple.com/documentation/usernotifications
• Apple. HealthKit. https://developer.apple.com/documentation/healthkit