|   | 
		  | 
		Your score | 
		Max score | 
	
	
		
		Coding style (marks independent of program functionality)
		 | 
		  | 
		  | 
	
	
		|   | 
		
		
			- Appropriate use of white space (source code) 
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Self-documenting naming conventions
 
		 
		 | 
		  | 
		3 | 
	
	
		|   | 
		
		
			- Boolean and mathematical expressions are simple and easy to read 
			
 
		 
		 | 
		  | 
		3 | 
	
	
		|   | 
		
		
			- Each method implements one well defined task 
 
		 
		 | 
		  | 
		4 | 
	
	
		|   | 
		
		
			- Functions/methods don't exceed one screen size in length ~ 30 lines 
			of code (excludes whitespace and documentation)
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Class Attacker consists of at least 2 methods (the constructor and something to generate an attack)
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Class Defender consists of at least 2 methods (the constructor and 
			something to generate a defense)
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Class attributes are logical to the definition (e.g., not 
			variables that are just local to a function or method but belong to 
			each instance)
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Static variables employed (unless otherwise allowed)
 
		 
		 | 
		  | 
		-4 | 
	
	
		|   | 
		
		
			- The code for the 3 classes are not included in its own file.
 
		 
		 | 
		  | 
		-9 (-3 each) | 
	
	
		|   | 
		
		Sub total
		 | 
		  | 
		
		20
		 | 
	
	
		
		Documentation (marks independent of program functionality)
		 | 
		  | 
		  | 
	
	
		|   | 
		
		
			- Header documentation includes full name and tutorial section 
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Some form of versioning system is demonstrated in the header 
			documentation
 
		 
		 | 
		  | 
		1 | 
	
	
		|   | 
		
		
			- Each function/method is documented (similar to documentation for the 
			entire program but applies only to that function/method)
 
		 
		 | 
		  | 
		6 | 
	
	
		|   | 
		
		
			- Program limitations documented
 
		 
		 | 
		  | 
		1 | 
	
	
		|   | 
		
		
			- Program features documented
 
		 
		 | 
		  | 
		6 | 
	
	
		|   | 
		
		Sub total
		 | 
		  | 
		
		16
		 | 
	
	
		
		Functionality (only qualify for these marks if the program runs: 
		note some features obviously requires other features to be implemented 
		before credit will be granted)
		 | 
		  | 
		  | 
	
	
		|   | 
		
		
			- Program prompts user for the number of rounds
 
		 
		 | 
		  | 
		1 | 
	
	
		|   | 
		
		
			- Program runs for the specified number of rounds
 
		 
		 | 
		  | 
		1 | 
	
	
		|   | 
		
		
			- Program prompts user for the probabilities of the three attack 
			types
 
		 
		 | 
		  | 
		3 | 
	
	
		|   | 
		
		
			- Program error checks probabilities can set default probabilities
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Program generates attacks with equal probability of each
 
		 
		 | 
		  | 
		6 | 
	
	
		|   | 
		
		
			- Program generates defenses with equal probability of each
 
		 
		 | 
		  | 
		6 | 
	
	
		|   | 
		
		
			- Program can correctly determine the effect of attack/defense
 
		 
		 | 
		  | 
		2 | 
	
	
		|   | 
		
		
			- Program displays 4 required statistics for each round, 2 marks 
			each. If 
			insufficient statistics are displayed you may not only lose marks 
			for this feature but you may also lose marks for the other features 
			if it is not clear if/how features are working.
 
		 
		 | 
		  | 
		8 | 
	
	
		|   | 
		
		
			- Program displays required statistics at the end of the 
			simulation, 2 marks each. If insufficient statistics are displayed 
			you may not only lose marks for this feature but you may also lose 
			marks for the other features if it is not clear if/how features are 
			working.
 
		 
		 | 
		  | 
		16 | 
	
	
		|   | 
		
		
			- Probability of each attack type determined by user input (3 
			marks for each type).
 
		 
		 | 
		  | 
		9 | 
	
	
		|   | 
		
		
			- Defender can adapt to the attacker's pattern of attacks
 
		 
		 | 
		  | 
		14 | 
	
	
		|   | 
		
		Subtotal
		 | 
		  | 
		
		54
		 | 
	
	
		
		Design requirements (may modify the raw score)
		 | 
		  | 
		  | 
	
	
		|   | 
		
		
			- Implements static methods (other than 'main()')
 
		 
		 | 
		Divide 
		functionality marks by two1 | 
		
	
		|   | 
		
		
			- Program consists of only one class (style marks will also be 
			lost)
 
		 
		 | 
		Divide 
		functionality marks by two1 | 
		
	
		|   | 
		
		
			- Functionality not assigned to the appropriate class as specified 
			in the assignment description (e.g., the attacker implements a task 
			that belongs to the defender).
 
		 
		 | 
		Max loss of 8 
		marks to functionality (tallied after the above two modifiers, if 
		applicable) | 
		
	
		
		OVERALL ASSIGNMENT RAW TOTAL
		 | 
		  | 
		
		90
		 | 
	
	
		
		GRADE POINT
		 | 
		
		 
		 | 
		
		4
		 |