# of Team Members: 4
Teachers in K-12 and in higher education often need to group students into teams for class exercises and labs. Grouping, tracking and grading teams can be a real nightmare -- especially since most course software like t-square only allows grades to be assigned to individuals.
For the purpose of this assignment, exercises and labs are considered to be the same thing.
Student- A student can do the following things:
- log on to the system
- sign up for a course
- view their team assignments
- sign up for a team, if the team is self selection
- form a team if the team is self selection
Instructor - An instructor can do the following things:
- create, delete and view labs/exercises
- lookup a student by name and see their team assignments
- create a new lab/exercise
- can view students who are not yet on teams for a particular lab
- can create a course that they will be teaching
- can view teams and students on those teams
System Administrator - A system administrator can do the following things:
- can do everything any other use can do.
- can add, edit and delete users in the system
- can set or reset passwords for users
- can suspend and unsuspend accounts
- view all the users in the system
- view all the courses in the system
The system should create an initial administrator for first time use name=Administrator, user id = admin password = admin.
- All users must login to the system using an id and password.
- If a user fails to login on 3 consecutive attempts, their account is suspended until reset by a system administrator.
- No functionality is allowed until login has been successful.
Lab/Exercise - A lab is associated with a particular course
- a start date and time
- an end date and time
- a team designation which is one of the following:
- Individual, no teams are allowed
- Random, students may not create or sign-up for teams. The system must create groups of a size selected by the instructor. If the class has left over students, then the team size may be exceeded by 1.
- Self-Select, students may create teams and sign-up for teams.
- a maximum size set by instructor for all teams. This varies by lab/exercise, but is the same for all teams in a given lab.
- a team number (assigned by system and unique for that lab)
- a team name (entered by the students)
- a set of students (for any given lab, a student may only be in one team, but a student may be in several teams across multiple labs).
- a course has some identification like "CS2340 - Objects and Design"
- a course may have one or more Labs associated with it.
- Lab Membership Report - for a given lab, show all the teams and the students in the team
Your system should save the information somehow (usually to disk unless you are trying for the database extra credit), so that it can be reloaded on startup. You should not have to retype all the information in every time you run the system.
Your system should support multiple simultaneous users. This will be accomplished by using a web-based application. You should use JSP/Servlets or for extra credit GWT.
You should log errors and exceptions to a file. It is recommended you use log4j or the Java logging API for this service. Logging should be on the server. There is no requirement to log anything on the client.