Native App Studio

Syllabus, Fall 2018

Today’s applications are increasingly mobile. Computers are no longer confined to desks and laps but instead live in our pockets and hands. This course teaches students how to build mobile apps for Android and iOS, two of today’s most popular platforms, and optionally, how to deploy them on Google Play and the App Store. Students practice using the platforms through a series of programming assignments, and working towards a final project to show off everything that has been learned. Students learn to write native apps for Android using Studio and the Android SDK or to write native apps for iPhones, iPod Touches, and iPads using Xcode and the iOS SDK.

Expectations

You are expected to complete the provided exercises, attend most office hours, submit seven fully working apps, improve on those apps for your portfolio, and to confer with your mentor regularly. You are also expected to work on preparations for your final programming project.

Getting started

  • Check if your personal timetable shows App Studio.
  • Read the remainder of this syllabus.
  • Install all required software for Android or iOS.
  • Come to the first session to get acquainted to the staff.
  • When in doubt, contact the course’s heads at help@mprog.nl or speak to your mentor.

Prerequisites

Programming 1 and 2, or equivalent, as decided by the course’s instructor. You need to be comfortable with memory management, runtime analysis, design patterns, databases, and basic data structures and algorithms. You also need to have a laptop capable of running either Xcode or Android Studio.

Asking questions

The course’s staff consists of your instructor and many teaching assistants. You are encouraged to ask questions to the staff. Whenever you are in the lab, feel free to send a help request by using the menu, above.

A list of the course’s staff:

  • Martijn Stegeman (instructor)
  • Renske Talsma (Android)
  • Natasja Wezel (Android)
  • Marijn Jansen (iOS)
  • Emma Hokken (iOS)

What to do

Every week, exercises and a project will be made available. Exercises get you started, and projects become part of a portfolio of apps. Final grades are determined using the following weights:

exercises 10%
projects 90%

For both exercises and projects, there are seven deadlines. There is also one final deadline for submitting improved versions of your projects for your portfolio.

number deadline
1 Fri 2-Nov
2 Fri 9-Nov
3 Wed 14-Nov
4 Wed 21-Nov
5 Wed 28-Nov
6 Wed 5-Dec
7 Wed 12-Dec
portfolio Mon 17-Dec

You must complete all projects before the deadline to be eligible for a satisfactory grade, unless granted an exception in writing by the course’s heads. Also, no retakes are possible for any part of the course. You may re-take the course as a whole in a later semester.

Exercises

Exercises teach you the basics of programming iOS or Android. Earlier in the course, the exercises focus on learning a new programming language and reinforcing your knowledge of object-oriented design. Later, emphasis shifts to more complex parts of the programming platform, allowing you to make more interesting applications.

You can earn points for completing exercises. You should demonstrate your finished exercises to one of the staff during office hours, on or before the deadline.

Projects

Each week, you will create an app using the concepts introduced in exercises and tutorials. Grading takes place portfolio-style. At the end of the course, you will created have seven projects and refined those during the weeks after first submitting.

To get credit for each project, demonstrate its functionality on or before that app’s deadline. You will receive immediate feedback from the staff and the app’s completion will be noted.

Final grading will take place after the final portfolio deadline. Each app will receive a grade according to the following scheme:

pts description
5 Exceptional quality in use, layout and code. Probably something extra or unexpected.
4 Solid quality in use, layout and code. Maybe some trivial errors or oversight.
3 Reasonable quality, but lots of room for improvement.
2 The app mostly works but really lacks in quality.
1 Clearly, quite a bit of effort went into it, but it does not really work.
0 Not submitted or very incomplete.

To improve and refine your apps for the final deadline, you will need even more feedback, which you will get from other students as well as the staff. It’s your responsibility to ask for this feedback during the course!

Code reviews

On two days, you’ll review your peers’ apps and have peers review your own creations. This is an excellent opportunity to get feedback on your portfolio.

Tue 20-Nov
Fri 14-Dec

Office hours

Office hours are opportunities to work on projects and exercise materials alongside the course’s teaching assistants. Times differ by platform:

weekday Android iOS
Mondays 10–13 11–15
Tuesdays (lightly staffed) 11–13 13–15
Wednesdays 10–15 10–13

Mentoring

You are expected to make an appointment with your assigned mentor on Fridays once every two weeks. Your mentor will help you get started, provide you with additional feedback for your portfolio and can answer most practical questions.

Tutoring

For students who avail themselves of the course’s other resources but still find themselves struggling, the course offers tutoring, to the extent possible, providing opportunities for students to work with the course’s staff one-on-one or in particularly small groups. To arrange, contact the course’s heads.

Books

Android

No books are required for students of the Android platform, but the following book may provide additional learning material: Bill Phillips, Chris Stewart and Kristin Marsicano, Android Programming, the Big Nerd Ranch Guide.

iOS

Students of the iOS platform need to acquire (for free) one book in particular:

The book below may provide additional learning material:

Collaboration

All work that you do toward fulfillment of this course’s expectations must be your own work. You may read and comment upon classmates’ code toward fulfillment of projects’ code reviews but only after the deadline for that project has passed and you have signed off your submission. You may integrate ideas and techniques that you glean from your reviews of classmates’ code and from classmates’ reviews of your code into your own work, so long as you attribute those ideas and techniques back to your classmates, as with comments in your own code. You may discuss projects, including designs, but you may not share code. In other words, you may communicate with those classmates in English, but you may not communicate in Swift, Java, or Objective-C and such languages. If in doubt as to the appropriateness of some discussion, contact the course’s heads.

Quoting sources

You may turn to the web for instruction beyond the course’s lectures and sections, for references, and for solutions to technical difficulties, but not for outright solutions to problems on homework or your project. However, failure to cite (as with comments) the origin of any code or technique that you do discover outside of the course’s lectures and sections (even while respecting these constraints) and then integrate into your own work may be considered academic dishonesty.

Regulations

All forms of academic dishonesty are dealt with harshly. In all cases we follow the directives regarding fraud and plagiarism of the University of Amsterdam and of the Computer Science BSc programme. Find them here in English and Dutch.

Acknowledgements

Some of the materials in this course have been based on other courses that were generously published under a creative commons license. Many thanks to:

  • Marty Stepp, CS193 at Stanford, published 2015 under a Creative Commons Attribution 2.5 license.

  • David Malan, CS164 at Harvard, published 2012 under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported license.