CITS1401 Project 1 marking guide
Semester 1, 2020
There are 22 marks for functionality which are divided into 5 output test cases. Each test
case checks each output with two different files. The third file has got duplication of row
to test the error state. Marks for each test case are mentioned in the test cases mentioned
below. 100% matching solution will get full marks.
The marks distribution is provided in the project sheet which is: x/22 (test) + x/5 (style)
+ z/3 (efficiency).
If output is not returned in proper format as required and simply printed then deduct 4
marks and grade it accordingly. This may be in addition to marker’s intervention to fix
student’s code.
Output test cases:
1. Minimum (3 marks)
If both outputs of test files match then assign 3 marks, else
If one output of test file match then assign 1.5 marks, else
If half of the list values for output to test files is correct then assign 0.5 mark per
file to maximum marks for this will be 1 mark.
2. Maximum (3 marks)
If both outputs of test files match then assign 3 marks, else
If one output of test file match then assign 1.5 marks, else
If half of the list values for output to test files is correct then assign 0.5 mark per
file to maximum marks for this will be 1 mark.
3. Average (4 marks)
If both outputs of test files match then assign 4 marks, else
If one output of test file match then assign 2 marks, else
If half of the list values for output to test files is correct then assign 1 mark per file
to maximum marks for this will be 2 marks.
4. Standard deviation (4 marks)
If both outputs of test files match then assign 4 marks, else
If one output of test file match then assign 2 marks, else
If half of the list values for output to test files is correct then assign 1 mark per file
to maximum marks for this will be 2 marks.
5. Correlation (8 marks)
If both outputs of test files match then assign 6 marks, else
If one output of test file match then assign 3 marks, else
If half of the list values for output to test files is correct then assign 1.5 mark per
file to maximum marks for this will be 3 marks.
There are 2 marks dedicated for handling the error state that if two or more rows
in the file are identical. The error state may be handled anywhere in the project
and can be linked to correlation only because it creates problem in correlation
calculations only. There is a sample_tester3.csv file provided for testing the error
state.
Style and efficiency:
NOTE: Marker had the discretion to make the final decision. Below are few guidelines
only.
• Style (5/8) which involves intuitive variable and function names, consistent
indentation, comments, etc.
o Default is 5.
o Deduct 1 mark if person’s name, student id and I/Os are not in the file.
o Deduct 2 marks if scant comments are provided.
o Deduct 1 mark if different functions are not created for each task.
o Deduct 1 mark if intuitive variable and function names, consistent
indentation features are missing.
• Efficiency (3/8):
o Assign 3 marks here if program is extremely efficient.
o Deduct 1 mark if readline() function is used in a loop or file is opened
multiple times or any other issues which slow I/O process.
o Deduct 1 mark if code include repeated blocks instead of loops or code has
more loops than necessary.
o Deduct 1 mark if program has extra instructions which could have been
combined or unnecessary variables or functions are created.
It student’s code does not run then deduct 4 marks for intervention. If marker can see a
quick fix and feel so inclined, please make the fix, run the code and get a run-time tests
mark and deduct 4 marks otherwise grade the submission zero as it cannot be executed.
If student has imported any module then comment it out and run the code and grade it
accordingly. It will probably not run if module’s functions are used and will result in zero
grade.
Results for tester files:
# sample_tester1.csv
>>> rmn1,rmx1,ravg1,rstd1,rcor1 = main(‘sample_tester1.csv’)
>>> rmn1
[0.0, 6.0, 3.0, 5.0, 1.0, 7.0, 9.0, 2.0, 262.0]
>>> rmx1
[55000.0, 96.0, 92.0, 92.0, 96.0, 97.0, 94.0, 12312.3123, 55415.0]
>>> ravg1
[1881.2667, 53.2333, 61.7333, 54.6333, 57.2333, 55.0, 50.5, 453.3104,
2666.9104]
>>> rstd1
[9863.951, 24.5678, 25.737, 26.1731, 31.6014, 27.3496, 23.8841, 2202.364,
10035.3518]
>>> rcor1
[0.2516, 0.1586, 0.3904, 0.2218, 0.2231, 0.3864, 0.3633, 0.4977, 1.0]
# sample_tester2.csv
>>> rmn2,rmx2,ravg2,rstd2,rcor2 = solution.main(‘sample_tester2.csv’)
>>> rmn2
[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 232.0]
>>> rmx2
[100.0, 100.0, 99.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0,
744.0]
>>> ravg2
[49.3596, 52.2076, 48.6959, 50.6345, 48.731, 50.0117, 51.9269, 50.6345,
47.8801, 52.0906, 502.1725]
>>> rstd2
[29.9966, 29.5841, 29.5918, 28.7537, 29.7585, 28.967, 28.7793, 29.5828,
28.2589, 28.7008, 89.6204]
>>> rcor2
[0.3413, 0.292, 0.2689, 0.2882, 0.3312, 0.3803, 0.3303, 0.3241, 0.2001,
0.2894, 1.0]
# sample_tester3.csv
>>> rmn1,rmx1,ravg1,rstd1,rcor1 = main(‘sample_tester3.csv’)
#Program should gracefully terminate after showing the error state