Team Project Overview
Introduction
The largest component of this course (in terms of both grading and time) will be working with a team of other students to develop a product for a real sponsor. Most students find this to be the most meaningful part of their CS education to this point because you get to work on a project that really matters to someone and will live beyond the teacher’s grade book.
In addition, it exposes you to working with a team and learning to find solutions on the Internet to challenges as they arise—both critical components of real-world software development.
Project Overview
One of the objectives of this course is to become proficient in Java software development. In this regard, past semesters of this course wrote GUI applications in Java, usually designed to run on the desktop. Another avenue to work with Java is in Android mobile application development. For this course, you will develop Android applications as a way to learn and demonstrate your Java skills.
Despite the use of the Android platform, this is not a “mobile app development” course per se. Instead, it is a course in software design and development principles, and mobile apps will be one vehicle that we use to learn and apply these principles.
This all being said, you will need to work with your teammates to identify a sponsor and the application you will build. You can choose anything you like. You will define the requirements and be held accountable to them.
Guidelines
There are three general guidelines/requirements that you will need to follow to make your project meet the necessary outcomes, and your instructor will help guide you in these areas, if needed.
-
Sufficient Java Depth
An app that turns the screen different colors is not going to cut it ;-). Similarly, one that is focused primarily on superficial UI manipulation may not be involved enough to expose you to the interaction between classes, APIs, data storage, threads, and other topics that we will be discussing.
As a general rule, most appropriate apps will involve several custom classes and data storage of some type (in the cloud or on the device). Usually the mere act of choosing an “interesting” project for a real-world sponsor is sufficient to meet this requirement, and this point takes care of itself.
-
Proper Scope
An application that can be written in two weeks is not appropriate, but on the other hand, neither is one that will take a year to develop. Your instructor can help give you an idea of how to appropriately define your project so that it will stretch you but still be workable.
Usually, this requirement is the not major factor in determining which application to build, but rather how much of it you commit to. In other words, you decide on the product you want to build, and then determine whether you can build a portion of it, a prototype, or a polished version of the idea, depending on how complex it is.
-
Sponsor
One of the most important elements of your team project is that you are developing software to bless the life of someone else. These sponsors will be stakeholders in the success and the functionality of the project. As you work with them to define requirements, and refine them later, you will develop important skills.
As you produce software that will really fill a need and have someone counting on you, it changes the way you view your work. Your sponsor does not pay for this application or anything of that nature. They just need to be willing to donate some of their time to work with you.
The question is always asked, “Can I be my own sponsor?” The problem with this is that you lose the benefits described above. If you have an idea for a project, that is fine, but you would need to find someone else who could be a stakeholder in it, and let them sponsor the project.
“Can my sponsor be my spouse or my mom?” Possibly, but not necessarily. If that person is a real stakeholder, then yes, but if they are simply there to say “whatever you want, dear” then it doesn’t work. For example, if my mom sponsors my triathlon training app but she doesn’t train for them, it doesn’t work. But if she sponsors my quilting app because she is an avid quilter, then that is perfect.
Time line
During the first several weeks of class, you will be working on individual programming assignments before you turn out focus to coding on the team project in earnest. However, even during the first part, you will be working on preparing and planning for your projects.
The following is a general time line of the project schedule:
Week 1 – Brainstorm possible ideas
Week 2 – Form teams
Week 3 – Decide on sponsor and basic idea
Week 4 – Determine project requirements and scope
Week 5 – Identify potential risks
Week 6 – Research risk mitigation
Week 7 – Project Design
Week 9 – Milestone 1
Week 11 – Milestone 2
Week 13 – Complete project
Week 14 – Deliver project to sponsor