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 10%
proClassicsQuiz
10%
proTodos 10%
proCurrency 10%
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
2nd
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