---
tags: cs1px, assessments
---
# CS1PX Semester 2020/2021
# Assessed Assignment Marking Scheme
This document at:
https://hackmd.io/@magicicada/B1K8you4d
## Specifics of tasks and mark breakdown
You should:
- choose a public dataset that is in .csv format
- If you find a dataset that is in, for example Excel format, it is fine to manually 'export' that to csv, and use that
- complete each of the following tasks
**Total marks possible: 75 marks**
Task A: Dataset and data structure ***(total 15 marks)***
Task A.1: **[4 marks]**
- 2 marks for properly describing the source of the data and any preprocessing done
- 2 marks for describing contents of each column including units if any
Task A.2: **[7 marks]**
- 1 point for any reasonable data structure
- 2 points for a description of the data structure
- 2 points for any reasonable justification of the data structure choice
- 2 points for the Python example of the data structure holding some data
Task A.3: **[4 marks]**
- 1 point for each of 2 other data structure examples
- 1 point for each of 2 other justifications for non-use
Task B: Reading in your data ***(total 15 marks)***
Task B.1: **[13 marks: 6 for functional code, 5 for error-checking, 2 for style and comments]**
- 6 points for functional code
- 1 point for correctly taking parameter and returning value
- 1 point for correct opening of file in Python
- 1 point for traversing file lines with loop or similar
- 1 point for parsing each line correctly
- 1 point for storing values as correct type for data structure (int, string, etc)
- 1 point for storing the information in the file in the data structure as specified in Task A
- 5 for error checking
- 1 point for appropriate choice of defensive error-checking
- 1 point for correct implementation of defensive error-checking
- 2 points for correct use of try/except blocking structure
- 1 point for dealing with caught exception (e.g. by reporting exception type with good error message, etc.)
- 2 for style and comments,
- 1 point for informative comments
- 1 point for informatively named variables
Task B.2: **[2 marks]**
- 1 point for description of defensive error-checking
- 1 point for description of try/except catching
Task C: Aggregation and subsetting ***(total 20 marks)***
Task C.1: **[9 marks]**
- 5 for functional code
- 1 point for defining function
- 1 point for appropriate parameter and return
- 1 point for traversal (or similar) of data structure
- 1 point for implementing subset condition correctly
- 1 point for storing the selected items from the dataset in the subsetted dataset to return
- 2 for error checking
- 1 point for choice of what to error-check (anything reasonable acceptable)
- 1 point for correctly implementing
- 2 for style and comments,
- 1 point for informative comments
- 1 point for informatively named variables
Task C.2: **[9 marks]**
- 5 for functional code
- 1 point for defining function
- 1 point for appropriate parameter and return
- 1 point for traversal (or similar) of data structure
- 1 point for implementing conditional of which items to include in aggregation (note: if student uses Task C.1 filter function or other helper functions this is fine - even better, really!)
- 1 point for correctly calculating the mean/average/other aggregation
- 2 for error checking
- 1 point for choice of what to error-check (anything reasonable acceptable)
- 1 point for correctly implementing
- 2 for style and comments,
- 1 point for informative comments
- 1 point for informatively named variables
Task C.3: **[2 marks]**
- 1 mark for correctly identifying type or format (e.g. as another data structure, dictionary, string, list, integer, etc)
- 1 mark for any good justification
Task D: Plotting ***(total 25 marks)***
Task D.1: **[8 marks]**
- 6 for functional code
- 1 point for correct function definition
- 1 point for taking a parameter correctly, or other interaction with dataset
- 1 point for correct traversal or other interaction with data structure
- 1 point for extraction of data for x-axis, y-axis
- 1 point for use of .plot or .scatter function
- 1 point for including axis labels, with units if appropriate
- 1 for code style, including informative comments
- 1 for any reasonable description of what plot shows: finding either a relationship or none is fine
Task D.2: **[8 marks]**
- 6 for functional code
- 1 point for correct function definition
- 1 point for taking a parameter correctly, or other interaction with dataset
- 1 point for correct traversal or other interaction with data structure
- 1 point for extraction of data for histogram
- 1 point for use of .hist function
- 1 point for including axis labels, with units if appropriate
- 1 for code style, including informative comments
- 1 for any reasonable description of what plot shows: finding either a relationship or none is fine
Task D.3 **[9 marks]**
- 6 for functional code
- 1 point for correct function definition
- 1 point for taking a parameter correctly, or other interaction with dataset
- 1 point for correct traversal or other interaction with data structure
- 1 point for extraction of data for histogram
- 1 point for use of chosen function
- 1 point for including axis labels, with units if appropriate
- 1 for code style, including informative comments
- 1 for any reasonable description of what plot shows: finding either a relationship or none is fine
- 1 for a justification of why the student has chosen that type of plot