iPhone Application Programming WS 2015/16 (Updated for iOS 9 and Swift 2.1)

This course introduces students to mobile development with iOS libraries. The focus is on understanding and applying the human interface guidelines to improve the user experience, as well as grasping the underlying concepts of Swift language and framework design. We also introduce tvOS and watchOS guidelines and development.
The site contains additional learning materials and logistics.

The course is online: [CAMPUS] [L2P] [iTunes U]

Video teaser of past course projects


  • 04.01.16 first lecture after Xmas is on 12.01.16 and first lab 11.01.16
  • 19.10.15 the list (updated) of accepted students in the lab
  • 19.10.15 L2P room is now open
  • 19.10.15 the list of accepted students in the lab
  • 06.10.15 the lectures will be recorded and uploaded to iTunes
  • 06.10.15 L2P room will be open after the first week of lectures
  • 06.10.15 first lecture will take place on 20.10.15 Tuesday at 9:15-11:45 in room 2222, Ahornstr. 55
  • 06.10.15 there will be no lab on 19.10.15
  • 24.08.15 registration will open soon. If you are interested in registering for the lab in addition to the, fill this form. We only have 16 slots in the lab. If you are accepted in the lab you can register for the course as 6 ECTS credits, otherwise you can only take it as 3 ECTS credits.

Why Take This Course?

  • At the end of the course you will be able to implement full iOS apps
  • You will know Swift: syntax, concepts, and how to use it correctly. Swift can be used to program iOS, OS X, watchOs, and tvOS
  • You will be able to design your apps to look and feel according to Apple’s Human Interface Guidelines
  • Your implementation will follow the recommended design strategies: MVC, delegation, target-action
  • You will be able to use the most important frameworks in Cocoa Touch (UIKit, Foundation, SpriteKit, MapKit, AVFoundation, etc.) and can easily learn more!
  • Your will know how to make your apps interactive: animations, multimedia, graphics, sensors, etc

Swift or Objective-C?

If you are starting, Swift. If you know Objective-C, then Swift. Objective-C is not going away any time soon, but Swift is slowly taking over as an independent language for all Apple devices(iOS, OS X, tvOS, watchOS). You can (almost) write all Swift apps now.


This course has two tracks
  • Basic track (3 ECTS = V3) — You are required to pass the the final exam.
  • Hands-on track (6 ECTS = V3 + Ü2) — In addition to the 3 ECTS requirements, you are required to (1) hand in assignments regularly, and (2) participate in a final project. You will have access to the Mac lab and iPhone devices if needed. We have only 16 slots for the 6-credit track. These will be allocated at the beginning of the semester.
  • The course can be taken for master credit


Course Registration

Dates Basic Track (3 ECTS) Hands-on Track (6 ECTS)
As early as possible
Register for the lecture in CAMPUS.
TK students: please drop Nur an email for registration.
If you cannot register for the lecture please come to the first lecture.
Before Oct 20 Register for the lab by filling out this form.
Before Oct 26 Check your email for registration results and preparation instructions.
If you don't get a lab slot, you are still in the Basic track.
Before Nov 27Register for the exam "iPhone Programming 3 Credits - Exam Registration" in CAMPUS. Register for the exam "iPhone Programming 6 Credits - Exam Registration" in CAMPUS.


LectureTue9:15-11:45Room 2222
LabMon14:15-15:45Room 2222


Final19.02.1610:00-12:00Room 9222
Final second chance29.02.1610:00-12:00Room 9222

NOTE: Seminar room 9222 is in building E3 is (the newest building in Informatik-Gebäude, ahornstraße. 55). To reach the room, go to the Informatik library, E2 (Bibliothek der Fachgruppe Informatik), take the stairs down one floor, take the door to exit the building, on your left is building E3. Room 9222 is in the 2nd floor (you can take the elevator/lift).


Scored ItemsBasic Track (3 ECTS)Hands-on Track (6 ECTS)
Assignments 20%
Project 20%
Final Exam 100% 60%

Course Work

LectureTopicPresenterLabTopicWritten AssignmentReading Assignment (good apps)Advanced Topics (successful apps)
20.10.S01 Logistics and Intro to Mobile Development

S01 Slides

How to Setup iOS Development Environment
Nur26.10L01 iOS Development Environment

L01 Slides
A01 Debugger and App Life Cycle

