CSCI567 - Mobile Application Development


Link to resource on GitHub

Final Project - Overview

Details for this project:

This project will occupy most of your time this semester. The early assignments and lectures will hopefully give you the rudimentary tools you need to get started creating a Flutter Application for this project.

Project Overview

The primary purpose of this project is to give you the opportunity to create a working Flutter Application. Additionally, give you a reason to make use of some of the software development tools discussed in this course (GIT, Issue Tracking, CI/CD, testing, etc). There are a few different classifications of projects, which will be discussed in a later section, that hopefully will allow you all the flexibility to pursue something you or a member of your group have an interest in be it a new app idea or contributing to an open source project. I am hopeful that you all will find this project fun and exciting and can't wait to see what results from this semester.

Also, if you need web and/or database backends for your project I have Google Cloud credits for every student that can go towards hosting on Google's Cloud services; however, the free tier for most of their services should be plenty for the scope of projects you are doing. Once I've approved your project I'll include the sign up link for Google Cloud Credits in my response to the team.

I highly recommend you work with Firebase as your backend, on their free tier for your projects.

Project Options

For this project there are three different options of projects you can pursue. If you have general questions about any of these project options please ask on the Piazza Q&A Discussion Board.

  • New Project
  • This option you will create and work on a project you/your group come up with. With this you'll want to make sure you both are doing enough for it to be a good project, but at the same time make sure you don't try to do too much. This is where the project proposal will be extremely important and helpful. If you chose this option you should try to get me your project proposal before it is due so I can work with you to insure the project has a good scope of work.

  • Open Source Project

  • This option would require you to find an existing open source project that your group will contribute to. Your project proposal will need to make sure that it indicates what contributions you will be making. For this project you'll also want to clone the open source project into a private repo for your group to use for the project and if you chose to push your revisions up after the semester you can. I would recommend selecting and working out your contributions early for this one too so I can make sure your deliverables would actually be a significant contribution to the open source project. You would need to contribute significantly to the open source project to be successful on this kind of project.

  • My Project Ideas (2 groups)

  • I have two projects in mind, both are new projects. If you are interested in either of these your group should come see me in office hours or schedule a time to meet outside of class.

Once you've decided on which kind of project you will be doing you should begin brainstorming what you expect to get done this semester and then move onto putting together the project proposal.

Project Proposal

Your project proposal is both what your project is, but also what you expect to have done at the end of the semester to turn in. As such your proposal should have the following sections:

  • Project Title
  • Your project proposal should be titled with what you expect to call your app.
  • Project Members
  • You should make sure that you identify who all the members of the project team right below the project title.
  • You're required to work in teams of 2-3 for the project unless otherwise approved.
  • Project Description
  • This should be the first section where you will describe what your project is and what you expect it to accomplish.
  • Project UIs
  • This is a section of the document where you briefly describe or even show prototype sketches of what the expected UI for your app will look like at the end of the semester. This would be for all of the Views/Widgets you create. If you end up with more or less views at the end that isn't an issue as you may discover when you actually have a working prototype that you could improve the UI or that radically changing it would make it better.
  • Diagram Screen Relationships
  • Taking the UI design/interaction process a bit farther this section should show in a transition graph how the different screens relate to each other and transitions from one activity to another. This should help you design the UI in the previous stage and to be effective each state in the diagram should connect to a specific UI from the previous section.
  • Project Deliverables
  • This is the most important section of the proposal as it's where you will actually create a list of expected contributions, features, developments, etc that you expect to have working by the end of the semester. As your proposal will contribute to your project grade more detail vs less detail here is important. Also you should ideally have expected deliverables and bonus deliverables in separate lists. You will get graded on if you get your expected deliverables completed and will get bonus points for going beyond that. These deliverables need to be clearly stated so that when I read the proposal I'm clear on what you are going to be doing for the project, if this isn't clear you'll need to further explain your project deliverables to me before I'll sign off on your project and you'll lose points off your proposal significantly if I need to do this.

  • If I feel your project isn't significant enough I'll ask you to do more of your deliverables or add more to the project. Alternatively, if I feel that your project is taking on too much I'll propose a subset of your deliverables that you should make sure to get working first. Modifying the scope of your project proposal is the purpose of it in context of the course, and why I'm wanting them due before Spring break so I have the time to adequately read through and think about how much time you'll potentially need. Ideally you should consider proposing and starting on your projects sooner vs later.

  • Project Organization

  • This section breaks down how you expect to organize and manage the development of the project among your team. Be it component assignments, general plan, etc. This would be good to figure out so that everyone knows what their job will be while working on the project.
  • I highly recommend thinking through the responsibilities for each team member at this stage. Depending on your project and if you have a team of 3, it would also potentially be worthwhile to have someone focus on test completeness/soundness for all the functionality of your app, which would make the usefulness of tying your project into a CI/CD framework we'll discuss in class more beneficial.

