Course Project

The course project will provide you with hands-on software engineering experience, involving a team students. You will design and develop your product in 8 weeks. The project is broken down into several milestones; see the list of assignments.

In addition to submitting artifacts required for each milestone, each week you will submit reports and attend meetings, just as real software development projects do:

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 that you might choose. Your whole team should work together to 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.

Weekly Project Meetings

You will meet with a TA for 15 minutes during section hours 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 mentor. 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 mentor, 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. 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 from your TA. Instead, use the TA as a resource to help solve your problems.

Weekly Team Meetings

Your team will meet at least once a week to discuss issues and/or work together in the same location. We have reserved Tuesday sections (9:30-10:20) for this purpose. You can meet at any location you like. Successful teams often meet more than once per week.

Customer feedback

Your team will act as another team's customer. This helps the other team by giving them outside feedback. It also helps you: you will see how another team is approaching the problem, which can give you ideas of what to do or what to avoid.

There is a rubric for your review. If you answer "no" because something is not adequate or correct, please include, in your feedback, a comment for the other team explaining why. That will enable them to improve. The rubric is just a guide; also give high-level feedback. For example, have they convinced you that the problem is an important one and that their approach is a good one? How can they improve?

There will be a separate assignment in Gradescope for your team to submit for each actual project assignment. The peer review assignment will always be due two days after the actual assignment: usually, the actual assignment will be due Tuesday night, and the peer review of it will be due on Thursday night. To find the material that you need to review, look in the GitHub repository of the team you are reviewing.