COMP 2012H Honors Object-Oriented Programming and Data Structures

Assignment 2 Grade checking and appeal

Introduction

  1. Check the assignment 2 grade and remarks HERE. It also shows you which test cases you failed and why marks were deducted.
  2. If you want to appeal your grade, you MUST first read everything on this page, follow all the procedures, and try the test cases yourself. Your appeal will not be processed if you don't follow this rule.
  3. Uninitialized variables will have garbage (random) values in C++. Sometimes it will be 0, sometimes it will not. In that case, your program may generate different results on different machines or different runs if your logic depend on an uninitialized value. If you assumed them to be 0 or something specific (e.g. a very large value), your code is faulty and will get random results.
  4. If your function doesn't have a return statement for some cases, the returned value is undefined / can be random for those cases.
  5. Retrieving values from deleted/unallocated dynamic memory block may not always crash your program but may give random values.
  6. Runtime errors and crashes due to incorrect memory access / memory allocation / memory deallocation / missing variable initialization / missing return values / out-of-bound array access / etc. may not occur all the time on all machines. However, even you may not encounter the error/crash when you test your program, if your program crashes during any of our testing on some machine, the corresponding test cases will be considered as failed and will receive 0 marks as your code is indeed faulty.
  7. If the remarks say that your test case output is empty ("") or a potential runtime error occurred, it is very likely that a runtime error happened when we tested your program for that test case in some machine. Refer to the previous comments for possible causes. Verify your code to make sure they aren't faulty and won't produce any runtime error before you appeal those cases. Compare your solution with the sample solution yourself if needed, but please understand that it is not feasible for us to review all the assignment code of everyone to point out where all the subtle bugs are. We can run the test cases again for you (after you have verified them yourself), but all grading shall be done objectively in an automatic and consistent way. However, if your program crashed or give unreliable results, it is guaranteed that the problem is somewhere in your code, and marks will be deducted.
  8. If you passed zero test cases on some Task, it may well mean that I comment out the testing for this Task since it causes segmentation fault or gets stuck over several hours. Feel free to contact us to ensure what is your case.
  9. If you passed zero test cases on several consecutive Tasks, it may well mean that the testing terminated early since it causes segmentation fault or running time errors. Feel free to contact us to ensure what is your case.
  10. There is no scores for submssions which cannot be compiled. Feel free to contact us to check the reasons case by case.
  11. Our official assignment compilation environment is Eclipse and it is mentioned in the assignment instruction that "It is required that your program can be compiled and run successfully in the pre-installed Eclipse environment on our lab machines.". Except for the Stock_skeleton_full_declarations, we do not use any other header files. Therefore, it is very important for you to make sure that your program can compile with those files in their original unmodified states."
  12. If you are certain that there is a grading mistake after reading this whole page and checking with the subtasks.zip (test cases), email us with the following information. Appeals with incomplete information will not be processed.
  13. Do not attach any .exe/executable file in the email. The code snippet and results snapshot are fine.
  14. Appeal deadline is November 20, 23:59. No late appeals will be processed.
  15. Due to the large number of students that we have, please allow up to 48 hours for your appeal email to be processed and replied. If you do not receive a reply in 48 hours, please re-send your email.
  16. Finalized scores will be uploaded to canvas after all appeals are processed.

Marking scheme

There are total 61 test cases for 27 tasks with full 80 points. The grading schemes are shown below in detail:

Grading Scheme

One typical grading report is as follows:


# Grading Report for Student Name [73/80]

+ Subtask #1: (createStockNode)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #2: (createHeadNode)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.
1;2c
+ Subtask #3: (getStockId)
	+ [2/2] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #4: (getTopValue)
	+ [2/2] | 4 tests, 4 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.
		- Test #4: Passed.

+ Subtask #5: (getValueAt)
	+ [2/2] | 4 tests, 4 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.
		- Test #4: Passed.

+ Subtask #6: (getTopNext)
	+ [2/2] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #7: (getNextAt)
	+ [2/2] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #8: (getTopUpdate)
	+ [2/2] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #9: (getUpdateAt)
	+ [3/3] | 3 tests, 3 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.

+ Subtask #10: (push)
	+ [2/2] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #11: (pop)
	+ [3/3] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #12: (createSnapshot)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #13: (stampSnapshot)
	+ [4/4] | 4 tests, 4 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.
		- Test #4: Passed.

+ Subtask #14: (add)
	+ [6/6] | 6 tests, 6 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.
		- Test #4: Passed.
		- Test #5: Passed.
		- Test #6: Passed.

+ Subtask #15: (remove)
	+ [6/6] | 3 tests, 3 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.

+ Subtask #16: (set)
	+ [4/6] | 3 tests, 2 passed.
		- Test #1: Failed.
		- Test #2: Passed.
		- Test #3: Passed.

+ Subtask #17: (undo)
	+ [6/6] | 4 tests, 4 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.
		- Test #4: Passed.

+ Subtask #18: (getValueAt)
	+ [3/3] | 3 tests, 3 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.

+ Subtask #19: (createSnapshotNode)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #20: (createDatabase)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #21: (needToStamp)
	+ [1/1] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #22: (add)
	+ [4/4] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #23: (remove)
	+ [4/4] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #24: (set)
	+ [4/4] | 2 tests, 2 passed.
		- Test #1: Passed.
		- Test #2: Passed.

+ Subtask #25: (getValueAt)
	+ [3/3] | 3 tests, 3 passed.
		- Test #1: Passed.
		- Test #2: Passed.
		- Test #3: Passed.

+ Subtask #26: (stamp)
	+ [3/3] | 1 tests, 1 passed.
		- Test #1: Passed.

+ Subtask #27: (reconstruct)
	+ [0/5] | 1 tests, 0 passed.
		- Test #1: Failed.

When you passed a test (marked with '1') then you got the corresponding points for this test; otherwise there is no points when failed (marked with '0').

For exactly how each test case is performed, please refer to the testing main function which can be found in the next section together with the testing instructions.

Trying the test cases

  • Use our official compilation environment (i.e. Windows Eclipse in the lab machines)
  • Create a standard C++ project that uses the MinGW compiler
  • Download and extract the files in this TEST package (subtasks).
  • Add all the extracted files to the project under a package/folder "subtasks"
  • Put the header files ONLY from the Stock_skeleton_full_declarations to the project
  • Add your own cpp files to the project
  • Compile and run with the grader wrappers grader.cpp and GradeAllFiles.cpp
  • For the convenience, the test_wrapper.zip contains all files and path configurations to run the testing procedures.
  • Check the output and read the code of each test case to understand what is being tested. The test cases are self-contained in the main function for each subtask cpp file.

Read all assignment instructions again before appeal if you disagree with any of the expected output.

Sample solution

Since the test cases are self-contained in the main function for each subtask cpp file (see test_wrapper.zip), there are no standard solutions to implement.

Stats (for submitted works only)

Total = 80.00; Mean = 63.25; SD = 20.47
Normalized to 100.0; Mean = 79.05; SD = 25.56

Note


We will perform plagiarism checking at a later time and marks could be adjusted for those who are caught.

Page maintained by
Homepage