CS4980 (Section 2), iOS App Development
Fall 2017, The University of Iowa
Instructor:
Jim Cremer, 101P MLH, james-cremer@uiowa.edu, 319-321-1893
Office hours: 1:00-2:00TTh and by appointment
TA:
TBA
Class meeting times/location:
11:00-12:15 TTh, W55 CB
Google Sites website for this course
A companion Google Sites website, uiiosf17 will be used for two things: 1) documenting group project work, and 2) a portal for the Google Groups discussion forum for the class.
- 10/5/17 HW5 is available.
- 10/5/17 Code from lecture 12 is available.
- 9/26/17 Code from lecture 11 is available.
- 9/22/17 HW4 is available.
- 9/21/17 Code from lecture 10 is available.
- 9/20/17 Code from lecture 9 is available.
- 9/14/17 Code from lecture 8 is available.
- 9/12/17 HW3 is available.
- 9/12/17 Code from lecture 7 is available.
- 9/7/17 Code from lecture 6 is available.
- 9/5/17 Code from lecture 5 is available.
- 8/31/17 HW2 is available.
- 8/31/17 Code from lecture 4 is available.
- 8/29/17 Code from lecture 3 is available.
- 8/23/17 HW1 is available.
CS2230 (CS II) or CS2110 (Programming for Informatics) but more advanced courses such as CS2820 (Obj. Oriented Software Development ) and CS3110 (Algorithms) strongly recommended
This will not be a regular lecture/homework course. I will give several
weeks (6-7) of lecture classes and homework assignments to get everyone to a
common point in basic iOS programming.
After that, most of the work will be team-based app design
and development. Teams will be aspect where teams have to come up with a project idea, specify and
design it, schedule, implement and present it. Most of the class will be spent working on the group
projects; teams will have either two or three students (proposals for individual projects will be considered for special circumstances).
There will be no tests - grades will be
based on the basic homework assignments (from the first few weeks) plus the design, small progress reports, presentations and result of the group projects.
Again, there won't be a lot of regular lecture-style teaching - a bit at the beginning of the semester
but much less as the course proceeds. I am not a true expert in iOS. I have developed or been part of several
deployed apps but none of them have been super sophisticated.
People usually find the course fun and interesting, but it depends
on the interest and willingness of people to do significant learning on their own or with their peers.
Usually, students who put in a good effort enjoy
it and learn valuable things - not just iOS development, but also things about design, working in teams,
realistic goals and planning, etc.
The scheduled final exam time will be used for some groups' project presentations: Fri., Dec. 15, 10am-noon, W55 Chemistry Building.
Plus/Minus grading will be used for the course.
Approximately: Homework: 40%, project 60% (consisting of many smaller components - design, status updates, presentations, results, report, etc.)
There will be no exams.
Late homework submissions will accepted up until the due date of the subsequent assignment.
Late assignment's will be awarded 50% of the score the
submission would receive if submitted on time.
No textbook required.
Key strongly recommended online resources for this course:
Note: In the early lecture portion of the course, I will use Swift 4, iOS 10, and XCode 9. Some of the iOS 9 resources listed below can still be helpful but you need to be aware of the differences.
Other potentially helpful online resources:
- Code from Lecture 12, Sept. 28: L12push.zip, L12snap.zip, L12attach.zip, L12paddleBall.zip. More basic UIKit Dynamics.
- Code from Lecture 11, Sept. 26: L11Dynamics1.zip, L11Dynamics2.zip. Basic UIKit Dynamics.
- Code from Lecture 10, Sept. 21: L10picker.zip, L10singleton.zip, and L10TVandWV.zip Use of protocols, UIPickerView, UITableView, UIWebView, and singleton objects. Built in Xcode 9.
- Code from Lecture 9, Sept. 19: Lec9Tab.zip. Tab bar controller and simple timer. Built in Xcode 9.
- Code from Lecture 8, Sept. 14: L8segues.zip and L8nav.zip. Segues and navigation controllers. Built in Xcode 9.
- Code from Lecture 7, Sept. 12: Lec7.zip. Adding views via code (rather than storyboard), basic gestures. Built in Xcode 9.
- Code from Lecture 6, Sept. 7: Lecture6.zip. Custom views and very basic drawing/graphics. Built in Xcode 9.
- Code from Lecture 5, Sept. 5: Lecture5.zip. Code demo'ing use of images with buttons, the TextField widget and dealing with the keyboard, and data persistence with UserDefaults. Project was built in Xcode 9. If you're using Xcode 8 it won't work without changes.
- Code from Lecture 4, Aug. 31: Lec4Calculator.zip. Basic RPN calculator. The project in the zip file was developed in XCode 8, since some of you aren't yet using Xcode 9. Projects created in 9 generally don't work in 8. The version demo'd in class was developed with Xcode 9.
- Code from Lecture 3, Aug. 29: s1.playground, s2.playground. These two playgrounds were demonstrated in class, covering basic Swift language concepts and features. For more details see A Swift Tour.
- Homework 5, due Fri., Oct. 20, by 5:00pm
- Homework 4, due Wed., Oct. 4, by 5:00pm
- Homework 3, due Wed., Sep. 20, by noon
- Homework 2, due Mon., Sep. 11, by 8:00am
- Homework 1, due Mon., Aug. 28, by 5:00pm
Computers (and iOS devices) available
You will need access to a Mac (or a "Hackintosh") for this course.
Documenting and submitting programs
For certain homework assignments, you must submit via the appropriate ICON. First, create a zip file of the folder containing your homework XCode project. Then, upload just that
zip file to the ICON.
Scores will be available on ICON only.