iPhone Application Programming (WS 2013/14)
News
- 22.10.13 The video of the first lecture is now available. See Links section below.
- 14.10.13 Detailed schedule of the first five lectures are updated.
- 30.09.13 Lecture and lab schedule is updated
- 27.09.13 Want to join us in the lab? Fill in this form before Oct. 18th.
- 23.09.13 Around September 27th, we will announce the procedure for lab registration. You will have time until October 16th to register for the lab. We will announce the result of lab selection on October 18th. The first lab starts on October 21st.
- 26.08.13 Registration details are updated for WS 2013/14. See below.
- 27.07.13 Updated homepage for WS 2013/14
- 03.06.13 In WS13/14, this class will take place Tue 9:15-11:45 (lecture) and Mon 16:15-17:45 (lab) as in past years.
Please ignore any other dates posted in CAMPUS.
Content
In this course students learn to develop and deploy mobile applications on Apple's iPhone, iPod touch and iPad.The iPhone OS SDK was designed from scratch when introduced with the iPhone OS 2. In its design, it follows various established software development patterns, making it an ideal subject to teach how to create such an SDK. This shows how software design patterns can advance from pure theory to a real-world setting. On the other hand, the iPhone is a very interesting device from an HCI perspective. The user interface has to deal with (multi-)touch interaction, which results in new challenges to the software architecture, e.g., in event handling. With its rich set of sensors, the iPhone allows for input far beyond mouse and keyboard. Finally, both the iPhone and the iPad have simply become "in"-devices since their introduction. Didn't you ever want to show your own app to your friends on your iPhone?
Credits Allocation
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, (2) participate in a final project. You will have access to lab schedules on Mondays. We have only 20 slots which will be allocated at the beginning of the semester.
Course Registration
Dates | Basic Track (3 ECTS) | Hands-on Track (6 ECTS) |
---|---|---|
Earliest as possible | Register for the lecture in CAMPUS System • TK students: please drop Chat an email for registration. • If you cannot register for the lecture please come to the first lecture. | |
Within the first week of the lecture | • Make sure that you have access to L2P. Otherwise, contact Chat. • Register with Apple iOS Development Program. Make sure that you can view WWDC videos. | |
Before Oct. 18th | Register for the lab by filling out this form | |
Oct. 19th | Check your email for registration result and preparation instruction. If you don't get a lab slot, you are still in the Basic track. | |
11.9.–22.11. | Register for the exam "iPhone Programming 3 Credits - Exam Registration" in CAMPUS system. | Register for the exam "iPhone Programming 6 Credits - Exam Registration" in CAMPUS system. |
Schedule
Lecture | Tue | 9:15-11:45 | Room 2222 |
---|---|---|---|
Lab | Mon | 16:15-17:45 | Room 4U15 (See Mac Lab@RBI below) |
Lab | Topic | Facilitator | Assignment | Lecture | Topic | Presenter |
---|---|---|---|---|---|---|
Part 1: Basics | ||||||
15.10. | • Course logistics • Mobile App Design Principles • iOS Technology Overview Slides: 1up 4up Reading assignment | Jan | ||||
21.10. | • Xcode basics • Debugger basics Slides: 1up 4up Reading assignment | Chat, Leonhard | A01: Xcode basics • Debugging, refactoring, and commenting • Memory management A01 | 22.10. | • Objective-C language constructs • Memory Management • Cocoa design patterns Slides (complete): 1up 4up Reading assignment | Gero |
28.10. | • Memory management • Assignment feedback | Chat | A02: Calculator (1) • Objective-C coding basics • Using Foundation classes A02 | 29.10. | • Data structures • Timer • Notifications • Key-value Observing Slides (complete):1up 4up | Jan |
04.11. | (no lab) | 05.11. | (no lecture) | |||
11.11. | • Concurrency demo Lab3Demo | Chat | A03: Calculator (2) • Cocoa design patterns • Concurrency A03 | 12.11. | • View programming • Localization Slides (complete): 1up 4up Reading assignment | Jan, Chat |
18.11. | • NSPurgabledata • Investigating CPU usage • In-class exercise in concurrency Lab4Demo | Chat | A04: iPhone Invader (1) • Game design • Basic screens A04 | 19.11. | • iOS run-time considerations • Application life cycle • View controllers Slides: 1up 4up | Chat |
25.11. | • A04 presentation | Chat | A05: iPhone Invader (2) • Visualization A05 | |||
Part 2: In-Depth Topics | ||||||
26.11. | • Drawing with Quartz • GL Kit • Sprite Kit Slides: 1up 4up | Simon | ||||
02.12. | • Assignment feedback • Device lend-out | Simon, Chat | A06: iPhone Invader (3) • Game input with touch and motion A06 | 03.12. | • Touch and gesture recognizers • Motion input • Proximity sensor and remote control Slides: 1up 4up | Christian, Nur |
09.12. | • Assignment feedback | Leonhard | Final project: Conception P01 | 10.12. | Instruments Slides: 1up 4up | Moritz |
16.12. | Instruments lab | Moritz | Final project: prototyping and technology survey (see P01 above) | |||
Part 3: Specific Programming Topics | ||||||
17.12. | Data Persistence Slides: 1up 4up | Jan-Peter | ||||
(winter break) | ||||||
06.01. | • Project feedback | Chat | Final project week 1 | 07.01. | Networking Slides: 1up 4up | Jonathan |
13.01. | • Introduction to L2P API • Project feedback | CiL Staff, Chat | Final project week 2 | 14.01. | Integration Slides: 1up 4up | Leonhard |
20.01. | • Project feedback | Chat | Final project week 3 | 21.01. | Location & Maps Slides: 1up4up | Chat |
27.01. | • Project feedback | Chat | Final project week 4 | 28.01. | Audio Slides: 1up 4up | Florian |
03.02. | • Final project performance tuning | Chat, Moritz, Leonhard, Florian | 04.02. | (Final project presentation) | ||
Exam and Project Presentation | ||||||
04.02. | Final Project Presentation 9:15–11:45, Room 2222 | |||||
10.03. | Exam 9:00–11:00, Room 2222 | |||||
13.03. | Exam review 17:00–18:00, Room 2222 | |||||
31.03. | Exam second chance 9:00–11:00, Room 2222 |
Grading:
Components | Basic Track (3 ECTS) | Hands-on Track (6 ECTS) |
---|---|---|
Assignments | – | 10% |
Project | – | 20% |
Final Exam | 100% | 70% |
Information for Hands-on Track
Mac Lab@RBI
The RBI has a Mac-Lab (Room 4U15) in which you can work on the assignments. You can work there according to the reservation plan. We reserved additional lab slots exclusively for you on Monday 13:00–16:00 and Thursday 12:00–18:00.Assignments
Assignments will be handed out on Monday in each lab as shown in the schedule above. The deadline of each assignment is the following Monday at 9:00. Late submission will not be graded.Final Project
This year, students will develop iOS application that help enhancing learning experience. The application will leverage the content and information from L2P, RWTH Aachen University's online learning platform.Target user group: Students at RWTH Aachen University. Selecting a specific group of students will allow you to fine-tune your app to their need; hence, this makes your app stands out. For example, you may choose to cater students from a major, a semester year, or a course. Alternatively, you may choose to develop an app for a specific disability (sight, hearing, motor disability) or for a situational disability (e.g., an app that chemistry students will use during their chemical experiment that they cannot continuously look at the screen).
Main use case: Activities related to learning. You must specify at least one concrete use case in users' language. The use case must include the context that the app will be used, goals that the user want to achieve, and roles of your app.
Use case:
- Yelp allows users to look for restaurants nearby based on rating an reviews generated by other users.
- Things allows users to manage their tasks with a system of check lists.
- Level Money graphically shows users' daily cash flow to encourage them to better manage their money.
- Shazam recognizes music playing in the vicinity to allow users to explore and buy music.
NOT a use case
- view PDF (View what PDF? In which context? Why do the users want to view PDF?)
- download file (Download what file? What's the utility of the file?)
For a passing grade (4.0), your project must to satisfy all of the the following requirements:
- Your team must consists of 3 to 5 students.
- You must create one paper prototype, test with real users, and report the changes that you made in your final UI.
- You must submit source code of your app for grading. All rights of your source code belongs to you. We will not distribute the code.)
- Your app must be significantly worked on during this semester. Although you may use existing source code, projects, and libraries, you have to explicitly indicate any existing codes that you've adopted in your source code and documentation.
- Your app must allows users to accomplish at least one main use case (see above).
- Your app must be able to run the main use case without crashes or hangs.
- Your app must use L2P API. We will evaluate how your code handle network communications.
- At least one of your team member present your app in the final presentation session announced above.
- Your app and source code must be in English
People
- Prof. Jan Borchers — Lecturer
- Chat Wacharamanotham — Coordinator, main contact person for this course
- Aaron Krämer — Student assistant
- Florian Heller — iTunes U management
- Specialized topic lecturers listed in the schedule above
Testimonies
I'd like to thank you and your assistants for your hard work. Your iOS programming course is absolutely awesome and I have been able to start programming in Objective-C. Another book I tried had given me literally nothing, and I wasn't able to switch from Python development to ObjC. Your "theory comes first" approach really works well, much better than so-called "hands-on programming" approaches. -- Michael Samoylov, software developer (Feb 2, 2013)Literature Recommendations
iOS 7 (including Cocoa and Objective-C):
- Matt Neuburg: iOS 7 Programming Fundamentals. Covers the theoretical basics you need - C, ObjC, Xcode, Cocoa Foundation classes, KVC, etc.
- Matt Neuburg: Programming iOS 7. Continues on with views, view controllers, persistence, threads, networking, and many of the key frameworks (including sensors, etc.). (Check out a draft of the previous version: Programming iOS 6 )
COCOA, Objective C (not iOS specific):
Links
- L2P eLearning Room: Lecture slides, assignments, and resources (for RWTH students only)
- iTunes U: Lecture videos and slides. Don't have iTunes installed? Subscribe to this RSS.
- iPhone Developer Starting Page: Guide to the Apple iOS Developer Center for RWTH students and institutes.
- Sample iPhone Projects A collection of small examples created for our students.
- Join our Facebook Group
- Apple on Campus: Getting a Mac with student discounts.
Previous courses: