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

Starting in Winter Semester 2016/2017, this course was redesigned. It's now using a new teaching format, and has a new URL: https://hci.rwth-aachen.de/ios


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 (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.

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

S01 Slides
How to Setup iOS Development Environment
Nur 26.10 L01 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
Nur 02.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 lecture 09.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
Nur 16.11. No lab A04 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 lecture 23.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
Nur 30.11. S05 View Programming

S05 Slides
Continue A05 View Programming Guide
UIKit Framework
UIKit User Interface Catalog
 
01.12. S06 View Controller Programming, Core Graphics and Core Animation

S06 Slides
Nur 07.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 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

S07 Slides
S07 Demos
Simon Voelker 21.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 Subramanian Xmas break until 05.01.16        
11.01. Project discussion Continue with project
12.01. S10 Multimedia and WatchOS

S10 Slides
S10 Demos
Jan-Peter 18.01. Project discussion Continue with project
19.01. S11 Networks

S11 Slides
Christian Cherek 25.01. Project discussion Continue 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 lab Continue with project
09.02. Projects presentation and exam preparation

Exam Prep. Slides
Nur          

 

Course Plan (updated 10.11.15)



Previous courses:

Attachments:
File Description File size Downloads Last modified
A01 Handout.zip Assignment 1 250 kB 4667 2014-10-20 22:19
A02 Handout.zip   91 kB 3214 2014-10-27 15:17
A03 BeverageList Swift.pdf A03 Handout 64 kB 4186 2014-11-13 11:01
A05 Invader (2).pdf [A05] 40 kB 3746 2014-12-01 11:53
A04 Invader (1).pdf [A04] 98 kB 4263 2014-12-01 11:53
Oct 6.pdf   33 kB 2902 2015-10-06 13:07
Oct 6.png   381 kB 3231 2015-10-06 13:07
Accepted students for lab (pulled on 19.10.15).pdf   21 kB 3188 2015-10-19 01:47
Accepted students for lab (pulled on 19.10.15).pdf   43 kB 3120 2015-10-19 12:27
S01 Logistics and Intro to Mobile Programming.pdf   37803 kB 4774 2015-10-20 11:42
Handout.zip   234 kB 3157 2015-10-26 13:06
Oct 26.pdf   38 kB 2753 2015-10-26 13:09
S02 Swift Part 1.pdf   4571 kB 3918 2015-10-28 04:01
L01 iOS Development Environment .pdf   2500 kB 5489 2015-10-28 10:44
S02 Playgrounds.zip   35 kB 2628 2015-10-28 11:07
A02 Handouts.zip   79 kB 2353 2015-11-02 12:58
L02 MVC and Delegation A01 discussion .pdf   4977 kB 4668 2015-11-02 23:44
Delegation.playground.zip   12 kB 2490 2015-11-02 23:45
A02 Handouts.zip   79 kB 2321 2015-11-03 00:33
A03 Handouts.zip   71 kB 2469 2015-11-09 13:44
A03 Handouts.zip   71 kB 2472 2015-11-09 13:44
L03 Swift Types and Custom Operator A02 discussion.pdf   6289 kB 4525 2015-11-09 16:20
TemperatureConverter.zip   49 kB 2639 2015-11-09 16:21
S03 Swift Part 2.pdf   6405 kB 4094 2015-11-10 13:18
S03 Playgrounds.zip   79 kB 2581 2015-11-10 13:18
A04 Handout.zip   83 kB 2671 2015-11-16 17:13
L04 Integration.pdf   3010 kB 3740 2015-11-24 01:53
L04 Integration Demo.zip   134 kB 2822 2015-11-24 01:54
A05 Handout.zip   4828 kB 2778 2015-11-24 01:55
S04.pdf   14095 kB 4034 2015-11-25 23:00
Enumerations.playground.zip   12 kB 2478 2015-11-25 23:01
S05 View Programming.pdf   13344 kB 4541 2015-12-01 12:42
S06 View Controller Programming Core Graphics and Core Animation.pdf   8313 kB 4715 2015-12-01 12:44
L05 Final Project Kickoff.pdf   2506 kB 3583 2015-12-07 20:49
S08 Event Handling Gesture Recognizers and Core Motion.pdf   5643 kB 5400 2015-12-21 23:30
S08 Demos.zip   5253 kB 2827 2015-12-21 23:31
S09 Location Maps.pdf   32944 kB 4251 2015-12-24 23:42
Location Maps ?? Demos.zip   194 kB 2451 2015-12-24 23:43
S07 Rendering Metal Sprite kit Scene kit.pdf   16919 kB 6472 2015-12-28 20:13
S07 Demos.zip   16234 kB 3370 2015-12-28 20:18
S03 Swift Part 2.pdf   7166 kB 3132 2016-01-04 16:08
S03 Swift Part 2.pdf   6235 kB 3633 2016-01-04 23:51
S04 Foundation and Design Patterns.pdf   9654 kB 4248 2016-01-05 00:19
L05 Final Project Kickoff.pdf   2552 kB 3408 2016-01-08 14:05
S10 Multimedia and WatchOS.pdf   31900 kB 4349 2016-01-23 22:53
Demos.zip   17736 kB 3275 2016-01-23 22:56
S11 Networking.pdf   7830 kB 3949 2016-01-23 22:57
S09 Location Maps.pdf   32938 kB 3369 2016-01-29 14:55
S09 Location Maps.pdf   32938 kB 3573 2016-01-29 14:56
S09 Data Persistence.pdf   32066 kB 3244 2016-02-03 10:57
S12 Data Persistence.pdf   32066 kB 3754 2016-02-03 11:01
S12 Data Persistence.pdf   32066 kB 3148 2016-02-05 01:05
S12 Data Persistence.pdf   32066 kB 3369 2016-02-05 11:03
S12 Data Persistence.pdf   32066 kB 3288 2016-02-05 11:06
S12 Data Persistence.pdf   32066 kB 3493 2016-02-05 11:08
S13 tvOS.pdf   44597 kB 5933 2016-02-05 11:09
S13 Demos.zip   18404 kB 3713 2016-02-05 11:10
S10 Multimedia and WatchOS.pdf   31900 kB 3359 2016-02-05 11:16
S05 View Programming.pdf   7820 kB 4699 2016-02-09 00:57
L06 Exam Preparation .pdf   2743 kB 3386 2016-02-09 12:45

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.