Android Application Development
Spring 2014

Course number:
51031
Location: 
TBD
Time:
TBD 5:30pm-8:30 pm

Professor: Adam Gerber, PhD, SCJP
Office:
Computer Lab 4th Floor Ryerson -- CS Faculty Offices
Email:
gerber@cs.uchicago.edu
Office Hours:
TBD

TA: David Selvaraj
Email: david.m.selvaraj@gmail.com
Office: Computer Lab 4th Floor Ryerson
Office Hours: TBD
Content: All the course content, including; videos, slides, projects, and labs are all located here: http://android.cs.uchicago.edu/content/



Course description: After a quick introduction to mobile computing, competing platforms, Android architecture, market projections, and social and economic implications, we will dive directly into developing Android apps. Alternating between theory and practice, and progressing cumulatively, will will cover many of the features of the Android platform, including; activities, intents, mapping/Geo-positioning, JSON, persistence, and threads, among others. Class time will be split between lecture and lab. Prerequisite for this course is: Java Programming 51036, or consent of intructor.


Tools: I'm very pleased that we will be using Android Studio, which is a collaboration between JetBrains (maker of IntelliJ) and Google. Android Studio will soon be the official IDE for Android development, and it is an oustanding, feature-rich, and extremely forgiving IDE available on all major platforms. Get keymap here (http://android.cs.uchicago.edu/content/slides/keymap.pdf). Git is an indispensible and integral part of any Android project, and we will be using git throughout this course.  UChicago subscribes to Lynda.com which has a good video tutorial on git. I've made arrangements for students to be given access (for the first 3 weeks of class) to this video tutorial. 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.

Textbook: We will be using "Android Programming: The Big Nerd Ranch Guide" by Phillips and Hardy. ISBN: 0321804333

Videos: I have compiled a series of videos in webm format that are organized by lecture. Watching these videos outside of class is required. See videos subdirectory in content directory (see link above). 

Slides: Slides are available in powerpoint, jpg, and png formats in the slides subdirectory of the content directory (see link above). Furthermore, many of these slides are html-linked and context-embedded inside the labs for this course. In practice, this means that conceptual and architectural diagrams are closely coupled to the code to which they refer, which should facilitate your learning.

Labs: Instructions on how to clone the labs is located in the setup directory of the content directory (see link above). 

Projects: Instructions on how to clone projects is located in the setup directory of the content directory (see link above). You will have four evaluated projects throughout this course and they will closely follow the learning objectives from the textbook and lectures. For wireframes and instructions for each project, see the projects subdirectory in the content directory (see link above). 

Evaluations: The final grade is determined as:
proCapitalQuiz 1
0%
proClassicsQuiz 1
0%
proTodos 1
0%
proCurrency 1
0%
proFavRestos 30%
midterm exam
20% (August 8th)
class participation -- including team presentation 10% 

Projects due dates:
proCapitalQuiz
: due July 14th 11:59pm
proClassicsQuiz
: due July 31st 11:59pm
proTodos: due Aug
14th 11:59pm
proCurrency: due August 21st 11:59pm

proFavRestos
: (final project) due August 28th 11:59pm

Projects evaluation criteria:
40% does the software work according to the specification—or as expected
20% performance and exceptions; are your algorithms elegant/efficient with respect to threads and resources, or clumsy/wasteful. Does the software handle exceptions.
20% code style; naming variables, formatting, ease of reading, well-documented.
20% UI style; is the UI well designed and intuitive

Final Project Presentation: Each student 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 15mn with 5mn Q&A. Elect a captain who will inititalize the git repo (called temYelp, or temMaps, or temGallery) and be the git admin. Report to your captain with your bitbucket account name. The captain will create a public repo on bitbucket and give his/her team-mates WRITE access.

You will also be presenting your git project (and corresponding compilable Android project) to class on August 15th. You have 15mn MAX to present with 5mn Q&A. You may use power-point slides or other visual aids - which should be included at the head of the git project. I encourage you to use branches to demonstrate variations for possible solutions.

