iPhone Application Programming WS 2015/16 (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

 

News:

  • 04.01.16 first lecture after Xmas is on 12.01.16 and first lab 11.01.16
  • 19.10.15 the list of accepted students in the lab is now available 
  • 19.10.15 L2P room is now open
  • 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.

Credits

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

 

People

 

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 27 Register for the exam "iPhone Programming 3 Credits - Exam Registration" in CAMPUS. Register for the exam "iPhone Programming 6 Credits - Exam Registration" in CAMPUS.

 

Schedule

Lecture Tue 9:15-11:45 Room 2222
Lab Mon 14:15-15:45 Room 2222

 

Exams

Final 19.02.16 10:00-12:00 Room 9222
Final second chance 29.02.16 10:00-12:00 Room 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).

Grading

Scored Items Basic 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

How to Setup iOS Development Environment
Nur 26.10 L01 iOS Development Environment
A01 Debugger and App Life Cycle
Designing for iOS
Case Study: From Desktop to iOS
 
27.10. S02 Swift Part1 Nur 02.11. L02 MVC and Delegation + A01 discussion


A02 MVC and Delegation
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 lecture 09.11. L03 Swift Types and Custom Operator + A02 discussion


A03 BeverageList: Swift Types, Undo, and Unit Tests
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
Nur 16.11. No lab A04 UpcomingMovies: Tables, View Navigation, NSData + JSON, Web View, GCD
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 lecture 23.11. L04 Integration with Cocoa Touch


A05 Instagram: Building a complete app, User Documents, Integration
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


Nur 30.11. S05 View Programming
Continue A05 View Programming Guide
UIKit Framework
UIKit User Interface Catalog
 
01.12. S06 View Controller Programming, Core Graphics and Core Animation
Nur 07.12. L05 Final Project Kickoff
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 lecture 14.12. No lab Recommended 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


Simon Voelker 21.12. S08 Event Handling, Gesture Recognizers and Core Motion + project discussion Continue with project
22.12. S09 Location & Maps Krishna Subramanian Xmas break until 05.01.16        
11.01. Project discussion Continue with project
12.01. S10 Multimedia and WatchOS

Jan-Peter 18.01. Project discussion Continue with project
19.01. S11 Networks Christian Cherek 25.01. Project discussion Continue with project
26.01. No lecture 01.02. S12 Data Persistence (Jan-Peter)

S12 Demos
Continue with project
02.02. S13 tvOS


Christian Corsten and Krishna 08.02. No lab Continue with project
09.02. Projects presentation and exam preparation Nur          

 

Course Plan (updated 10.11.15)



Previous courses: