Fork me on GitHub

Mobile Application Development syllabus

If you are a teacher or interested in the design of the course, see the meta document.

  • Course: CSCI-490-MobileAppDevelopment
  • Instructor: Keith Briggs
  • Need help?
    • Piazza
      • This is a question/answer forum for students to interact with one another. I encourage students to interact with one another as a resource as well as provide instructor answers.
    • Office Hours: Tue & Thur- 4:30 to 5:30, Wed- 5:00 to 6:30
    • Email for 1-on-1 help, or to set up a time to meet
  • Syllabus as PDF

Course Description

This hands-on, project-oriented course explores the principles and tools involved in the design and construction of applications for mobile devices. Although the course focuses on the Android platform, the basic concepts and experiences extend to other mobile devices. Topics include an overview of mobile application development, the Android application architecture, mobile application lifecycle, managing application resources, designing user interfaces, data storage options, integrating audio and video, location-based services, cross-platform development using a mobile device emulator, and porting applications to actual devices. In addition to several smaller programming assignments to provide experience and reinforce concepts, students will work in teams on a substantial programming project to design, develop, and deploy a mobile application. Computers are provided in the lab, though you are encouraged to bring a laptop for in-class exercises.

Prerequisites

  • CSCI 230-Data Structures and Alghorithms or equivalent (CSCI 221 for non-majors)
  • Understanding of Java programming language, data types, control flow, and basic method usage in Java
  • Working knowledge of an IDE such as Eclipse or IntelliJ (IntelliJ preferred)
  • Working knowledge of Git and Github

These won’t be enforced by the instructor, but you will be pretty lost without understanding those concepts. If you need a refresher, take a look at the Beginner Materials.

Course Overview

We will dive into the nuances of Android mobile device programming to teach how to write and understand Mobile Application Development relating those applications to the Model View Controller design pattern. Modern tools such as Android Studio, Git, GitHub, and the Debugger will be heavily used. Piazza will be used so that students and instructor may have a collaborative Question and Answer environment. I expect maximum participation with students answering other students’ questions if they know the answer. All projects will be administered through GitHub, where students are expected to initiate the assignment and complete under Version Control (accomplished with Git and pushed to GitHub). Completing the assignment as assigned will not be enough for an A+. Students must add at least one “WOW” feature to the project and must be successfully demo’d to the Instructor. Topics covered include:

  • The Activity Lifecycle
  • Debugging Android Applications
  • Creating User Interfaces with Layouts and Widgets
  • UI Fragments and Fragment Managers
  • The Tool Bar
  • SQLite Databases
  • Explicit and Implicit Intents
  • Bluetooth
  • and More…

Homework/Projects

All assignments are listed within the Course Outline.

Workflow

  1. Click on the appropiate project link in the Course Outlline. This will take you to the project in CSCI-490-MobileAppDevelopment GitHub Organization account.
  2. Create your Android project with the same name as our GitHub Organization project name with ‘-yourLastName’ appended to the name.
  3. In Android Studio, share the project with GitHub.
  4. Read the instructions provided by the README file.
  5. Modify the files to complete your assignment.
  6. Test your solution with both an Android Virtual Device and a real phone.
  7. Create and include a screenshots of your application in action.
  8. Create a README file to communicate anything you need to me.
  9. Make sure all of your code is committed.
  10. Push/sync up to GitHub.
  11. The day the assignment is due, I would like a quick demo from a real device.

All assignments are due at the start of class on the specified date.

  • You can continue to push fixes and improvements until the date (with no penalty) or for one week after (with letter grade penalty) – just add a comment in the pull request to let me know it’s been updated.

  • I will leave appropriate feedback as an Issue inside of your repository.

  • Edit the README file in your repository to relay any feedback or instructions about your submission

Versions

For exercises with multiple Versions (V1, V2, etc.) listed in the README: these are intended as guidelines for how to complete the assignments in the smallest/simplest possible increments. You are expected to reach the highest Version for each assignment by the due date. See also: extra credit.

