CS190I - Introduction to Mobile Application Development using Android

(Special Topics in Computer Science: Intelligent and Interactive Systems)

Spring 2017


This home page and the CS190I Piazza forum will be used as centers of communication for the class. Homework submission will occur through the CS190I GauchoSpace Make sure you are enrolled!

While the webpage provides you with up-to-date information about assignments and what is currently going on in class, the GauchoSpace serves as an open forum: questions, answers, suggestions, etc.


General Information


Class Hours:    TR, 12:30pm-1:45pm
Class Location: Phelps 2516
Instructor:     Tobias Höllerer
Office Hours:   Thu, 3:30pm-4:30pm, or by appointment
Office:         2155 Harold Frank Hall, (805) 284 9395
e-mail:         holl@cs...
Discussion/Lab: F, 12:00pm-12:50pm OR 1:00pm-1:50pm, Phelps 3526
TA:             Samuel Dong	
e-mail:         samuel_dong@umail...
Group Tutor:    John Alexander
e-mail: jta00@umail... Office hours: Samuel: M, noon-1:30pm (TA trailer, 934, by Phelps). John: F, 12-1pm (Phelps 3526), F 2-3pm (CSIL)

Course Description

This course provides an introduction to developing applications for the Android mobile ecosystem.

Over the past 20 years, the use of information technology has undergone a clear transition from stationary office and desktop computing to mobile computing. This development was accompanied by the emergence of networked and social computing. The Sales of smartphones and tablet computers have by far outpaced the sales of conventional desktop PCs for years now. The way the young generation today obtains computer literacy has changed: Apps and cloud computing have replaced desktop computing in many cases. Computing has shifted from office or home office work to an anywhere-and-anytime activity.

This course aims to prepare students for this extraordinary shift in commercial and societal focus. The possibilities of mobile device software development are endless. In this introductory course, we get your curiosity started and prepare you for more advanced app development.

Students will apply their gained knowledge in a series of practical assignments using the Android ecosystem that highlight selected portions of the software design cycle, as well as familiarize them with sound programming practices and effective tools and techniques to create successful applications. The course will also touch upon novel interaction concepts that go beyond what we normally see in today's mobile apps.


Course Requirements and Grading

This class teaches the theory and practice of effective software design for Android. You will learn about principles, procedures, and programming approaches. You will create, iterate, and evaluate interaction designs.

As this is only the second time this course is offered, the exact course requirements will emerge over the first week, once the instructor has been able to form an idea about students' backgrounds and expectations.

There will definitely be a series of design and implementation assignments that lead up to individual or group class projects. There _may_ be one exam (in week 8 or 9). We will continuously assign reading and tutorial material from online resources, which is supposed to help your design efforts and to stimulate class participation. Here is how your final grade will be determined:  

In case you disagree with any grade, submit your grievance in writing (email or paper) to the grader responsible, explaining and documenting your case.

Lateness Policy

All assignments are due at midnight on the scheduled due date. To make the deadlines more manageable, each student will be allowed four "late days" during the quarter for which lateness will not be penalized. Late days may be applied to all assignments, including design sketches and programming assignments, but not the final project! Your  late days may be used as you see fit -- one or multiple per assignment -- but once you used a late day it's good and gone, you cannot reapply it to another assignment. Anything turned in after 12:00:00am until midnight the next day is one day late. Every day thereafter that an assignment is late, including weekends and holidays, counts as an additional late day.

Absolutely no late work will be accepted after the deadline if you have used up all your late days. If you're not done on time you must turn in what you have to receive partial credit. There will be no exceptions from this rule. Please make sure you understand this policy.

When making use of your late days, the online submission provides the timestamp that counts. 

Academic Misconduct

We will strictly enforce UCSB's academic misconduct policies. We use electronic tools to detect plagiarism among submitted homework solutions and sources from the internet. Read these guidelines before beginning each programming assignment. Any form of  plagiarism, collusion, or cheating will result in an "F" in this course and may result in suspension from UCSB for two quarters. When in doubt about any forms of receiving help on your assignments, ask us!

Open Door Policy

I would like the course to be informative and enjoyable. Let us know what you find just, good and interesting about the course. Let us know sooner if you feel something could be improved. See us, send an e-mail, or leave us a note.


Class Materials

