: Category Mistake Penalty Implementing the ListOfTickets class Remove: Don’t create a new object just to remove the first one in the list. Instead, return the object that’s already there -5 This looks basically good, except that you’ve got lots of duplicated code. If the ListOfTickets were to manage a single list then Helpdesk could create two of them and it could ‘route’ actions to the appropriate queue. Try refactoring your code to do this – it’ll end up much cleaner! -10 Looks good, overall Implementing the Helpdesk class Have AddTicket(string x,Priority p) just call AddTicket(Ticket t) (to avoid duplicating code) -3 Very nice work – it’s very clean and clear. It might be nicer to have a separate class to manage a queue of tickets, so that instead of duplicating code for the high / low priority cases you can just have the CHelpdesk class call the right method on the right queue. Definitely don’t worry about doing a revision, but it’s something to think about Correctness Make the Priority an enum, not a class. -3 Technically, you’ve implemented a stack, not a queue, of tickets -22 Make sure to properly encapsulate all your classes – all data fields should be Maintainability marked private (normally), or public/protected (if you’ve got a good reason) -3 Maintainability Make sure to properly encapsulate all your classes – instead of using public data fields, using private ones, with accessor properties and/or accessor methods (for example, on the LinkedListNode class). -3 (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) In order to do this, you may need to maintain a reference to the last item in the list -15 (Failure to abide by the restrictions set forth in the assignment) You should be able to modify the linked list class so that adding 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) In order to do this, you may need to maintain a reference to the last item in the list -15 You’ve got two versions of Helpdesk.AddTicket, which is fine. Figure out a way to have one of them call the other one, so that you’re not duplicating as much code. -3 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 Maintainability 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) -7 Please include all code that was provided to you, in a form that’s easy to run. Specifically, please include any unit tests, and set things up so that they can be run quickly & easily. -7 (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? -2 (per test that fails) The ‘ListOfTickets_TEST’ code should be run on the JobQueue, not the Helpdesk. Looks good, overall Style / Presentation Looks good 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 revisionf number) Grade (out of 130): To calculate your grade: add up all the (-1)'s and (-6)'s and (-X)'s, to get some negative number, then take that from the total to get your grade. For example: If the total points available for the assignment was 100, and you had the following penalties: -3 + -6 + -6 -15, so the grade would be 100 -15 = 85. Why do you have to do this? Because this is only version 1, and so you won't really get your 'real grade' until you hand in the revision. Sometimes the grade on this first version appears really low (especially if you left out a whole section), and so I want to give people feedback, but try to avoid spooking people. Keep in mind that if you don't hand in a revision, this will be your final grade. Note: Please note that if any of the above errors are duplicated within your code, you need to fix ALL INSTANCES of the error, even if it's not specifically listed above, in order to get the points on the revision. -6 Note: While the above list of errors is intended to guide your improvement of this homework, you should realize that a given error may occur in more places than have been specifically cited here. It is your responsibility to find all occurrences of a given error, and fix them all. Note: Items that are 'greyed out' don't count (i.e., the item is there for informational purposes, to preemptively give you feedback for your revision), but these don't actually represent points that you've lost. Example of a 'greyed out' item: You didn't do X. (-3 )