Requirements

  • All applications must build, install, and run properly on a real Android phone (of the student’s choosing).
  • Assignments must be completed by the due date. Late assignments will only be accepted one week late and will be marked down a whole letter grade.

Extra Credit

Bonus points for:

  • Automated tests
  • Creativity (as long as requirements are fulfilled)
  • Anything listed under BONUS in the README of the exercise.
  • Something that WOW’s me.
  • Look through and create issues

Grading

The final grade for the course is based on 6 grades as follows:

90% of your grade consists of the following:

  • Two assigned in-class tests. Each test counts as a separate grade.
  • Daily quizzes and minor assignments – collectively count as 1 grade. (No make-ups will be given, but lowest two quiz grades will be dropped.)
  • Programming assignments – collectively count as 2 grades.
  • Course project – counts as 2 grades.
  • Lowest grade from above 7 grades will be dropped. If the lowest grade corresponds to the course project or the collective grade for the programming assignments, only one of the associated grades will be dropped.

10% of your grade is attendance/participation

Course Schedule (tenative)

Topics Covered:

  • Jan. 12 Introductions, Syllabus overview, Course expectations, Overview of Android Application Development
  • Jan. 17 Semester tools, Git, GitHub, Piazza, Android Studio
  • Jan. 19 Architecture, Activities and Lifecycle
  • Jan. 24/26 Intent Objects, Managing Resources, Events, Saving Activity State, User Interface Basics
  • Jan. 31/2 User Interface Basics, Debugging Android Applications, Positioning with Layouts
  • Feb. 7/9 Positioning with Layouts and Fragments
  • Feb. 14 Positioning with Fragments, Semester group project introduction
  • Feb. 16 Test #1
  • Feb. 21/23 Threads, Network Applications
  • Feb. 28/2 Threads, Network Applications Continued
  • Mar. 7/9 Spring Break (no class)
  • Mar. 14/16 Data Storage (Preferences, File System)
  • Mar. 21/23 Data Storage Continued (SQLite, NOSQL)
  • Mar. 28/30 Data Storage Continued (ORM, Content Providers, ListView)
  • Apr. 4 Location-Based Applications
  • Apr. 6 Test #2
  • Apr. 11/13 Bluetooth, Animation; Multimedia
  • Apr. 18/20 Selected Topics
  • Apr. 25 Project Demonstrations

Resources

Required Reading

This class assumes you are confident with this material, but in case you need a brush-up…

Tools

GitHub

Reference

Statements on Plagiarism

SCPS

The College of Charleston takes plagiarism very seriously and regards it as a form of fraud. The definition of plagiarism that has been adopted by the School of Continuing and Professional Studies is as follows: “Plagiarism is presenting someone else’s work as though it were one’s own. More specifically, plagiarism is to present as one’s own words quoted without quotation marks from another writer; a paraphrased passage from another writer’s work; or facts or ideas gathered, organized, and reported by someone else, orally and/or in writing. Since plagiarism is a matter of fact, not of the student’s intention, it is crucial that acknowledgement of the sources be accurate and complete. Even where there is not a conscious intention to deceive, the failure to make appropriate acknowledgement constitutes plagiarism. Penalties for plagiarism range from failure for a paper or course to dismissal from the University.

Instructor

Reuse and building upon ideas or code are major parts of modern software development. As a professional programmer you will never write anything from scratch. This class is structured such that all solutions are public. You are encouraged to learn from the work of your peers. I won’t hunt down people who are simply copying-and-pasting solutions, because without challenging themselves, they are simply wasting their time and money taking this class.

Please respect the terms of use and/or license of any code you find, and if you reimplement or duplicate an algorithm or code from elsewhere, credit the original source with an inline comment.

Pairing Tips

  • Groups of two, unless there is an odd number of students
  • Agree on an editor and environment that you’re both comfortable with
  • Use Github for collaboration, branch/merge model is recommended
  • Meet regularly. Use Google Hangouts when you cannot meet in person (Hint: Sharing your screen is very useful)