You will need to write this and submit it as a PDF document to me via email with the subject line CSCI567 Project Proposal with all of your team members CC'd. If you want faster feedback you can email your project proposal to me, before the submission deadline. Submitting it significantly before the deadline, will allow me to give you feedback without any grade penalty.

Project Submission

I will create a private repo on GitHub and/or GitLab for your group named whatever you title your project that all of you will have access to. You should use this repo for development of your project, and its where your project submission will be taken from on the due date. Make sure for the final submission you put the compiled apk file into the root path of your git repo so I can easily install and test your project. I will not be testing an iOS version of your project.

Failure to use the repo for code collaboration will not result in any direct grading impact; however, if there is a group work dispute I will use the commits to gain insight into who contributed what. One of the key reasons for me having you work in teams for this project is to provide you the opportunity to collaborate on a project with version control, that will be a necessary skill when you enter the workforce. I also hope you'll leverage CI/CD & testing in your projects as well.

Project Presentation

The project presentations will be 10 minute presentations by each group where you will discuss the following:

  • Overview of what your project/app is
  • Technical hurdles you ran into
  • What you still have to get working
  • What you found cool/exciting about your project

Project Grading

Your grading for the Project will break down into the following components:

  • Project Proposal

    • This will be worth about 10% of the overall project grade. The grades for this component will be determined both by how clear the details in the proposal are presented and the amount of thought/detail included (deliverables, group organization, etc). I'm really looking for the fact you have thought through your project and have clearly organized/indicated that you've thought out the details.
  • Project Presentation

    • This will be worth about 10% of the overall project grade. Your grade on this will be determined by if you give the presentation, and if the presentation gives a clear understanding of what your project is, how it works, and technical hurdles you tackled to get it working.
  • Group Evals

    • This will be worth about 10% of the overall project grade. Basically will ask for your group members to evaluate how well the group worked together and how much you felt your teammates contributed.
  • Project Midpoint Eval

  • This will be worth about 10% of the overall project grade. This portion of the grade will come midway through the time allocated for you to work on your project. This is used to check in on how much progress your group has been making.
  • We will accomplish this either via class lab time, where I will check in with each group during a class period or each group will demo where their project is partway through the semester.

  • Final Project

  • This will be worth about 60% of the overall project grade.
  • Your grade for this comes from the following:
    • Meeting delieverables: This is why making sure you have a good grasp on what your project is and what you expect to be able to turn in at the end of the semester is important. Also, why your delieverables should be very detailed. I also weight the difficulty of your deliverables, based on your survey at the end of the semester, my experience with aspects of your app, and the difficulty of your app overall. I try to insure you expand your deliverables during the proposal stage; however, I have had students turn in such rudimentary projects at the end that I had to lower the weight of their end product.
    • Quality of App: I will use your app to test the delieverables. The ease of use of your app as well as how it looks will play into this aspect of your grade. I'll mention it in lecture, but this is one reason you should make sure to spend some significant time planning your UIs for the proposal as it'll make this aspect of your app better. Additionally, you need to focus on materials design and themes as done in modern Android development to insure your UI is usable.
    • Crashes: I won't be able to give full credit for your app even if it is amazing if it force closes during execution.
    • Fails to work for Android 8.0+: I'll be testing your apps likely on Google Pixel 3; however, might get an older phone running Android 8 out to insure it works for Android 8. But students code that fails to install or work correctly on Android 9 will lose points here.
    • Contribution to the app, if you didn't contribute your portion of the overall app development you will lost credit for your project grade. This will come from team evaluations and analysis of your physical code contributions on GitHub and/or GitLab.

Project and Group Feedback

At the end of the semester you will be given a Google form link that you'll be required to evaluate your group members and give feedback on your experience in the course and with the project. This includes expanding on why some delieverables didn't get completed and what was learned in trying to get them to work. Failure to do this survey will result in the loss of the group evaluation credit and potentially loss of the final project grade.

Loading...