Rea - Android Course (Proposal)
Run a semester-long project in an upper-level Android development class.
This project will entail the use of many open source technologies to build an Android application (app) that interfaces via APIs with an Ushahidi (https://www.ushahidi.com/) server installed on OpenShift in order to enable a local community organization (to be determined) to track and report occurrences throughout a geographic area. Currently, we are looking at projects involving campus sustainability programs, voter registration initiatives, among other projects. Most likely this will be one large team of 10-15 students each performing various roles and contribution distinct modules to the overall Android Project.
This project will not only expose students to working with a FOSS community but also enable a local organization to experience the power that HFOSS can bring to the community.
CIS4700 Mobile Commerce Development
This is an advanced mobile programming course that focuses on advanced mobile commerce, or m-commerce, programming to include location-based services, mobile payment services and transactions, as well as designing and delivering advanced content and advertising for smartphones, tablets, and other mobile devices. Because m-commerce is constantly evolving, this course will integrate new topics as necessary as reflected in the mobile application development area.
Android App Development with Ushahidi
In addition to Android development and programming labs throughout the semester, a student team develops their own Android application throughout the course of the semester.
Student team leaders must convince others in the class to join their team according to the project being pitched to the class. Student teams then work to design, develop, present, and implement the Android application over the course of the semester.
Past student teams produced various mobile games, K-5 learning tools, bus route tracking, and customer loyalty apps.
However, this semester we will work as one team to create an HFOSS project for the community implementing an Android App via API connections to our own Ushahidi server.
Target Student Audience
This is an advanced programming and development course. Senior information systems and computer science majors take this course.
It is an elective course for majors and a required course for Business Mobile Development minors. CIS4700 requires students pass the pre-requisite course CIS2610: Business Mobile Programming.
An assortment of smaller activities will contribute to the project's overall goals.
These are in addition to labs in the course that focus on particular advanced Android programming techniques and approaches such as encryption, network management, life-cycle control, etc.
Lab assignments will relate to the overall project needs and can be shared on the Wiki as part of the overall deliverable.
All other activities listed below are planned and will have deliverables associated with them and shared via the Wiki.
Project assignments will account for 40% of the course grade with an additional 10% in exercises designed to help them master FOSS fundamentals.
- Understand FOSS communities (Update) IntroToFOSS FieldTrip: We will take time to explore all the Ushahidi offerings and compare it to other FOSS communities. Each student will write a short essay within the class project Wiki discussing how the Ushahidi offering compares to at least two other FOSS projects. Special emphasis on the project's wiki, documentation, and code repository so that students will understand how to develop and maintain usueful FOSS offerings.
- Understand FOSS development processes (New): We will mirror FOSS processes using GitHub, collaborative technologies (e.g., IRC or Slack), and agile programming. More on this in the Technology Implementation section.
- Participate in FOSS communities (New): Students will at a minimum take part in IRC or other weekly Ushahidi discussions at least twice during the semester and write about the experience in their blog (Update) Blog Activity.
- Master a FOSS development processes (New): Perhaps not completely master, but a reflective paper at the end of the semester on the project discussing what the student has learned as a result of working with FOSS communities and building an HFOSS project.
In addition to the focus on developing advanced Android programming techniques, approaches, and designs such as fragment use, communication tools, and encryption, students will need to complete assignments and exercises that allow them to experience the following:
- Basic Git Usage with GitHub (Update) Git: Git Intro Activity : Similar to the basic Git assignment but focusing more on code management. Students will be permitted to use GitHub desktop (https://desktop.github.com/).
- Advanced Version Control with GitHub (Update) Git Activity 2 Git Activity 3 Git Activity 4: In this assignment each student will create their own repository. Other students will fork this repository, make code changes, and then issue pull requests. The repository owner must then manage merges while maintaining code integrity.
- Using Git with Android Studio (New): Android Studio allows for a Git plugin for code management. Similar to the Advanced Version Control activity students will learn how to manage and maintain Android code within the Android Studio.
- Use Dia for App Architecture and Design (This will depend if students can install the software.) (New): Tentative assignment. Students usually must design interfaces as well as software processes via LucidChart (https://www.lucidchart.com/). This semester we will move the same assignment to Dia if possible.
- Install, document the process, and use Wordpress on OpenShift (New): Each student will set up their own individual blog for the class on OpenShift. A class directory will be published and shared with POSSE.
- Install, document the process, and use a Wiki on OpenShift (New): The project will require students to install, configure, and maintain a project Wiki that should mirror comprehensive FOSS wikis complete with version information, usage guides, etc. This wiki will be made available to POSSE.
- Install, document, and use an Ushahidi server on OpenShift (New): The project will require an Ushahidi server to maintain data, as well as interface with the mobile application the student team will create. Specific students will be assigned to the server group. These students will follow Ushahidi install documentation and discuss the install process on their blogs. In addition, students must create an install process and perhaps a cartridge for the specific project server installation.
- Program, document, and implement an Android Ushahidi App (New): Although no one specific assignment is part of this deliverable, all previous activities discussed above are an essential component of developing a working deployed HFOSS Android app complete with documentation. This app will have been tested and deployed (at least as a prototype) by the end of the semester.
The final project demonstrates the power of FOSS technologies, processes, and approaches to mobile software development. Students will work to provide the robust resources found with the best FOSS offerings.
- Working Android Application (New): The application will be available on the project site and may be available on Google Play.
- Project Website and Wiki (New): The website will provide potential users with an overview of the application. The wiki will provide developer documentation as well as user information.
- User Guide (New): This will occupy a separate section of the wiki hosted on OpenShift.
- Students are required to fill out a course survey at the beginning and end of the semester to note if learning occurred.
- Use CATME (http://info.catme.org/) to help students understand how well they perform on the team.
- Rubrics and associated feedback on all project assignments as well as labs.
Instructor will complete the Institutional Context Survey.
At the beginning of the project we will conduct the student survey. The following questions will be used:
- All HFOSS questions.
- All General questions.
- CS1-CS3, CS7-11
- Specific Ushahidi and Android Questions
Post questions will be asked as determined via POSSE collaboration.
- Conduct pre- and post-surveys
- Develop assignments and materials
- Run the project
- Post updates to blog
- Submit Proposal to MWAIS and AMCIS
- Finalize materials
- Post all materials to Wiki
- Create section in the Teacher's Guide at http://teachingopensource.org
- Travel to MWAIS 2016 and AMCIS 2016 and present findings
$1500: Develop Materials (Assignments, Rubrics, Videos, etc.), Run the Course, Post Updates to Blog
$1500: Finalize Materials and Post to Wiki and Teacher's Guide
- Alan Rea (<rea> at <wmich> dot <edu>)