Android Application Development Spring 2019

Course number: 51031 Location:Young 106 Time: Wednesdays 5:30pm-8:30pm
Professor: Adam Gerber, PhD, SCJP

Email: gerber@uchicago.edu
Office: Young 106
Office Hours: Wednesdays 8:30pm to 10:30pm - directly after class
TA: John Hadidian-Baugher jhadidianbaugher@gmail.com Office hours: Thursdays from 5-7 at Gleacher cafeteria
Hadidian-Baugher bitbucket account: johnhb Gerber bitbucket account: csgerber


Course Information

Content: All the course content, including; videos, slides, projects, and labs are all located here (http://gerber.cs.uchicago.edu/android/content/)
IDE: We will be using Android Studio, which is a collaboration between JetBrains (maker of IntelliJ) and Google. Android Studio is the official IDE for Android development, and it is an outsanding, feature-rich, and extremely forgiving IDE available on all major platforms. Get keymap here (http://android.cs.uchicago.edu/content/slides/keymap_pc.pdf or http://android.cs.uchicago.edu/content/slides/keymap_mac.pdf). Git is an indispensable and integral part of any Android project, and we will be using git throughout this course. Students are required to bring their laptops to class to participate in labs; and the lecture hall will be outfitted with powerstrips for students to plug-in their laptops.

Local source-control: We will be using git throughout this course. Git is an outstanding, distributed source-control tool and fast becoming the de-facto standard in software development. Android Studio has an excellent built-in git-gui tool.

Download/install Git here (http://git-scm.com/downloads/)
Remote source-control We will be using Bitbucket. Please register click-here-to-register (https://forms.gle/DQ6pddrGKrwbJeik7)
Textbook We will be using two texts throughout this course: Learn Android Studio: Build Android Apps Quickly and Effectively, by Gerber and Craig. ISBN: 1430266015 and Android 6 for Programmers (3rd Edition) by Deitel and Deitel. ISBN: 0134289366
Slides Slides are available in powerpoint format. They are located in: content/slides/. There are directories with previous quarters' slides, so you can see what was presented in previous quarters. I don't anticipate too much change in the slides this quarter.
Labs During labs, we will use the course tools to create applications together in class and discuss architecure. The TA's are there to help you with the tools and with Android Studio. The lecture hall will be outfitted with power-strips, and you are required to bring your own laptop and follow-along during labs. Labs are not evaluated.

Projects & due dates

You will have four evaluated projects throughout this course and one Team project. The Team project will partially count towards your class participation. All projects will closely follow the learning objectives from the textbooks and lectures. For instructions for each project, see the projects subdirectory in the content directory (see link above). I encourage you to borrow code from the labs, textbook projects, or projects that you find in github or elsewhere on the Internet. If you do use others code, you must cite your source by placing the originating-URL as a comment directly above the class definition in any source files that you borrow or partially borrow. While you are free to take inspiration and solutions from others, your projects must be at least 33% original code. My or Deitel's code does not count as original code. This policy is in place to ensure fairness and academic honesty.
Project Short Description Due Date
proClassicsQuiz A simple app which teaches the principles of Activities, backstack, and navigation in Android. see schedule
proListView Progressing to ListViews which are among the most important components on mobile devices. see schedule
proWebService Most apps interact with data on a server. You will learn how to interact with web-services in this project. see schedule
Team You will work with your assigned team to create some modular functionality for the final project. This can be google speech search, or using the Yelp api, and so on. see schedule
proAndroidFinal Your individual final project. You will create your own version of the Favorite Places app. The app will include functionality from all the previous lessons. see schedule

Projects evaluation criteria


Final Project Presentation

Each finalist will have 15 minutes to present their final project. You must speak to your git repo and you may have optional slides. Address the following: Demo the app. Explain the architecture. What were the greatest challenges? What did you learn?

Team presentations

For your presentation - no more than 10mn with 5mn Q&A. See instructions on Piazza.

Exams

There will be one Three-Quarter-Term exam in this course. The exam will be multiple choice queations.

Exam Length Exam Date Grade
Three-Quarter-Term Exam 60 minutes see schedule 20% of final grade

Missed exams policy

There are no make-up exams in this class. If you miss your Three-Quarter-Term exam, the Three-Quarter-Term exam points are added to your final project weight making the final project worth 51% rather than 31% of the final grade.


Participation

Class participation is 10% of the final grade. The participation evaluation will be based on: your questions/comments during class, your posts/replies to the Piazza, your willingness to help others during lab, and your presentation of project solutions when called on to do so, and your Team projects.


Final Evaluation

The final grade is determined as follows:
Weight
proClassicsQuiz 13%
proListView 13%
proWebService 13%
proAndroidFinal 31%
Three-Quarter-Term Exam 20%
Class participation 10%

Possible Curve

Be advised that MPCS policy dictates that no more than 30% of the students in any MPCS course may receive an A. In most cases, I will curve the raw scores up to award as many A's as possible. An A is defined as 93% or higher. In rare cases, I will curve the raw scores grades down to conform to school policy. This policy is in place to protect students from grade inflation.

Evaluations are Final and Non-negotiable:

Project evaluations are final and non-negotiable. The TA for this course is experienced and fair. Please do not ask me to intervene to change your grade if you are dissatisfied with a project evaluation. The only way I would intervene is if there was a gross miscarriage of process, e.g. the TA/grader fails to evaluate any assignments at all, or moves to an isolated island with no internet connection and never comes back. If you are dissatisfied with an evaluation, you may appeal to me, describing why you feel you were not treated fairly, and I will note your dissatisfaction in the gradebook. This may mitigate in your favor when I assign final grades.

Getting Help

I will be available during office hours after class each Thursday. David has office hours on Tuesday. One of the best ways to get help is to schedule an appointment with either me or David remotely. With google hangouts, skype, or slack, we can work through any problem together as we share desktops. Please email me or come to office hours if you feel you're falling behind or need help.

Piazza

Please feel free to post to Piazza. Piazza is the best place to get help quickly. To post to Piazza, go to: piazzaHomeAndroid2019 The TA's and I will monitor Piazza as frequently as possible and often be able to answer immediately. Students are encouraged to help their peers on Piazza by contributing when it is convenient.

Course Software

Java SDK (8): http://www.oracle.com/technetwork/java/javase/downloads/index.html
Android Studio: developer.android.com/sdk/installing/studio.html
Git: http://git-scm.com/downloads/