/afs/cs.pitt.edu/usr0/skhattab/public/html/cs1699/index_files/image001.png

CS 1699 Special Topics in Computer Science

Introduction to Android Programming (Section 1115)

Spring 2018

 

Contact Information

Instructor

 

 

Office Hours

Sherif Khattab, 6307 SENSQ

(412) 624-8438

skhattab@cs.pitt.edu

MW: 9am-1pm

M-Th: By appointment

Please book at: https://khattab.youcanbook.me/

Grader

 

 

Office Hours

Yanbing Xue, 5324 SENSQ

yanbing@cs.pitt.edu

TBD

Lectures

 

Tu 6:00-8:30 @ 5502 SENSQ

Student Feedback

Please send us your anonymous feedback

Socrative.com

Room name: KHATTAB2184

 

Course Description

 

This course covers the main components of the Android's application framework, namely activities, services, broadcast receivers, and content providers. The course starts with an overview of the Android operating system and its architecture. Other course topics include application permissions, intents, threading, user notification mechanisms, network socket programming, device sensors, and storage management. Students will design and implement a few Android applications as part of course assignments and a group project.

Prerequisites

 

CS 0445 and CS 1550

 

Recommended Books

There is no particular textbook for the course. We will have recommended reading assignments from the below books. Android Developer Guides are a very useful resource as well.

[Cornez] Trish Cornez and Richard Cornez, Android Programming Concepts (2017)

ISBN-13: 9781284070705

 

[Phillips] Bill Phillips, Android Programming: The Big Nerd Ranch Guide (3rd Ed., 2017)

ISBN-13: 978-0134706078

 

[Levin] Jonathan Levin, Android Internals::Power User's View (2015)

 

Grading Policy

 

Midterm and Final exams (35%): 25% on higher grade and 10% on lower. Make-up exams can be scheduled well in advance.

 

Assignments (30%): three two assignments worth 10% 15% each. Late submissions are allowed for up to two days with a 10% reduction per late day. This must be your own individual work. Do not look at the solution of anyone (or even part of it), and do not let anyone else look at yours (or even part of it). You should figure out the solutions by yourself --- do not ask anyone how to solve the problem, and do not seek the answer from some other source.

 

Team Project (25%): In teams of 2-3 5 students, you will develop a two-tier Android application with a front-end and a back-end.

 

Quizzes (10%): 2 quizzes during the lectures

Important Dates

 

Quiz 1

1/30 in class

Quiz 2

3/27 in class

Midterm Exam

Tuesday 2/20

Final Exam

Tuesday 4/24

 

Assignment #

Out on

Due on @11:59pm

1

F 1/19

M 2/12

2

F 2/16

Tu 2/27

M 3/12

M 3/19

M 3/26

3

optional

F 3/16

S 4/14

M 4/2

F 4/27

 

Group Project Deliverable

Due on @11:59pm

Team Setup

M 2/5

APIs and Mock-ups

M 3/12

Implementation v1.0

M 3/26 M 4/2

Implementation v2.0

M 4/16

Weekly Schedule

 

Week

Topic

Reading

Announcements

Wk 1 (1/9)

Introduction to the Android application framework

[Cornez] Ch 1 and 2

 

Wk 2 (1/16)

Activity, intents, and permissions

[Cornez] Ch 3

Assignment 1 out on 1/19

Wk 3 (1/23)

Threads

[Cornez] Ch 6

[Phillips] Ch 26

 

Wk 4 (1/30)

User Notification Mechanisms

 

Quiz 1

Wk 5 (2/6)

Broadcast Receivers

[Phillips] Ch 29

Team setup due on 2/5 @ 11:59pm

Wk 6 (2/13)

Storage Management

[Cornez] Ch 9

[Phillips] Ch 14

Assignment 1 due on 2/12 @ 11:59pm

Assignment 2 out on 2/16

Wk 7 (2/20)

Content Providers

Remote databases

Prepare for

the midterm

Midterm exam on Tu 2/20

Wk 8 (2/27)

Services

Assignment 2 Help

Assignment 2 out on 2/27

Spring Recess

Spring Recess: No classes

 

 

Wk 9 (3/13)

First Project Presentations

IPC mechanisms

 

Project mock-ups and APIs due on 3/12 @ 11:59pm

Assignment 2 due on 3/12 @ 11:59pm

Assignment 3 out on 3/16

Wk 10 (3/20)

Game development I

Content Providers and Services

[Phillips] Ch 28

Assignment 2 due on 3/19 @ 11:59pm

Assignment 3 out on 3/23

Wk 11 (3/27)

IPC mechanisms

Game development I & II

[Cornez] Ch 5

Project implementation v1.0 due on 3/26 @ 11:59pm

