The course will consist of several mini projects in the first half of the semester, followed by a larger independent course project during the remainder of the semester. The information provided on this page is subject to change.

Mini Projects

All projects are to be developed using the Google Flutter development environment. During the first half of the semester the goal of the projects is to help you familiarize yourself with the Flutter environment and develop a basic mobile cloud-based app.

  • Mini Project #1: My First Flutter App: The goal of the first mini project is to familiarize yourself with the Flutter development environment, set up your computer for Flutter coding, and compile and test your first simple Flutter app (with the help of online resources): Deliverable: Submit a brief video (< 30 seconds) of your app in action (emulator or device) via Sakai. Also submit a brief document (max. 1 page, pdf), stating your name, people you worked with (and how), and describe any aspects of this project that caused you unusual difficulties (if appropriate); also describe if the project is incomplete or faulty (provide specifics about why you weren’t able to complete the assignment).

  • Mini Project #2: Maps, Locations, Navigation: The goal of the second mini project is to extend the first mini project with the following new features:
    • The ability to show a map in a new view.
    • The ability to show your location on that map view.
    • The ability to navigate back and forth between your views.
    • Optional: The ability to show items of interest on your map.
    To achieve these goals, I recommend following the tutorial available here. Navigation between views is described here. There are different ways you can obtain your current location (for displaying on the map); the tutorial here uses the "geolocator" package.
    Deliverable: Submit a brief video (< 60 seconds) of your app in action (emulator or device) via Sakai. Also submit a brief document (max. 1 page, pdf), stating your name, people you worked with (and how), and describe any aspects of this project that caused you unusual difficulties (if appropriate); also describe if the project is incomplete or faulty (provide specifics about why you weren’t able to complete the assignment). Finally, clearly indicate if you completed the optional component (which must be demonstrated in the video) in order to receive extra credit.

  • Mini Project #3: Mobile Cloud Computing: The goal of the third mini project is to connect your mobile app to a mobile back-end server (Firebase); your mobile app should be able to do the following:
    • Connect to a database hosted by Firebase and display data from the database in a Listview (and using Streambuilder).
    • Allow the user to add new data entries.
    • Allow the user to edit and delete data entries.
    • Optional: The ability to have users sign up for an account and log into an account; data should only be shown to users logged in.
    There are several tutorials online that can help you figure out how to set up a Firebase app, connect your app, and transfer data between app and the database, e.g.: Deliverable: Submit a brief video (< 60 seconds) of your app in action (emulator or device) via Sakai. Also submit a brief document (max. 1 page, pdf), stating your name, people you worked with (and how), and describe any aspects of this project that caused you unusual difficulties (if appropriate); also describe if the project is incomplete or faulty (provide specifics about why you weren’t able to complete the assignment). Finally, clearly indicate if you completed the optional component (which must be demonstrated in the video) in order to receive extra credit.

    Main Project

    With the skills and resources acquired in the mini projects, a final project will now address a specific problem in the world of mobile computing. You can continue to use (and expand) your existing Flutter code or you can start from scratch. For the main project, it is also acceptable if you choose Swift (for iOS), Java (for Android), or any other development platform (e.g., Cordova, React Native, Xamarin, etc.). Your completed mobile app should provide a solution to a problem found in an area you choose, such as healthcare, fitness, wellness, entertainment, automation, safety, gaming, education, etc. The main project can be performed in teams of up to three team members (if help is needed to identify team members, let the instructor know!) and collaboration across teams is also encouraged.

    Main Project Proposal

    The main project proposal is provided by the entire team (i.e., only one team member must submit the proposal document). The proposal should be a PDF document of at most two pages with the following sections:
    • Project Title
    • Names of Team Members
    • Problem Description
    • Solution Description
    • Timeline, Milestones, Outcomes
    • List of Hardware/Software Needs (Optional)
    Clear indicate the names of the team members and describe the challenge or problem you are trying to address. For the final project, novelty, uniqueness, innovation, etc., are important, so try to highlight the unique aspects of your project. In the Solution Description, you then describe how you will address the challenge or problem. In the Timeline, Milestones, Outcomes section, you provide a list of the different sub tasks of your project, who will be responsible for which sub task (if team project), and the outcomes of the project (what will your final product be, what are the deliverables). It is also acceptable to indicate "primary" features and "secondary" features in your solution, i.e., you propose to definitely develop the primary features, but the secondary features are "optional". This will allow the instructor to make suggestions, e.g., to make secondary feature a primary feature if the complexity does not appear to be sufficient for a semester-long project. If the proposed project is related to any other ongoing projects of yours, and any other information that may help the instructor to assess the difficulty, complexity, and feasibility of the project, make sure to clearly indicate that. Also provide a list of hardware/software needs for the project and if you do not have access to such resources, clearly indicate this too.
    Your project should be an example of a "mobile" or "wireless" solution to a problem; typically, a mobile computing solution has one or more of the following characteristics (this is an incomplete list, but is presented to help you decide on a project):
    • a mobile/portable solution that provides anytime and anywhere access to services and/or information
    • a solution that takes advantage of "context information", such as the location of the device, the time of day, the habits of a user, the social context, past experience (historical data), etc.
    • a solution that utilizes wireless communication capabilities to obtain information from other mobile devices, cloud services, sensors, etc.
    • collection, analysis, and response to sensor data (video, audio, motion, etc.)
    • a solution that integrates with social media services
    • a solution that provides user creation and authentication services to personalize the mobile experience

    Progress Report

    The progress report should be a PDF file submitted via Sakai, it is limited to two pages, and it should contain the following headings and information:
    • Project Overview: provide the project's title and the names of all team members
    • Project Summary: briefly summarize your project's original goals
    • Project Changes: describe any changes to the original proposal and why you propose these changes; if no changes, simply say "None"
    • Status of Project: describe the status of the project (see below)
    • Attachments: optional (see below)
    The document provides an opportunity to revise the original project proposal (clearly describe what you plan to do differently and why) if needed. Its primary purpose is to explain what has been done so far; be specific and clear about this as possible (e.g., a list of sub tasks, identifying the completed sub tasks, the ones currently being worked on, etc.). If there are screenshots, etc., they can be added to the document (as optional attachments) and do not count towards the two-page limit.

    Project Presentation

    The project presentation should be a video of no more than 3 minutes; it can consists of both narrated slides and a brief video of your project solution in action or just the video. Make sure that the video is narrated. A typical project presentation would consist of the following parts:
    • Project Overview: introduce the team members and the project's goals
    • Technical Details: describe any relevant technical details such as tools or packages used, back-end services integrated, key features of app, etc.
    • Product/App Demo: show the product/app in action (e.g., recorded on simulator or device), while highlighting the main product/app features
    The project presentations will be watched during the May 10 lecture; as time permits, instructor and other students may ask the project team questions.

    Final Report

    The final report should be a PDF file submitted via Sakai, it is limited to two pages plus attachment, and it should contain the following headings and information:
    • Project Overview: provide the project's title and the names of all team members
    • Project Summary: briefly summarize your project's original goals
    • Project Description: this section describes in detail what features of the product have been completed and which not (and why not); also describe any major deviations from the original proposal. Grading of the final product will depend significantly on the information provided in this section!
    • Attachments: In addition to the two-page limit, you can add as many attachments as you like such as screenshots, wire frames, photos, etc. The purpose of the attachments is to provide further evidence of the success of the project.