CSE 403 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 10 weeks. The project is broken down into weekly milestones:
- 01 Project proposal
- 02 Team formation
- 03 Requirements
- 04 Architecture & Design
- 05 Testing and Continuous Integration
- 06 Beta release
- 07 Refinement
- 08 Peer review
- 09 Final release
- 10 Individual retrospective
Each week you will submit artifacts required for each milestone, write reports, and attend meetings – just like in a real software development project:
submit your project milestone every Tuesday EOD,
submit a weekly status report every Wednesday EOD,
hold weekly team meetings every Tuesday during section, and
hold weekly project meetings every Thursday during section.
You Choose the Tech Stack
You will choose a tech stack (programming languages, libraries, frameworks, etc.) to implement your project. Regardless of your choice, your project must follow professional standards and best practices, such as separation of concerns, modularity, and abstraction; and use of style checking, automatic formatting.
Your whole team should work together to survey, choose, understand, and use the chosen tech stack – 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.
Your team is ultimately responsible for learning the chosen tech stack. That said, the course staff will help you to the extent possible. So, if you are stuck, please reach out! Note that the course staff may not know every tool or framework that you might choose.
Revisions
Each week, you will build on your work so far. Your TA will give you feedback. So, please attend to the feedback and improve your project.
Expected Revisions
Your TA may request revisions for clarity or ease of grading, without immediate point deductions. Common examples include changes to document structure, consolidation of content, and addition of links to ease navigation and readability.
Expected Revisions are clearly labeled in the grading feedback.
If an expected revision is not addressed in the submission to the next milestone (i.e., your project suffers the same defect two weeks in a row), then you will lose points from both submissions.
Optional Revisions
For eligible project milestones, Optional Revisions allow project groups to recover points lost on their previous assignment. Common examples include missing, incomplete, or vague content.
Recover up to 80% of points lost on your previous assignment by improving parts of the submission for which points were deducted.
To request consideration for optional revisions, coordinate with your TA and agree on a format to convey the made revisions.
If your TA approves your optional revisions, points are retroactively added to the previous assignment’s score.
Weekly status reports
Weekly status reports help to plan and reflect on tasks. They keep the staff and yourselves informed about your progress.
Format
Each status report must include the following two sections:
Team report (status update for your TA, including an agenda for the project meeting).
Contributions of individual team members.
Both sections should have the following three subsections. Each subsection is best organized as bullet points.
Last weeks goals: an exact copy of the third section from last week. It is empty for the first week.
Progress and issues: what you did, what worked, what you learned, where you had trouble, and where you are stuck.
Plans and goals for the next week: each bullet point should include a measurable task and a time estimate.
You may use nested bullet points for parts of a larger task.
If tasks from one week ago aren’t yet complete, they should roll over into tasks for the next week, with a brief statement about struggles or blockers, and an updated estimate for time to completion.
For individual team members, no bottom-level time estimate should be greater than 3 days. If a task would be larger, think about a logical way to break it down and to have insight into progress.
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 organized and archived. Agree with your TA on a suitable file format for submission. In the past, students found the following two options effective:
Markdown reports in a top-level directory named
reports/
in the project repository (each report namedYYYYMMDD.md
).A single Google doc with all reports in reverse chronological order.
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. It’s usually best to meet in person. 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 and 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, the TA can help you to determine what a reasonable set of requirements are, and whether your documents and prototypes are compelling. As manager, the TA can help you to resolve conflicts or give suggestions about designs, teamwork, and tools.
It is a bad idea to try to hide information from your customer. If things are going poorly or you are having trouble, be upfront. You may get good suggestions, and the customer 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 manager. Instead, use your manager (TA) as a resource to help solve those issues.
Requirements
GitHub
We require that you use a public GitHub repository for version control, issue tracking, and continuous integration. This means that you will use Git for distributed version control.
You have used Git in simple ways to submit assignments in previous classes. You may need to learn more advanced functionality to use Git in a team. Git is extremely powerful, but it is not simple to understand or use. You will most likely use Git in your job, so learning Git is time well spent.
Here are some resources for learning about Git:
Markdown
We require that you write repository documentation as (GitHub-flavored) Markdown files.
A Markdown file is a text file, in which certain characters are interpreted as indicating formatting. Markdown files combine three important properties: they are readable (because of the structure and formatting), they interact well with version control (because they are plain text files), and they can be automatically rendered into a variety of file formats (e.g., html or pdf).
This document is itself written as a Markdown file then formatted as HTML for viewing on the Web, so you can look at it as an example. While your developer-facing documentation must be written in Markdown, your user-facing documentation and tutorials can be written in any way you like.
Team org, artifacts, and communication policies
We require that you create and maintain a file named team-resources.md
that includes:
each team member’s role in the project.
a link to each project-relevant artifact. For example, your project may have a Git repository and Google docs.
communication channels/tools and corresponding policies.