If you are a teacher or interested in the design of the course, see the meta document.
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.
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.
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:
All assignments are listed within the Course Outline.
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
For exercises with multiple Versions (
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.
Bonus points for:
BONUSin the README of the exercise.
The final grade for the course is based on 6 grades as follows:
90% of your grade consists of the following:
10% of your grade is attendance/participation
This class assumes you are confident with this material, but in case you need a brush-up…
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.
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.