A01 Handout
Designing for iOS

Case Study: From Desktop to iOS
27.10.S02 Swift Part1

S02 Slides

S02 Demos
Nur02.11.L02 MVC and Delegation + A01 discussion

L02 Slides

L02 Demos
A02 MVC and Delegation

A02 Handout
From Swift Language Guide: the basics, basic operations, strings and characters, collection types, control flow, functions, closures, classes and structures, and properties. (Do the "Experiment" with Playground. Consider the "Notes" they are quite informative.)

To catch up with the lab: Check out the Jump Right In iOS programming tutorial from Apple (we covered until “Implement a Custom Control")
03.11.No lecture09.11.L03 Swift Types and Custom Operator + A02 discussion

L03 Slides

L03 Demo
A03 BeverageList: Swift Types, Undo, and Unit Tests

A03 Handout
Debugging with Xcode: Quick Start Debugging with Xcode: Debugging Tools

WWDC 2014:Debugging in Xcode 6

WWDC 2015:Advanced Debugging and the Address Sanitizer
10.11.S03 Swift Part 2

S03 Slides (updated on 04.01.16)

S03 Demos
Nur16.11.No labA04 UpcomingMovies: Tables, View Navigation, NSData + JSON, Web View, GCD

A04 Handout
WWDC 2015:Protocol-Oriented Programming in Swift

WWDC 2015:Building Better Apps with Value Types in Swift
Energy Efficiency Guide for iOS Apps
17.11.No lecture23.11.L04 Integration with Cocoa Touch

L04 Slides

L04 Demo
A05 Instagram: Building a complete app, User Documents, Integration

A05 Handout
The rest of The Swift Programming Language (Swift 2.1)

Cocoa Core Competencies: MVC, Bundle, Key-value observing, Notification and Property list.
Swift Language Reference
24.11.S04 Foundation and Design Patterns

S04 Slides

S04 Demos
Nur30.11.S05 View Programming

S05 Slides
Continue A05View Programming Guide

UIKit Framework

UIKit User Interface Catalog
01.12.S06 View Controller Programming, Core Graphics and Core Animation

S06 Slides
Nur07.12.L05 Final Project Kickoff

L05 Slides
A05 deadline extended to Wednesday 09.12. 10:00pm

P01 Health App Concept. Submit a 3 line description of your app, list of features, expected users, screens of the main screens, and a working app name (see example). Deadline Mon. 14.12. 9:00am

Recommended to know what data you can get from HealthKit: WWDC '14 Introduction to HealthKit
App Programming Guide for iOS: The App Life Cycle and Strategies for Handling App State Transitions

View Controller Programming Guide
Core Animation Programming Guide

WWDC '15 Designing with Animation

Quartz 2D Programming Guide

Xcode Guide
08.12.No lecture14.12.No labRecommended for project: WWDC '15 What's New in Core Motion

WWDC '15 Building Responsive and Efficient Apps with GCD
WWDC '15 Implementing UI Designs in Interface Builder

WWDC '15 What's New in Notifications

Learn how to do data validation and understand the benefits of structs: WWDC '14 Advanced iOS Application Architecture and Patterns
15.12.S07 Rendering, Metal, Sprite kit, Scene kit

S07 Slides

S07 Demos
Simon Voelker21.12.S08 Event Handling, Gesture Recognizers and Core Motion + project discussion

S08 Slides

S08 Demos
Continue with project
22.12.S09 Location & Maps

S09 Slides

S09 Demos
Krishna SubramanianXmas break until 05.01.16
11.01.Project discussionContinue with project
12.01.S10 Multimedia and WatchOS

S10 Slides

S10 Demos
Jan-Peter 18.01.Project discussionContinue with project
19.01.S11 Networks

S11 Slides
Christian Cherek 25.01.Project discussionContinue with project
26.01.No lecture 01.02.S12 Data Persistence (Jan-Peter)

S12 Slides

S12 Demos
Continue with project
02.02.S13 tvOS

S13 Slides

S13 Demos
Christian Corsten and Krishna 08.02.No labContinue with project
09.02.Projects presentation and exam preparation

Exam Prep. Slides

Course Plan (updated 10.11.15)

Previous courses:

Created by voelker. Last Modification: Friday 04 of March, 2016 02:44:58 by hamdan.

Media Computing Group at RWTH Aachen