List of Common Mistakes for the 'Quiz Program' (Console-based) Assignment:

Category

Mistake

Suggested Percentage Of Assignment
(explanation here)
  Algorithm Implementation

30

Correctness You don't properly select which operator to use, based on the user's choice of operators -5%
(Failure to complete part of the assignment) You don't print out a message to the user that includes the correct operator in the output
(For example: "What is the result of 2 * 3?")
-2%
(Failure to complete part of the assignment) You don't check the user's answer (Note: if the students more-or-less copy-and-paste the code (once for each operator, then you may have this occurring multiple times) -10%
(Failure to complete part of the assignment) You don't confirm that the user's answer is correct, if it is correct -4%
(Failure to complete part of the assignment) You don't tell the user if their answer is wrong -4%
(Failure to complete part of the assignment) If the user's answer is wrong, you don't tell them what the correct answer is. -2%
(Failure to complete part of the assignment) You don't have a solution that makes substantial use of if statements -5%
(Failure to complete part of the assignment) You don't have a solution that makes substantial use of if...else statements -5%
(Failure to complete part of the assignment) You don't have a solution that makes substantial use of switch statements -5%
  User Input Validation          (This isn't a core part of the assignment, but easily could be, if the code provided for obtaining user input was removed)

10

You don't check that the maximum value of A is >= the minimum value.

-2%

You don't check that the maximum value of B is >= the minimum value. 

-2%

You don't check that the number of repetitions is >= zero.

-2%

You should fix the above problem(s) by allowing the user to re-enter the value, if the value isn't good.

-4%
The user should be allowed to fix the above problems by re-entering only those value(s) that are problematic.  Your solution (cycling back through the entire menu, and forcing the user to re-enter everything) works, but is awkward for the user -2%
  Random Number Generation          (This isn't a core part of the assignment, but could easily be added)

10

 

You shouldn't create the Random object more than once – not only do you only need 1, but it's actually better to have only one.  Remove the extras, and add in a comment explaining why it's better to have just one Random object, from both a memory-usage, and random-number generating views.            (-2)

 
 

Your program will never actually randomly generate numbers equal to the 'highest possible value' that the user gave you.  Fix this, and put in a quick comment explaining what the problem was.   (-2)

 
  Computer Efficiency            (Efficient use of resources, such as memory)

10

Don't create unused variables The variables r1, x, and y are unused – remove them. -1%
 Don't create unneeded local variables

For something like:
double distance = Math.Sqrt(((_centerX - x)*(_centerX - x)) + ((_centerY - y)*(_centerY - y)));
return distance;

you can instead write:
return Math.Sqrt(((_centerX - x)*(_centerX - x)) + ((_centerY - y)*(_centerY - y)));  

-1%
  Critical Thinking (about the modulus operator)

20

 

This is missing entirely. (Students will often miss this document, and hand in the program portion, but fail to hand in this document)

-20%
 

Given A % B = C, you don't explain what C will be, when A is less than B.

-10%
 

You need an "intuitive, easy-to-understand explanation explaining why you always get the answer that you do" for A % B = C, when A is less than B. 

Instead, you have given one more concrete examples (without explaining why the pattern occurs, overall), or your explanation appears to be one the right track, you haven't clearly communicated a clear and concise understanding as to why this pattern exists.

-5%
 

Given A % B = C, you don't explain what C will be, when A is less the same as B.

-10%
  You need an "intuitive, easy-to-understand explanation explaining why you always get the answer that you do" for A % B = C, when A is equal to B

Instead, you have given one more concrete examples (without explaining why the pattern occurs, overall), or your explanation appears to be one the right track, you haven't clearly communicated a clear and concise understanding as to why this pattern exists.

-5%
  Style / Presentation

10

Please give your variables that indicate what the variable is used for -2%
Commenting

You didn't comment any of your code. 

-1%
Identify the author of each file

You didn't put your name, etc, at the top of EVERY  source code file, including any files given to you. (The "etc" part includes the name of this class (“BIT 142”), and the year and quarter, and the assignment number, including the revision number) 

-1%
Quality of presentation

(Make sure that what you've handed in looks good)

Code that you've commented out, because you're no longer using it, should be removed before handing in the assignment.

-1%
Horizontal Indentation Your code isn't formatted entirely consistently – in your C# file, try doing a "Select All", then under the "Edit" menu, under "Advanced", do "Format Selection" -1%
Vertical White Space Your code contains excessive numbers of blank lines in at least one place.   
  OOP-related

<NONE>

Proper encapsulation

Within your classes (for this, and future assignments) all data field, methods, properties, etc, should be marked public or private (or protected, or internal, if you choose to look those up on your own, etc) – you left this out in several places.

No points deducted, but feedback to students is good.
C# language specifics

If you're interested, look at the differences between  a class & struct – your AssignmentFunctions is a perfect example of where to use a struct (since it basically just exists to hold data)

No points deducted, but feedback to students is good.
  General Assignment Mistakes  
Submission Mistake You included the "Debug", "bin", or "obj" directories, and you shouldn't have. The assignment specifically said not to do this.

These result in point penalties, since the student has failed to complete one or more parts of the assignment, even though no particular percentage has been assigned to this category.

Submission Mistake

You didn't include the project files, please do so in the future. The assignment specifically said to do this.

 

 

Explanation of Percentages assigned:

Please note that for any given category, the total of the penalties may add up to more (or less) than the total for the category ; many of the mistakes are mutually exclusive (and since they therefore can't all apply, it's ok to add up to more than the category total), and if the student doesn't include any work in a particular category, it is suggested that you remove all points from that category (even if the individual items don't add up to the category total)

 

Note:  While this list is intended to be as comprehensive as possible, it is not exhaustive - it is possible for students to make mistakes that aren't listed above.  Students should be aware that they may receive feedback (and point penalties) for such mistakes.

 


This document and the related materials are developed with support from Microsoft Research Computer Gaming Initiative under the Computer Gaming Curriculum in Computer Science RFP, Award Number 15871.