List of Common Mistakes for the 'Helpdesk Application' (Console-based) Assignment:

IMPORTANT NOTE TO THE INSTRUCTOR : The example solution contains examples of two common styles of solution (1) a single list of Ticket objects that's divided into 'high priority' and 'low priority' regions (2) and a class that uses two linked list helper objects, one for each priority. The first style (a single list) isn't really a pure Queue (which normally allows for insertions only at one end, and deletions at the other end).  If you're ok with this, then you should make sure to update this rubric accordingly.

Category

Mistake

Suggested Percentage Of Assignment
(explanation here)
  Implementing the Helpdesk class

60+

(Failure to abide by the restrictions set forth in the assignment)

You should be able to modify the linked list class so that removing a ticket is a O(1) operation.  Put in a comment explaining the running time of your current implementation, then fix it so it's O(1)

-10%
Maintainability

RemoveNextTicket (and all methods on 'utility' classes, like Helpdesk) should never interact with the user.  To do so restricts how the class can be used (what if you wanted to use it in a different application?  A WinForms app?  An ASP.Net app?).  The whole reason to use an enum as a return value is that we can (safely) return rich, informative info back to the caller (not the user, who may or may not know what to do with it).

(The 'Print' methods, whose purpose is to print out data, are ok)

-5%
(Failure to abide by the restrictions set forth in the assignment) Does the Helpdesk class pass all the tests listed in the Helpdesk_TEST file? -1%
(per test that fails)
(Failure to abide by the restrictions set forth in the assignment) Your Helpdesk class doesn't store references to Ticket objects in it's (linked list) nodes. -10%
  Implementing a Ticket class
(
This provided by the assignment, but if you wanted to add more emphasis on OOP/design, you could have the students implement the Ticket class, instead)

20

(Failure to complete part of the assignment)  This is missing entirely. -20%
(Failure to complete part of the assignment) You should model the individual tickets using a class. -10%
Style Try representing the priorities using an enum, so that you can change it (add more) later, if you needed to. -3%
Proper encapsulation You should make the next variable private, and expose it via public properties. -3%
(Failure to complete part of the assignment) You don't have a string field that stores the description of the problem -5%
Proper encapsulation You should make the description variable private, and expose it via public properties.  -2%
(Failure to complete part of the assignment) You don't have a field that stores the priority of the problem -5%
(unless they set up their code to make this unnecessary)
Modular Program Structure Add a Print method to the Node class, so you can write this once, and use this multiple times so that you don't spread the logic relating to an individual Ticket throughout the application -5%
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.

-2%
  Console Application
(
This is normally provided to the students, but if you want to make them write this up, here are some suggested grading points)

30

(Failure to complete part of the assignment)  This is missing entirely. -30%
(Failure to complete part of the assignment) Your user interface doesn't allow people to enter helpdesk tickets. -10%
(Failure to abide by the restrictions set forth in the assignment) Your user interface doesn't have two separate priorities for new tickets. -5%
(Failure to abide by the restrictions set forth in the assignment) Your user interface doesn't keep the two priority-classes of tickets separated, and organized first by high priority, from the user's point of view. -5%
(Failure to complete part of the assignment) Your user interface doesn't allow someone to view all the outstanding tickets. -10%
(Failure to complete part of the assignment) Your user interface doesn't allow someone to resolve the next ticket -10%
  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%
  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.   
  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)


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.