Course Project
The course project will provide you with hands-on software engineering
experience, involving a team of typically 4-6 students.
You will design and develop your product from the ground up in 9 weeks. The
project is broken down into weekly milestones. Note that the milestone descriptions may be updated before they are officially assigned (see
Calendar) to reflect current class material and discussions.
Each week you will submit deliverables required for each milestone, write reports and attend meetings -- just like in real software development projects. Mark your team calendar to:
- hold a weekly team meeting every Tuesday during section;
- submit a project milestone every Tuesday by 11:59pm;
- submit a weekly project status report every Wednesday by 11:59pm; and
- hold a weekly project meeting every Thursday during section.
You choose the toolset
You will choose the toolset – programming languages, libraries, frameworks – that you use to implement your product. 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 and automatic formatting.
Your whole team should work together to survey, choose, understand, and use your tools – just like in industry. 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.
Some students report that the opportunity to learn a new toolset was a particlarly rewarding part of CSE 403. Doing so does come with some extra work, though.
Your team is ultimately responsible for choosing and learning these tools. That said, the staff wants to help you, so if you are stuck, please ask us! Note that we don’t 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. If your project suffers the same defect two weeks in a row (for example, you did not adequately address the TA feedback), then you will lose points from both submissions. Please attend to the feedback and improve your project.
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:
- Project status (status update for your TA, including an agenda for the project meeting); and
- Progress and plans of each individual team member.
Both sections should have the following three subsections. Each subsection is best organized as bullet points:
- Goals for the week. 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.
- Progress and issues. 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.
- Goals for next week. The third subsection should outline your plans and goals for the following week. Each bullet point should include a measurable task and a time estimate (no longer than a week). 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 project status, this third 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. Each weekly report should be in its own file named
projectname-YYYYMMDD.md , using the date of the report.
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. In-person meetings have been found most effective to past 403 students, however you can also meet via Zoom or any other conferencing system if your team members agree.
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 your 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.
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 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.