CompSci 307
Fall 2022
Software Design and Implementation

You are a mirror of yourself in others. Whatever you want, give. Be the best reflection of yourself. — Karen Baquiran

Team Project's Individual Responsibilities

Projects in this course are intended to be large and challenging, so they require steady, consistent, work by everyone in the team. Only if you put in the time each week will you see measurable progress and not have to pull "heroic" all-nighters near the end. Unfortunately, conflicts are likely to occur so please let the Teaching Team know as soon as possible — even if it has happened just once or twice since it is better to deal with the situation early rather than having a big disaster at the end when little can be done to get back on track.

Meetings

You are expected to participate in all team meetings because when meetings stop getting full attendance it is a clear sign that a project is not going to be successful.

The following expectations give everyone a fair chance to participate in the project:

Functionality

You are expected to develop code that implements new features or significantly improves the project's design every week (regardless of whether there is an expected class deadline or not) because the project only truly moves forward when individuals (or pair programmers) sit down and get work done.

The following does not count as successful work:

It can be a little difficult to exactly quantify what a reasonable amount of code is: sometimes, just the right 150 lines might be really hard to write; other times you can add 1,000 lines of duplicated boilerplate and still have accomplished nothing. A good rule of thumb is to work with your team to agree on what needs to get done each week and then get a least a basic version of most of that done.

Clean Code

You are expected to develop code that is easily readable, free of duplication, and meets the course Design Checklist as appropriate for the current project because that does not additionally burden your team mates and shows you are learning course concepts by practicing them in your code.

The following does not count as clean code:

Interesting Design Challenge

You are expected to take responsibility to solve at least one "interesting" design problem because many design problems exist in any project of significant size and it is valuable to your personal growth to take at least one opportunity to show your design skills individually instead of just implementing code based on other's directions.

Your resulting design should:

Although you are encouraged to discuss your design with your mentor TA and team mates, the final decisions should be yours and you should be able to justify them. You will be responsible for discussing this problem and your solution in your analysis, as well as implementing the design in code backed by your GIT commits. The quality of your individual design will form a large part of your overall project grade.

Going Above and Beyond

You are expected to go above and beyond to help another team mate at least once during the project because you are all in this together and that is a significant way you show you are being a good team mate.

For example, the following might be needed to make a project a success:

This does not have any direct mechanical affect on your grade but will be evaluated on a case by case basis when determining your final project grade, so please help give credit to others when it is due by letting us know specifically how they helped you.

Resources