Your task in this milestone is to form a team and decide what you want to build. There are three deliverables: a brief individual essay that each of you needs to write, a project proposal, and a team expectations agreement.
The details about team formation can be found in the main project handout.
Use the CMS assignment for final project team formation to create your two or three-person team. You have about 48 hours to do this.
Use the Canvas discussion thread if you are still seeking a team.
Anyone who is not in a CMS team by the deadline of that assignment will be randomly placed in a team.
The first project milestone, MS0, is due on April 10th with our standard 48-hour deadline for late submissions. The CMS assignment for it will be released after teams are formed.
Read this page on coping with problematic team members. We recommend completing the brief essay it asks you to write, but we won’t collect it on CMS this year.
First, make sure you have read the entire project handout.
Submit a short (1-2 page) document containing the following information:
The members of your team, including their names and NetIDs. [1/2 points]
Your plan for a regular status meeting. We strongly recommend that, as a team, you agree on a regular meeting time to discuss the status of your project. Having a meeting about every other day is advisable. With the shift to virtual instruction after spring break, you should also agree on how you will communicate – e.g., using Zoom and Slack. [1/2 points]
A proposal for your system. Summarize the system you intend to build. Tell us what will be the most important functionality of your system. This summary should be about one page long. Provide: [1 point total]
A very short statement of the core vision or key idea for your system.
A short (no more than six items) bulleted list of the key features of the system.
A narrative description of the system you intend to build. Go into enough detail that, if your charter were given to another team, and that team were never allowed to talk to you, they would still understand more or less the functionality that you have in mind.
A roadmap for your system. There are going to be two “sprints” (implementation phases) after this charter: MS1 (beta) and MS2 (relase). Each will last about two weeks. Make a list of what features you plan to implement in each sprint. Then, for the features you plan to implement in MS1, sort them into three categories— Satisfactory, Good, and Excellent—like how the programming assignments in this class have been. That gives you a plan for what to do if MS1 is going worse or better than you expected. [3 points: 1 for each milestone]
A preliminary design sketch for your system. Spend some time thinking through what you are going to need to build. Of course, your plans will evolve throughout the project. But it’s good to have talked as a team up front about what seems necessary. In about one page, answer the following questions:
What are the important modules that will be implemented? What is the purpose of each module? [1 point]
What data will your system maintain? What formats will be used for storage or communication? What data structures do you expect to use as part of your implementation? [1 point]
What third-party libraries (if any) will you use? [1 point]
How will you test your system throughout development? What kinds of unit tests will you write? How will you, as a team, commit to following your testing plan and holding each other accountable for writing correct code? [1 point]
Teamwork isn’t always easy. But when teams work and communicate well, the benefits more than compensate for the difficulties. One way to improve the chances that a team will work well is to agree beforehand on expectations. Here’s how we’ll do that.
At your first team meeting, create a Team Expectations Agreement. On a single sheet of paper, put your names and list the rules and expectations you agree as a team to adopt. We suggest that you start with this:
- We all show equal commitment to our objective.
- We all take part in deciding how work should be allocated.
- We are committed to helping each other learn.
- We acknowledge good contributions from team members.
- We handle disagreements and conflicts constructively within the team.
- We are able to give constructive criticism to one another and to accept it ourselves.
- We all turn up to meetings and stay to the end.
- We are good at making sure that everyone knows what’s going on.
- When one of us is under pressure, others offer to help them.
- We trust each other.
- We remain united even when we disagree.
- We support each other to outsiders.
- We feel comfortable and relaxed with one another.
Feel free to modify as you wish. Make your expectations fairly thorough without being unrealistic. For example, “We will each solve every part of the assignment completely before we get together” or “We will get 100% on every assignment” are probably unrealistic. You might want to reference the section below on “Teamwork and Roles” as part of your expectations.
Each team member should physically sign the sheet, indicating acceptance of these expectations and intention to fulfill them. Scan the sheet, and upload it to the appropriate CMS assignment. [1 point]
Acknowledgment: The list of sample team expectations above is from the University of Waterloo Centre for Teaching Excellence, citing Levin and Kent (2001).