For this class, there will be three programming assignments to be completed with teams of four students. Teams will be selected psuedo-randomly (somewhat balanced) by me, and usually all members of the team will receive the same grade for each assignment. However, part of each assignment is an anonymous performance appraisal questionnaire, and this can affect individual grades. In this questionnaire, you will be asked to assess the contribution of each team member (including yourself!) to the final product. The primary rational for doing team projects is that it is much closer to real-world programming projects -- experience with teamwork programming efforts will look much better on your resume! This experience should also complement other ICS project courses such as Project in Software System Design (ICS 125).
For each project, there will be three different sorts of roles: a Team Leader, a Documentation Leader, and two Programmers. These roles must rotate so that no person is either a team leader nor a documentation leader twice. The Team Leader (or manager) is responsible for leading meetings, clarifying and dividing up efforts, setting intermediary deadlines, and making sure that the coding efforts can be integrated. The team leader is also ultimately responsible for all aspects of the project -- this leader must review and check all parts of the project, and help out individuals where needed. The Documentation Leader is responsible for both recording minutes and all decisions made at team meetings, as well as producing the initial draft of the System Report, the technical documentation that must accompany each project. Finally, the Programmers are primarily responsible for the code. Usually, these roles will be divided into efforts such as "User interface programmer" and "Seach algorithm programmer", but the details may depend on the project as well as the teams.
The System Report should provide an overview and description of the final product, especially the design of the code. You may assume that the reader is familiar with the specifications that I will provide for each assignment. This document should describe data structures, and the high-level code design that your team adopted for the project. This document must be written clearly, using correct English. Points will be taken off for poorly written or incomprehensible system reports.
The Team Meeting Minutes should describe when members met, all intermediate deadlines, all decisions made, as well as any problems encountered. These minutes must be signed by all team members. It is strongly recommended that these be finalized and signed at least a few days before the project is due. The meeting minutes need not be formally written; clarity would be appreciated, but these will not be graded on the quality of the written english.
The Performance appraisals are to be completed individually and handed in by class time on the due date. (They may be slid under my office door, or handed in at class.) They must be signed. Forms are available here, and will also be distributed in class.
The Code, both source code and compiled bytecode, must be deposited in the Masterhit/instructional/ics-171 dropbox. It should include some low-level documentation for readability. It is expected that Java (JDK 1.2 or higher) will be the programming language.
Projects will be primarily (~60 percent) be graded on whether or not they meet the performance specifications (see individual project details, below). Projects will also be graded on the quality of the system report (~35%). Code-level clarity and documentation will be given a smaller weight. Peer appraisals may be used (at my descretion) to adjust individual grades.
Projects are due at 2pm (class time) on the day indicated. Projects may not be late: if the deadline is not met, team members will receive a zero for that project. It is the responsibility of the team leader to make certain that this deadline is met, and to help out team members that may be having difficulty carrying out their part of the project. (In extreme cases, the team leader is encouraged to contact me should there be "unresolvable" problems.) All code and the system report should be deposited in the dropbox, and in addition, a hard copy of the project documents (meeting minutes, performance appraisals, & system report) must be handed in at class.
Project details: (to be filled in as they become available)