Assignment 2 due on 3/26 @ 11:59pm

Quiz 2

Wk 12 (4/3)

Android Concurrency

 

Assignment 3 due on 4/2 @ 11:59pm

Project implementation v1.0 due on 4/2 @ 11:59pm

Wk 13 (4/10)

Android OS Services

 

Assignment 2 due on 3/19 @ 11:59pm

Optional Assignment 3 out on 4/14

Wk 14 (4/17)

Final Project Presentations

 

Project implementation v2.0 due on 4/16 @ 11:59pm

Finals Week

Final exam on Tuesday 4/24 @ normal room and time

Prepare for

the final

Assignment 3 due on 4/27 @ 11:59pm

 

 

Students with Disabilities

 

If you have a disability for which you are or may be requesting an accommodation, you are encouraged to contact both your instructor and Disability Resources and Services (DRS), 140 William Pitt Union, (412) 648-7890, drsrecep@pitt.edu, (412) 228-5347 for P3 ASL users, as early as possible in the term. DRS will verify your disability and determine reasonable accommodations for this course.

Academic Integrity

 

Students have the responsibility to be honest and to conduct themselves in an ethical manner while pursuing academic studies. Students have the right to be treated by faculty in a fair and conscientious manner in accordance with the ethical standards generally recognized within the academic community (as well as those recognized within the profession). Should a student be accused of a breach of academic integrity or have questions regarding faculty responsibilities, procedural safeguards including provisions of due process have been designed to protect student rights. These may be found in Guidelines on Academic Integrity: Student and Faculty Obligations and Hearing Procedures.

Other books on Android

Android Development

John Horton,‎ Helder Vasconcelos,‎ Raul Portales, Android: Programming for Developers Paperback (2017)

Dawn Griffiths,‎ David Griffiths, Head First Android Development: A Brain-Friendly Guide (2nd Ed., 2017)

Prajyot Mainkar, Expert Android Programming: Master skills to build enterprise grade Android applications (2017)

Joseph Annuzzi Jr., Lauren Darcey, Shane Conder, Introduction to Android Application Development: Android Essentials (5th Ed. 2015)

Antonio Pachon Ruiz, Mastering Android Application Development (2015)

Paul Deitel, Harvey Deitel, Alexander Wald, Android 6 for Programmers: An App-Driven Approach (3rd Ed., 2015)

Joseph Annuzzi Jr.,‎ Lauren Darcey,‎ Shane Conder, Advanced Android Application Development (4th Ed., 2014)

Erik Hellman, Android Programming: Pushing the Limits (1st Ed., 2013)

James Sheusi, Android Application Development for Java Programmers (1st Ed., 2012)

 

UI

Ian G. Clifton, Android User Interface Design: Implementing Material Design for Developers (2nd Edition) (Usability) (2015)

 

Database

Adam Stroud, Android Database Best Practices (Android Deep Dive) (1st Ed., 2016)

Sunny Kumar Aditya, Android SQLite Essentials (2014)

Jason Wei, Android Database Programming (2012)

 

Design

Kyle Mew, Android Design Patterns and Best Practices (2016)

Greg Nudelman, Android Design Patterns: Interaction Design Solutions for Developers (1st Ed., 2013)

 

Optimization

Herv Guihot, Pro Android Apps Performance Optimization (1st Ed., 2012)

Doug Sillars, High Performance Android Apps: Improve Ratings with Speed, Optimizations, and Testing (1st Ed., 2015)

 

Android Security

Joshua J. Drake et. al., Android Hacker's Handbook (1st Ed., 2014)

Nikolay Elenkov, Android Security Internals: An In-Depth Guide to Android's Security Architecture (1st Ed., 2014)

Pragati Ogal Rai, Android Application Security Essentials (2013)

 

Android Games

Avisekhar Roy, The Android Game Developer's Handbook (2016)

John Horton, Learning Java by Building Android Games - Explore Java Through Mobile Game Development (2015)

John Horton, Android Game Programming by Example (2015)

James S. Cho, The Beginner's Guide to Android Game Development (2014)

 

Android Internals

G. Blake Meike, Inside the Android OS: Building, Customizing, Managing and Operating Android System Services (2018)

Roger Ye, Android System Programming: Porting, customizing, and debugging Android HAL (2017)

Karim Yaghmour, Embedded Android: Porting, Extending, and Customizing (2nd Ed., 2015)

Roger Ye , Embedded Programming with Android: Bringing Up an Android System from Scratch (Android Deep Dive) (1st Ed., 2015)

Acknowledgements

 

Most of the slides and example code of this course are based on Marty Stepp's CS 193A course at Stanford. Slides on Content Providers are based on Dr. Douglas C. Schmidt's CS 282 course at Vanderbilt University.