CSCI 419

Mobile Device App Development

Coordinator: Roger Webster

Credits: 4.0

Description

This course will provide students with the skills necessary to design, develop, and deploy mobile device applications (app) technology. The intent of the course is to provide the student with a solid technical foundation for developing mobile device apps. Emphasis is placed on introducing students to the development environments, software and hardware limitations, and GUI development and event handing concepts when developing code to be executed on small hand held devices. The course will concentrate on applying the fundamental programming and development concepts in computer science to mobile device environments. This course includes a laboratory component for example using Android/Java and IOS/IPhone/iPad Apps development environments. The successful student will learn the fundamental concepts of mobile device development and learn the techniques for building mobile device apps. Students will also learn how to write networked mobile apps that interact with remote services such as GPS, Bluetooth services, wireless hubs and devices, and web based client/server data system

Prerequisites

CSCI 362

Sample Textbooks

Joe Conway and Aaron Hillegass, IOS APP PROGRAMMING: THE BIG NERD RANCH GUIDE, Big Nerd Ranch Publishers, San Francisco, California, 2013.

Ian F. Darwin, Android Cookbook Problems and Solutions for Android Developers, O'Reilly Media Publishers, Boston, Massachusetts, 2012.

Brian Fling, Mobile Design and Development Practical concepts and techniques for creating mobile sites and web apps. O'Reilly Media Boston, Massachusetts, August 2013.

Course Outcomes

 On successful completion of this course, the student should be able to:

Objective

Assessment Technique

Create mobile apps that set up basic user interfaces, such as fields, buttons, lists, tabs, and radio buttons, images and do the events handling of these GUI components.

Performance Assessment: Students will write software laboratory programming assignments.

Create mobile apps that load mobile web pages and other internet data driven content such as xml files and data base content servers.

Performance Assessment: Students will write software laboratory programming assignments.

Design and develop apps that use location-based services such as GPS and wireless location services.

Performance Assessment: Students will write software laboratory programming assignments.

Write apps that use built in persistence features and data base features to save data to the phone.

Performance Assessment: Students will write software during laboratory programming assignments.

Explain how apps use built in persistence features such as data bases to save data to the phone and other mobile data base features.

Conceptual Diagnostic Test: Examination questions designed to evaluate the student’s understanding of basic algorithms and underlying concepts.

Explain how to design and develop apps that use location-based services such as GPS, wireless location services and Bluetooth services.

Conceptual Diagnostic Test: Examination questions designed to evaluate the student’s understanding of GPS services, wireless location services and Bluetooth services.

Write mobile apps that integrate the hardware such as: camera, video, and the accelerometer.

Performance Assessment: Students will write software during laboratory programming assignments.

Write mobile apps that integrate the wireless communication services such as Bluetooth services to communicate with devices such as door locks or other external devices.

Performance Assessment: Students will write software during laboratory programming assignments.

Major Topics Covered

  1. Introduction to building interactive client/server mobile device apps
    1. Views
    2. Maps
    3. Location-based services
    4. Persistent data storage
    5. 2D and 3D graphics
    6. Media services
    7. Telephony services
    8. Messaging
  2. Environments and Platform Programming
    1. Simulation platforms for creating apps for devices
    2. Google Android Simulator and Eclipse
    3. Android Virtual Device (AVD)
    4. IOS IPhone SDK with XCode and Objective C
    5. IPhone Virtual Device
  3. Programming Techniques for Apps
    1. Creating layouts and views
    2. Creating map-based applications and using location-based services such as GPS
    3. Notifications
    4. Built in Persistence features
    5. Alarms
    6. Creating and using background services,
    7. Camera programming
    8. Sensor programming - compass and accelerometers
    9. Bluetooth apps
  4. Building an entire App
    1. Setting up basic user interfaces, with fields, buttons, lists, tabs, and radio buttons Adding option menus
    2. Supporting both portrait and landscape orientations, with custom user interfaces for each
    3. Storing data in local databases
    4. Collecting preferences from the user and applying those preferences
    5. Working with background threads
    6. Accessing Web services via HTTP client code
    7. Setting up Android components decoupled from their user interfaces ("services"), including allowing a service in one application to serve clients in other applications
    8. Putting icons in the status bar ("notifications")
    9. Integrating location tracking and Google Maps
    10. Incorporating video playback
    11. Animating the user interface
    12. Integrating with the camera and accelerometer
  5. Deployment on iTunes and Google Play Store
    1. AndroidManifest.xml
    2. Binary files - apk file
    3. Versioning
    4. Uploading to Google Play Store
    5. IOS Organizer Archives
    6. IOS Provisioning Portal
    7. Versioning the app
    8. Uploading to iTunes Apple store
  6. Multi-Disciplinary Issues
    1. Concurrent Programming
    2. Design
    3. Software engineering
    4. HCI
    5. Web programming
    6. Security
    7. Networking
  7. Additional Topics
    1. Comparison between IOS/IPhone and Android apps
    2. Custom views
    3. Custom Cells
    4. Performance analysis
    5. Internationalization

Sample Laboratory Projects