Android App Development

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

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

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:

    proClassicsQuiz: due 3rd week, a simple application that tests the user on his Latin and Greek vocabulary. Uses viewPager and configuration changes

    proTodos: due 5th week, an app that is persisted to a sqlite database, also uses listView extensively.

    proCurrency: due 7th week, an app that uses concurrency and web-services

    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)

Core Programming, some knowledge of Java preferred.

Prerequisites (Other)

Satisfies

Elective
Software Engineering Specialization
Mobile Computing Specialization

Time

Wednesday 5:30-8:30PM

Location

Y 106