Course Project
The course project will provide you with hands-on software engineering
experience, involving a team of 4-6 students.
You will design and develop your product from the ground up in 9 weeks. The
project is broken down into several milestones.
In addition to submitting artifacts required for each milestone, each week you
will submit reports and attend meetings -- just like in real software
development projects:
- Hold a weekly team meeting every Tuesday during section;
- Submit a weekly status report every Wednesday; and
- Hold a weekly project meeting every Thursday during section.
You have a great deal of latitude in choosing your own toolset. Your team is
ultimately responsible for choosing and learning these tools. That said, the
staff wants to help you as much as possible, so if you are stuck, please ask us!
However, be aware that we don’t know every tool or framework that you might
choose. Your whole team should work together to survey, choose, understand, and
use your tools -- just like in the real world. You should be, or become,
comfortable with reading documentation that is sometimes incomplete or
confusing, and with installing and using new software. These are skills that
will stand you in good stead, no matter where your career takes you.
Revisions
For eligible group project milestones we will allow project groups to
recover points lost on their previous assignment. The points are retroactively
added to the previous assignment's score.
- Revisions on assignments will only be accepted within one week from which grades are
released by improving parts of the documentation for which you lost points.
- To request consideration for these points, coordinate with your project
manager and agree on which points are eligible and a format to convey the made revisions. Common examples
for revisions include missing, incomplete, or vague content.
- The beta, checkpoint, and final release milestone assignments are not eligible for grading revisions. Your system updates will form part of your next milestone release.
Weekly status reports
Weekly status reports help to plan and reflect on tasks, and keep the staff and
yourselves informed about your progress.
Format
Each status report must be a
markdown file and must include the following
two sections:
- Team report (status update for your TA, including an agenda for the project meeting); and
- Contributions of individual team members.
Both sections should have the following three subsections -- each about a
paragraph or organized as bullet points.
- The first subsection is easy. It should be an exact copy of the third section
from last week (i.e., goals from a week ago). It can be empty for the first week.
- The second subsection should report on progress and issues: what you did, what
worked, what you learned, where you had trouble, and where you are blocked.
- The third subsection should outline your plans and goals for the following week.
Bullet points are fine. If tasks from one week aren't yet complete, they
should roll over into tasks for the next week, with an updated estimate for
time to completion. For the team report, this subsection should be
higher-level and indicate who is responsible for what tasks. Also, it's good
to include longer-term goals in this list as well, to keep the bigger picture
in mind and plan beyond just the next week.
Submission
All
weekly status reports must be committed to your project git repository,
inside a top-level directory called
reports.
Weekly team meetings
Your team will meet at least once a week to discuss progress and issues, and/or
work together. We have reserved Tuesday sections for this purpose. You can meet
via Zoom or any other conferencing system.
Successful teams often meet
more than once per week and collaboratively write notes and define concrete
action items.
Weekly project meetings
You will meet with a TA for 15-20 minutes during section on Thursday (or at
another mutually agreed time). You may schedule additional meetings or use your
TA's office hours.
The course staff serves as both customer/product owner and senior manager. When you have a meeting
with your TA, you are allowed to ask the TA to serve any of these roles, or even
to switch roles during the meeting. As customer/product owner, the TA can help you to
determine what a reasonable set of requirements are, and whether your documents
and prototypes are compelling. As senior manager, the TA can help you to resolve
conflicts or give suggestions about designs, teamwork, and tools. Don't forget
or underuse either of these roles.
It is a bad idea to try to hide information from your customer/product owner. If things are
going poorly or you are having trouble, be upfront. You may get good
suggestions, and the customer/product owner won't feel blindsided if you are unable to resolve
the problems on your own. It is a doubly bad idea to try to hide problems or
conflicts from your senior manager. Instead, use your senior manager (TA) as a resource to
help solve those issues.
Requirements
GitHub
We require that you use a GitHub (
https://github.com) repository for
version control, issue tracking, and continuous integration. This means that you
will use Git (
https://git-scm.com/) for distributed version control:
Markdown
We require that you submit status reports and repository documentation as markdown
files. Here is a good summary of the markdown syntax:
GitHub markdown.
Team org, artifacts, and communication policies
We require that you create and maintain a file named `ORG.md` (at the top level of your repository)
that includes:
- Each team member's role in the project;
- A link to each project-relevant artifact (e.g., Git repos and Google docs);
- Communication channels/tools and corresponding policies.
Programming languages
You may use any programming language you like. However, your project must follow
professional standards and best practices, such as separation of concerns,
modularity, and abstraction.