Android App Development

Title Android App Development (51031)
Quarter Spring 2016
Instructor Adam Gerber (gerber@cs.uchicago.edu)
Website

http://android.cs.uchicago.edu/

Syllabus

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, fragments, mapping/Geo-positioning, JSON, persistence, and threads, among others. For a more detailed description of the course, please see the official course website: android.cs.uchicago.edu

Course Contents

Students will be required to read the textbook, view course videos, follow along during lectures and lab in class, and do four projects outside of class. The content of the projects will mirror the content of the lectures, labs, and textbook material. 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 outstanding, feature-rich, and extremely forgiving IDE available on all major platforms.  

The following are the topics we will cover in this course:

  • 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
  • Layouts
  • Model-View-Controller in Android
  • Activity Lifecycle
  • Dubugging tools
  • Intents
  • Version compatibility
  • Fragments
  • FragmentManager
  • Layouts and Views
  • ListFragment
  • Adapters
  • Fragment arguments
  • ViewPager
  • Dialogs
  • ActionBar
  • File i/o
  • JSON
  • Context Menus
  • Contextual Action Mode
  • Styles
  • Themes

Coursework

Projects descriptions and due dates:

  1. proClassicsQuiz: due 3rd week, a simple application that tests the user on his Latin and Greek vocabulary. Uses viewPager and configuration changes
  2. proTodos: due 5th week, an app that is persisted to a sqlite database, also uses listView extensively.
  3. proCurrency: due 7th week, an app that uses concurrency and web-services
  4. proFavRestos: (final project) due 10th week, an app that integrates all that we've learned throughout the quarter. This app allows the user to find their favorite restaurants and integrates with the Yelp api.

Course grade

The final grade is determined as:

  • proClassicsQuiz 13%
  • proTodos 13%
  • proCurrency 13%
  • proFavRestos 31%
  • midterm exam 20%
  • class participation -- including team presentation 10%  

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

The midterm exam (multiple choice) is 20% of final grade, 60 minutes in duration.

Course Textbook

"Android Programming: The Big Nerd Ranch Guide" by Phillips and Hardy. ISBN: 0321804333

Prerequisites (Courses)

MPCS 51036 Java Programming or instructor's consent.

Prerequisites (Other)

MPCS 51036 Java Programming or instructor's consent.

Satisfies

Elective
Software Engineering Specialization

Time

Tuesdays 5:30 - 8:30

Location

Ryerson 277