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:

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:
  1. Project status (status update for your TA, including an agenda for the project meeting); and
  2. Progress and plans of each individual team member.
Both sections should have the following three subsections. Each subsection is best organized as bullet points:

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.