Spring 2013 (This is an old offering. See http://bit.ly/NUMAD13F for the next offering.)
Mobile Application Development
CS 4520 / CS5520
College of Computer and Information Science
Class Location: | Shillman Hall 220 | |
Class Time: | 2:50 PM - 4:30 PM Mon/Wed | |
Credit Hours: | 4SH | |
First Class: | Mon Jan 7, 2013 | |
Last Class | Wed Apr 17, 2013 | |
Final exam | None | |
Final project due dates | 4520: April 17, 2013 by end of day 5520: April 20, 2013 by end of day Last optional regrade (4520/5520): April 25th, 2013 |
|
Instructor: | Stephen Intille, Ph.D. | |
Office: | 450 West Village H | |
Office Hrs: | Tuesdays 8:30-9:30 AM | |
Email: | ...@neu.edu | |
Message group | https://piazza.com/class#spring2013/cs4520and5520 | |
Paper archive | PDFs of some readings will be posted on Blackboard | |
TA | Mansoor Pervaiz (pervaiz.m@husky.neu.edu) | |
Tutorial or help sessions | Fri 9-11 AM (13 Snell Library) [Schedule TBD] | |
Help/hack sessions | Wed 5-7 PM (4th floor WVH)
|
Course Description:
This project-oriented course examines the principles of mobile application design and development. Students will learn application development on the Android platform. Topics will include memory management; user interface design; user interface building; input methods; data handling; network techniques and URL loading; and, finally, specifics such as GPS and motion sensing. Students are expected to design and develop a professional-quality mobile application that addresses a real-world problem in an innovative way. Coursework will include project conception, design, implementation, and pilot testing of mobile phone software applications, using health applications as the target domain.
Prerequisites:
There are no course prerequisites, but students in the course should be comfortable with Java, C#, or another modern object oriented programming language. The basics of Java, which are required for Android programming, are not taught in the course, and students who do not know Java or who cannot pick it up very quickly will have a much steeper learning curve.
Course Objectives:
By the conclusion of this course, students will be able to:
Students will have created an innovative and robust mobile
application that will be valuable addition to their programming portfolio.
Students in the graduate version of the class (CS 5520) will have also developed an application that uses mobile sensing capabilities in a sophisticated ways.
Classroom Format:
Most classes will be divided into two parts. The first part of the class will be devoted to a lecture and question and answer period and/or code walkthroughs on technical concepts. The last 20-30 minutes of class will be devoted to short presentations from students on various technical and design concepts from the optional readings that reinforce the required material or provide exposure to useful concepts, toolkits, programming tips, etc. Some classes will be devoted entirely to project idea presentations or project prototyping exercises. The instructor will assume all students have read the assigned material for each class before arriving.
Required and Optional Texts:
The required text will be:
Otherwise, we will use online resources for Android programming. In addition, we will read papers on the design of novel mobile applications that will be available online or made available via Blackboard.
Strongly recommended but not required:
Other books Prof. Intille has found helpful:
Additional Materials:
All students are required to setup a Google Play Store account for submitting assignments ($25).
All development tools required to program in Android on PCs and Macs are freely available, and many applications can be developed and tested using the emulator. The Eclipse/Android setup is available on CCIS lab computers.
A limited number of Android phones will be available during the tutorial and hack session weekly meetings. Where necessary near the end of the term, phones may be loaned to teams as needed for
testing. The large size of the class this term may prohibit loaning of phones overnight on a regular basis. When phones are loaned out, students are responsible for taking excellent care of the devices and
returning them. Failure to return a phone will result in a
grade not being assigned.
Students will find it helpful to identify friends who have Android phones upon which apps can be occasionally tested, especially in the latter part of the term.
Hackfests/help sessions:
We will host two "Android hackfests" each week when the teaching assistant will be available to try and help with your questions, and when students can work together in the same place and time so as to facilitate group learning. Some sessions will have a "tutorial' flavor. Others will simply be open times for asking questions -- a friendly environment where students can help students as they learn.
The Piazza web site should also be used to post technical questions, and students are expected to help other students when possible.
Course Schedule/Outline:
Course requirements include (1) readings for class preparation and class participation, (2) individual and team design assignments, (3) individual and team programming assignments, (4) in-class presentations of either a programming concept or a research or design paper, (5) the final programming project, and (6) preliminary and final presentations on projects.
This will be an
intensive course that will require significant reading each week, design exercises, and programming. Students
should be prepared to fully immerse themselves in Android programming and
mobile app design and development for the semester. Students who are not comfortable in Java will most likely need to spend additional time becoming comfortable with Java syntax and libraries.
This class is being improved each time it is offered based on student feedback, and therefore some of the
details in the schedule below, are subject to change as the semester goes forward.
Date | Class topic |
Reading Due (Beginning of class) |
Scheduled Presentations (Not finalized) (And recommended reading) |
Assignments Due |
Part 1: Ramping up |
||||
Mon Jan 7 |
Introduction to the course; Hello Mobile World; Q&A |
None |
||
Wed Jan 9 |
Project topic review; Android Activity Basics |
ADG: (Android Application Fundamentals) |
Tapworthy Chapter 1 |
Email with presentation preference list sent to Mansoor and intro survey sent to Prof. Intille |
Mon Jan 14 |
Development and debugging tools; The Play Store (App Market) |
ADG: Get Started, Style, Patterns, Building Blocks (including Application Structure) |
|
|
Tue Jan 15 at 9PM |
(Individual) Assignment 1: Hello Mobile Application Development (HelloMAD) on Marketplace and GIT | |||
Part 2: Basic GUI and design |
||||
Wed Jan 16 |
Q&A from Assignment #1; Mobile design guidelines; Addictive games; Paper prototyping |
Why Angry Birds is so successful and popular: a cognitive teardown of the user experience |
|
|
Sun Jan 20 by 9 PM | ||||
Mon Jan 21 |
MLK holiday (make-up class for Jan 16 class - audio) | |||
Wed Jan 23 | Q&A from Assignment #2; More Android Project Basics; Beginning Widgets | Hello Ch. 3 & 5
|
|
(Individual) Assignment 2: Addictive game and project idea mash up |
Mon Jan 28 |
1-Minute Madness |
FIRST Else smartphone hands-on demo from Mobile World Congress 2010 (short video) |
|
(Individual) Assignment 3 (Part 1): One-minute MADness presentation (Due noon, before class) |
Wed Jan 30 |
2D graphics |
Hello Ch. 4 |
|
|
Sun Feb 3 by 9PM | (Individual) Assignment 3 (Part 2): Project idea storyboarding |
|||
Mon Feb 4 |
Q&A for Assignment #3; Saving data and state
|
Hello Ch. 6 |
|
|
Wed Feb 6 | Testing; Custom views; Themes; Fragments | ADG: Custom Components
|
|
(Individual) Assignment 4: Boggle! (modified Sudoku from text) |
Mon Feb 11 |
In-class project idea critique session |
|
(Individual) Assignment 5: Final Project Preliminary Paper Prototype Design | |
Part 3: Making apps more sophisticated and robust |
||||
Wed Feb 13 |
Pair programming; Threading, services, and AsyncTask
|
Williams, Integrating pair programming into a software development process Introduction to Pair Programming ADG: Services |
|
|
Mon Feb 18 | No Class - Presidents Day Holiday | |||
Wed Feb 20 |
Broadcast receivers and sensors; Wake locks |
ADG: BroadcastReceivers Debugging Arts of the Ninja Masters
|
|
|
Mon Feb 25 | Grabbing data from the web | Hello Ch. 7
|
|
|
Wed Feb 27 | Sensor data: motion, position, and environment | ADG: Sensors Overview TBD (Papers on motion data processing; Wocket API) |
|
|
Sun Mar 3 (9PM) | ||||
Mon Mar 4 | Spring break - no class | |||
Wed Mar 6 | Spring break - no class | |||
Part 4: Designing and programming an innovative mobile app |
||||
Mon Mar 11 |
Sensor data: audio and speech |
ADG: Audio Capture
|
|
(Individual) Assignment 7: Two-Player Boggle |
Wed Mar 13 | 2-minute madness (2 minute presentations of project plans by teams) | |||
Mon Mar 18 |
Sensor data: location and maps |
Hello Ch. 8
|
|
|
Wed Mar 20 |
SQLite; Remote sync |
Hello Ch. 9
|
|
|
Mon Mar 25 |
3D graphics |
Hello Ch. 10 |
s |
|
Part 5: Final development of final project |
||||
Wed Mar 27 |
Useful tools #1 (TTS, telephony, SMS, multi-touch, livewallpaper, widgets)
|
ASP: Using Speech Recognition and Text-To-Speech APIs (Ch. 16) |
|
|
Sat Mar 30 | (Team) Assignment 9: Trickiest Parts of Project and Half-way Done | |||
Mon Apr 1 |
Optimization and debugging tips |
ADG: Designing for Performance |
|
|
Wed Apr 3 |
Wireless: Cellular, Bluetooth, WIFI, NFC |
ADG: Bluetooth |
|
|
Mon Apr 8 |
Future mobile interfaces discussion |
Hinckley and Song, Sensor Synaesthesia |
|
|
Wed Apr 10 |
Making a living – Licensing and Billing; Internationalization | Hello Ch. 13 Optimizing Apps for Android 3.0 Has Apple Just Screwed the Business Model for Selling Software (including comments) and GDC 2010: Ngmoco's Neil Young on how freemium will change the App Store world |
|
|
Mon Apr 15 |
No class - Patriot's Holiday |
None |
None |
|
Wed Apr 17 | Final project presentations #2 | None | Try out other team apps | Presentations due |
Sat Apr 20 (EOD) |
|
|||
Sun Apr 21 (morning) |
Optional final presentation day |
|
Try out other team apps |
Course subject content is
tentative and may change during the semester until the date of assignment.
Schedule after the last class:
Grading Procedures and Criteria:
Prior experience suggests that work in this course will generally fall into one of four categories:
Expectations of quality work showing mastery of course material will increase with every assignment, culminating very high expectations for the final project.
Please read the late policy information below carefully.
Class presentations
Every student will have multiple opportunities to hone presentation skills in this class, because they are critical to future career success. Students will make four presentations: (1) a 6 minute individual presentation on a mobile app development concept, (2) a 1 minute presentation on a preliminary app project idea, (3) a 2 minute presentation on a final project idea (possibly with tea partner), and (4) a final 6 minute presentation on the final project implementation.
Students will be provided with a template for the presentations and will be
expected to use a modified Petcha Kucha format for each (20s per slide, with an auto-advancing presentation). This format requires practice in advance! Presentations will
be graded on adherence to the format and overall presentation clarity and
evidence of practice, as well as demonstration by the students of a thorough
understanding of the topics being discussed.
In each student's 6 minute individual presentation, the goal is for the student to teach the class an important idea/concept in as much depth as possible in a limited time (18 slides at 20s per slide). All students will develop a presentation from this Powerpoint template.
Presentations on project status and the final projects will also use a similar format (although most will be much shorter).
Code review
In some classes, code from assignments may be randomly selected. In this case, the student(s) who wrote the code may be asked in class (without prior notice) to step through it, explaining key design
decisions. Other students may be asked to critique the code. All code must be up-to-date using BitBucket and Git.
Design assignments
The best way to reduce programming time is to spend time on effective design early in the development process. Therefore, in this class, design and rapid prototyping will be emphasized throughout. Design assignments will get students thinking carefully about design, leading towards a final project, and will ensure that students are working to help each other, across teams, to develop the most innovative mobile apps possible. In the past, some students have struggled with this aspect of the course and students should be prepared to get honest feedback on designs, generate many ideas, and spend time testing concepts before they start programming them. An investment in coming up with a good design pays off as the final project is developed.
Programming lead-up assignments
A set of programming assignments will help individuals and then teams incrementally converge on an innovative final project. The assignments will get increasingly challenging, as individuals first make simple modifications to an existing Sudoku game and transform it into a completely different type of addictive game. Then teams will work on developing a a final project with a health purpose. (It is anticipated that most final projects will look nothing like Sudoku or Boggle!)
All assignments will be “submitted” via uploading apps to the app store and via committing code using GIT and BitBucket. For grading, the apps will be updated and run on an actual mobile phone (unspecified model). Emphasis will be on usability design, creativity of the design, professionalism of the application, and technical robustness. For the most part, the structure of the code behind the applications will not be reviewed during the grading process unless a problem is identified, but the latest code must always be online for review.
Final project design and implementation
Although there are design and programming projects along the way, they are all designed to support the development of an outstanding final project. Students will design and implement a fully-functional mobile phone application for Android mobile phones that must be sufficiently robust so that it can be deployed with actual users. Students will work in two-person teams (recommended) or individually. Teams are expected to produce a polished and professional-looking mobile phone application that works robustly on a variety of phone models, meets the user interface design standards discussed in the course, and shows a substantial amount of design creativity. The goal is not to produce yet another app that does the same thing as other apps on the app store, but to design an app that truly stands out from the crowd. Students should aim for focused apps that are addictive/fun/engaging but with a serious purpose that creatively exploit some of the unique capabilities of mobile interaction and mobile devices. The apps must address one of the key project topics presented in class. The app should be extremely easy and pleasing to use. To achieve these goals will require many rounds of design iteration and careful application of the design concepts discussed in class.
To ensure that students can benefit from the collective experience of one another, and to focus the course to maximize the likelihood that students will develop novel application ideas, the course assignments and project will focus on the area of apps for health.
Final projects must address one of the topics discussed in the first class:
Android phones will be available for development and testing as needed at the tutorial/hack sessions and on a limited basis at other times. Teams interested in using other wireless sensors (e.g., Wockets motion sensors) will be provided with those as well.
At the end of the term students will present their project in class. Students will be provided with a template for the presentations, using a modified Pecha Kucha format (16-20 slides, 20 seconds each, on auto advance). Presentations will be graded on adherence to the format and overall presentation clarity on the final project, and evidence that the presentation was practiced.
Teams / Pair programming:
Students are strongly encouraged to form teams of two.
Students will be able to self-select teams and we will have a class exercise that should help students find others interest in similar project topics. Students may elect to work individually, but this
may make the course more challenging. Mobile phone programming can be tricky and frustrating at times, and working in pairs can not only improve efficiency but also enhance creativity of the final app. If students wish to have a partner but cannot identify one, the instructor will help with pairing to the extent possible, but students who cannot find a partner may be forced to work alone.
Pair programming has been shown to have a number of benefits including increased personal satisfaction and fewer errors. When students work in pairs, both must work together on a single computer, and both must write approximately half of the code. Very little code should be written without the other partner present and watching.
Teams are expected to apply software best practices such as tracking tasks and using software configuration management, and select appropriate supporting tools.
App Competition:
At the end of the class, students in the class and a small panel of
distinguished judges from academia and industry will try out the
applications and vote for the top apps based on creativity, robustness,
usability, and usefulness. The winning team will receive a small prize (and
bragging rights!). Last year the prizes were Nooks for each team member. The prize this semester has not yet been determined.
Classroom Policies:
Students are expected to demonstrate qualities of academic integrity: a commitment, even in the face of adversity, to five fundamental values: honesty, trust, fairness, respect and responsibility.
Actively engaging in verbal exchanges of ideas and concepts will be a component of learning in this course. This will be stimulated by readings, class discussions and case problem solving. Therefore everyone will be expected to actively and positively listen to others and to communicate their ideas during class. Some students are less comfortable speaking in class than others, but open discussion of ideas and even disagreement is essential. Therefore, all students are expected to read course materials prior to class and may be called upon at times even if they do not raise their hands. Participation does not result from talking a lot, but as a result of critical thinking and articulation of ideas.
University policy dictates that students must seek the instructor’s permission to tape record class lectures. I will always allow the use of tape recorders to support your learning.
To facilitate discussion and learning, electronic devices, including laptops and phones, must be turned off in class unless otherwise specified by the instructor. Slides shown in class will be available on the course web site 1-2 days after each class.
Please do not eat during the class unless you plan to provide food for everyone.
Writing/Presentation Policies:
Assignments that involve writing and presentation will be judged on clarity of presentation as well as content. Students who are having difficulty with writing will be referred to the Northeastern University Writing Center.
Late Policy:
Unexcused late assignments will automatically be lowered by one letter grade. Assignments will not be accepted more than one week late. Because the team project activities each week build on the prior weeks’ results, teams are strongly encouraged to turn in their work on time in whatever state it is in.
In extenuating circumstances, well prior to an assignment due date, a student may request an extension with a reasonable explanation. It is the discretion of the instructor to permit late assignments and this is rare, because all students have two assignment "Redo and Regrade" passes.
Redo and Regrade Passes (R&R passes): Getting behind in this course creates serious problems as students go forward, because early foundational work is necessary to successfully complete a high-quality, professional final project. Therefore, assignment deadlines will be strictly enforced, following the late policy above. However, each student will be allowed two "Redo and Regrade" (R&R) passes for any assignment other than the final project and the in-class individual presentation. When a student elects to use an R&R pass, he or she will be allowed to redo the assignment and turn it in again, and the student will be assigned a new grade based on the new assignment turned in. Please note that our standards will be slightly higher for any R&R assignment, and grades are not guaranteed to go up -- students will receive the new grade for the assignment, regardless of whether the grade is higher or lower than the original grade. (In other words, students should not risk using an R&R pass trying to turn a B into a B+ or A- into A, but rather students should use it when they were unable to complete an assignment on time or are confident that they have made improvements to bump up a grade considerably, even with slightly higher standards) Students must notify the instructor and the TA that they will use an R&R pass for an assignment within one week of receiving their first grade on the assignment, and the revised assignment must be turned in no later than one week after that. Please note that in a team assignment, if only one student uses a "Redo and Regrade" on the assignment, only that student gets the new grade. The other team member keeps the original grade unless an R&R pass is used, and the decision to use the pass must be made before a revised grade is assigned. REVISED POLICY FOR ASSIGNMENT 9: Anyone wishing to use an R&R pass on assignment 9 must indicate they will do so on the due date of the assignment and will then have up to one week to turn the assignment in without a late penalty.
Academic Honesty:
All students are expected and encouraged to discuss the topics raised by this course with each other. Ideas or content (including graphical content) incorporated from an outside source or another student must be documented appropriately in the app submissions, write-ups, and presentations. Students must abide by the NU Code of Student Conduct and Academic Integrity Policy. Acts of academic dishonesty will be referred to the Office of Student Conduct and Conflict Resolution.
Students are encouraged to help each other with programming assignments, but copying of blocks of code from another student or team is not acceptable. Students must be prepared and capable to explain the work they have done. Similarly, students working in teams are expected to jointly work on the code they develop and BOTH students should have a thorough understanding of all of the code.
Academic honesty is fundamental to the learning process. As a reminder,
Any student found cheating on an assignment or with code that raises concerns about potential cheating will receive a zero on that assignment. It is not possible to use an R&R pass in this case. A second offense will result in a failing grade for the course and reporting the student(s) to the CCIS administration.
Students with questions about what is acceptable or unacceptable collaboration on assignments should ask the instructor.Accommodation:
Students who have a disability are encouraged to seek accommodations though the University Disability Resource Center. Please speak privately with me about your needs for accommodations and strategies to support your success. This information will be kept confidential.
Trace:
The instructor will distribute optional mid-term and final course evaluations, to be returned anonymously. Responses to the questions help to improve this course during the current semester and for future students. Significant modifications to the design of this course have been made based on prior surveys returned.
All students are also strongly encouraged to use the TRACE (Teacher Rating and Course
Evaluation) system near the end of the course to evaluate this course. A reminder about TRACE should arrive via email about two weeks before the end of the course.