See the handout column in the class schedule!

Book/Materials

Other Sources

 

Class Schedule

Wk

Class
/ Dis

Date Assigned
Reading
Topics Handout HW
out
HW due
 1 C1 Tue April 4

---

Introduction, Motivation,
Class Requirements, Policies

Android: Overview, Historic Context, Discussion

S0: Java Review Student Questionnaire  
C2 Thu April 6  
Android Studio

Hello Android

Virtual Machines

H1: Android Studio (AS) Tour Chapter

S1: Slides: Android Intro

S2: Slides: Virtual Machines

HW1 Student Questionnaire
D1 Fri April 7 H1

Update Nexus Tablets

Android Studio

HW1 Q&A

H2: AS Designer Chapter
H3: Interactive UI Design in AS
H4: Programmatical UI Creation in AS
   
2 C3 Tue April 11 H2, H3, H4
(HW1)

Activities
Activity Life Cycle 

Views
Layouts

H5: Android Event Handling Chapter    
C4 Thu April 13 H5

Android Event Handling

Homework 2 


S3: Layouts (before ConstraintLayout)

S4: Activity Lifecycle

H6: Views, Layouts Chapters

   
D2 Fri April 14  

Homework 2

Multitouch
Events

CanvasView


H7: Touch and Gestures Chapter

HW 2  HW1
3 C5 Tue April 18  

StatePreferences

2D graphics

ConstraintLayout

 

S5: StatePreferences

H8: Activity State Saving

S6: 2D Graphics

S7: ConstraintLayout

   
C6 Thu April 20  

Fragments

Master / Detail View

2D Graphics (cont.)


H9: Fragments & Master/Detail Flow

S8: Slides: Fragments

H10: Intents

   
D3 Fri April 21  

Homework 3

Permission Handling


HW 3 HW 2
4 C7 Tue April 25  

Intents

Speech Processing

Media Playback


S9: Speech
S10: Mediaplayer


   
C8 Thu April 27  

HW 3 Details:
Animation
Web retrieval

S11: Internet Resource Retrieval    
D4 Fri April 28  


HW3 Q&A

Quarter Projects


   
5   Mon May 1         HW3
C9 Tue May 2  

Storage

Camera 

HW 4

S12: Storage

S13: Camera

   
C10 Thu May 4  

App Bar

Databases

Lists

CardViews and Recyclers
Adapters

S14: App Bar

S15: Databases

H11: SQLite and Tables

Android SQLite Tutorial

S16: Lists

   
D5 Fri May 5  

HW 4 Hints:

Git Integration
Skeleton Code
RecyclerView, Adapters,
Sharing Files in API 24 or higher
...

  HW4 Project Idea
6 C11 Tue May 09  


HW 4 Discussion


     
C12 Thu May 11  

HW4 Q&A

Project Discussion

 

     
D6 Fri May 12   Google Maps
API key
Location Spoofing

 

 

   
7   Mon May 15        
C13 Tue May 16  

Google Maps

Sensors

GPS Handling

S17: Maps and GPS
S18: Sensors
  HW4
C14 Thu May 18  


Services


S19: Services

S20: Geofences

   
D7 Fri May 19   More HW5 Pointers

 

 

HW5  
8
C15 Tue May 23  

Notifications

RESTful APIs

 

S21: Notifications

S22: RESTful APIs

 

   
C16 Thu May 25  


Remote Databases
(Firebase)


S23: Remote Databases    
D8 Fri May 26  

Tips & Tricks

Android SW Patterns


   
9   Mon May 29         HW5
C17 Tue May 30  

Useful Android Libraries

React.Native

Projects Discussion


S24: Libraries

S25: React Native

   
C18 Thu June 1  


TAs available for Project Feedback
(in normal classroom)


     
D9 Fri June 2  

Projects

     
10 C19 Tue June 6  


NDK and JNI

AOSP: Android Open Source

Localization


S26: Localization

S27: NDK, Getting Started
H12: Intel NDK slides

S28: AOSP


   
C18 Thu June 8  


The Future of Android


     
  Fri June 9   No Discussion      
11 Final
Slot

Mon
 
June 12 12-3pm
Project
Presentations
   
  Wed June
14
 
Project Materials Due


    Project

 

Assignments


For questions, please contact the instructor and/or TA