You may have to deal with merge conflicts and resolve them. See video on resolving merge conflicts using SourceTree & Android Studio here: /content/videos/merge.webm

Team1: temYelp : Using WebView to scrape a restaurant Yelp page for data such as street address and phone number. Using a developer's key and the official Yelp API to do the same.


Team2: temMaps : Lanuching Google maps and navigation from within your app using either latitude/longitude, or street address.


Team3:
temGallery : Using camera to take pics, then storing images in an sqlite db as BLOBs, and creating a scrollable gallery of those images.

Criteria for evaluation of team presentation: 34% Is the source code well organized, and demonstrating variations. 33% Is the content fresh, rich, and well-organized. 33% Is the content presented well and with style. 

Submitting projects: So long as you filled-out the online registration form properly on the first day, set up your private bitbucket account (also on first day),  kept your projects on bitbucket, named your projects exactly as they appear above (e.g. proCapitalQuiz), and given me and David access to your private repos, there is nothing further you need to do to submit. A chron script will be triggered at 11:59pm on the due date which will fetch your project from your private remote bitbucket repository.  Your projects will be graded according to the state your project was in when the chron script ran. No exceptions.

Getting Help: I will be available both by appointment and at office hours, before class each Thursday. The pace of this course is rapid, so please come to office hours if you feel you're falling behind or need help. I have office hours this Summer quarter from 3:30pm-5:30pm TBD. Also, please feel free to post to piazza. David 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.

Required Software:
Java SDK (6 or 7): www.oracle.com/technetwork/java/javase/downloads/index.html
Android Studio: developer.android.com/sdk/installing/studio.html
Git: git-scm.com


Important Links:
Android Developer's Guide : developer.android.com/guide/index.html
Stack Overflow: stackoverflow.com/questions/tagged/android
Asset Studio: android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html
Android Views: www.androidviews.net


Lectures and Labs


Week 1 – week of March 31

don't forget your laptop!
Setting up your development environment
Java SDK
Android Studio installation and tour
Git and SourceTree
Setitng up Bitbucket and projects
Cloning labs
Course registration
The Android Computing Platform and Architecture
Understanding Android Resources
Required readings: none



Week 2 - week of April 7
 
More resources
Layouts
Model-View-Controller in Android
Activity Lifecycle

Required readings: ch 1-3 from Big Nerd
Tutorial on Git: Lynda.com through UChicago access
Videos: http://android.cs.uchicago.edu/content/videos/basic-git-commands.webm
geoQuizz01, geoQuizz02, geoQuizz03 (from the videos
dir)


Week 3 - week of April 14
 
Dubugging tools
Intents
Version compatibility

Required readings: ch 4-6 from Big Nerd
Videos: geoQuizz05, geoQuizz06, merge, basic-branching (from the videos dir)


Week 4 - week of April 21

Fragments
FragmentManager
Layouts and Views
ListFragment
Adapters

Required readings: ch 7-9 from Big Nerd and watch corresponding videos


Week 5 - week of April 28
Fragment arguments
ViewPager
Dialogs

Required readings: ch 10-12 from Big Nerd and watch corresponding videos


Week 6 - week of May 5
 
ActionBar
File i/o
JSON
Context Menus
Contextual Action Mode

Required readings: ch 16-19 from Big Nerd and watch corresponding videos


Week 7 - week of May 12
 
Midterm exam (multiple choice) 15% of grade, 50 minutes in duration
Build proCurrency in class.
Camera
SurfaceViews
Taking images and displaying stored images
Implicit Intents
Master-Detail interface

Required readings: ch 20-22 from Big Nerd and watch corresponding videos


Week 8 - week of May 19
 
Styles
Includes
Themes
9-Patch
2
nd half of class: Team presentations

Required readings: ch 24-25 from Big Nerd


Week 9 - week of May 26

Review

Second half of class, we move to lab - 4th floor Lab (403) for collaboration and help on final projects

Required readings: none.



Week 10 - week of June 2 -- meet in lab 4th floor Lab (403)

Final project presentations

Required readings: none