Exercises
How to set up your development environment
iOS development for this class requires a Mac computer running the latest stable macOS version. If you don’t have access to one, we might be able to offer you a loaner device (more info on that via email after all participating students have been registered).
- You’re going to need a free Apple developer account, which you can create here.
- Since we’re using GitHub Classroom for the exercises, please also create a free GitHub account, if you don’t have one yet.
- Install the latest stable Xcode version. I recommend installing via this fairly hidden download page on the Apple developer site, not via the App Store. The App Store version has the disadvantage that it will sometimes automatically update. Since Xcode ships with the latest Swift compiler, iOS SDK, etc., this can sometimes cause your code to break. Downloading and installing directly through the developer site doesn’t have this problem. This way you can also install multiple Xcode versions side-by-side.
- Just so you know, downloading and installing Xcode can take a very long time. Do this early enough, so you have enough time to focus on the exercises.
- After the installation, run Xcode once, since it will install additional components.
- I strongly recommend installing Homebrew on your system. It’s a package manager that allows you to easily install additional software.
- Make sure git is installed and up-to-date. If you installed Homebrew, you can do so by simply running
brew install git
from your terminal.
Fixed exercises
These exercises are relatively fixed in their scope and tasks. They’re almost like an interactive tutorial, but without the solution ;-)
Since this class is fairly new, you’ll probably run into problems in these exercises. Maybe something isn’t specified that should be, or maybe something is missing, or some information is conflicting. Since this will definitely happen, if you’re stuck, or feel something is more difficult than it should be, please contact me. I’m always happy to help.
Freeform Exercises
You can find all the details on the freeform exercises here.
Important Deadlines
Fixed exercises
- Swift Exercise (Deadline Wednesday, 21 September 2022, 23:55. GitHub Classroom Link)
- Login Exercise (Deadline Wednesday, 19 October 2022, 23:55. GitHub Classroom Link)
- REST Exercise (Deadline Wednesday, 9 November 2022, 23:55. GitHub Classroom Link)
- TableView Exercise (Deadline Monday, 12 December 2022, 23:55. GitHub Classroom Link) Important: This exercise is significantly longer than the other ones, so plan your time accordingly.
Freeform exercises proposals (see here)
- Please submit all proposals until Wednesday, 30 November 2022 23:55
- Please submit your reviewed, updated and final proposals until Monday, 12 December 2022 23:55
Freeform exercises
There are two deadlines for freeform exercise submissions:
- Please submit your first batch of freeform exercises until Monday, 9 January 2023 23:55
- Please submit your second and final batch of freeform exercises until Monday, 16 January 2023 23:55
- Github Classroom Link for both
Since the number and scope of freeform exercises isn’t fixed, what exactly you’ll have to submit will be a bit different for each student. If you’re working on a single, bigger exercise, I’d like you to have at least one major aspect or feature of your app finished. This can be either a vertical slice (for example, one screen/feature is completely finished, including UI, networking, persistence), or a horizontal slice (for example, you haven’t written a single bit of UI code, but your entire networking and persistence infrastructure is finished). Both is fine. When writing the proposals, please keep the deadlines in mind and try to get a rough plan of when you’re going to submit which features.
Submission instructions
- All exercises must be submitted before the deadline via GitHub Classroom. You can find the submission link for each exercise above.
- Not submitting before the deadline, or not using the correct repository through GitHub Classroom will be graded the same as not submitting at all.
- You may submit as many times as you like before the deadline. I will only look at your last submission.
- Make sure you understand all the concepts for the code review session in the lecture after the submission deadline. You’ll be graded according to your understanding of the code and the underlying concepts, not the code itself.
General requirements
- All exercises must build in the latest stable Xcode version without errors or warnings
- All exercises should run on the latest stable iOS version.
- Exercises should never crash. Errors should be handled properly, unless explicitly allowed otherwise in the exercise instructions
- Except for the Swift exercise, all the fixed exercises must run without errors in the iOS Simulator. For the freeform exercises you may use iOS capabilities that require a physical device, but the app should still handle these cases gracefully on the simulator (i.e. display an error when such a feature is accessed, not just crash).
How you are graded
- Most importantly: You are graded on your understanding of the code, not the code itself. Even the best code isn’t worth much if you don’t understand the underlying concepts.
- You need to complete and pass all fixed exercises to receive a passing grade.
- You need to complete at least 2 freeform exercises to receive a passing grade.
- For the fixed exercises, you’ll be graded on:
- Completeness (is everything there that the exercise asked for)
- Understanding of the main concepts
- Quality of your code (Don’t have unused code laying around. Make sure your code is properly indented. Use proper style conventions for Swift code. Follow the Swift API Design Guidelines.)
- For the freeform exercises, the above points are still the most important ones. You’ll additionally be graded on:
- Creativity
- Scope/Number of features. However, be careful, it’s much better to have fewer features and have them work really well.
- What you won’t be graded on:
- Visual design. This is mainly a technical class, so visual design isn’t super important. As long as UI elements are laid out properly and work on different device sizes, they don’t have to look super fancy.
Code review
During the lecture after the submission, we’re going to do a short 1-on-1 code review session by random sample. You will explain the code to me. You’ll be graded according to your understanding of the code and the underlying concepts, not the code itself.
Help and Support
As always, if you need any help or have any questions, feel free to contact me. I’m happy to help!