Coursework
Coursework
Coursework 1 Submission date: 25th Oct 2024 via Moodle in Moodle by 17:00 hours GMT.
Coursework 2 Submission date: 8th Nov 2024 via CodeGrade in Moodle by 17:00 hours GMT.
Coursework 3 Submission date: 11th Dec 2024 via CodeGrade in Moodle by 17:00 hours GMT.
Contribution: Coursework 1 accounts for 10%, Coursework 2 for 20%, and Coursework 3 for 30% of the total coursework
mark.
Aim: To gauge understanding on the correct use of variables and objects, data types and the ability to abstract data; as
well as the develop students’ fluency in programming languages and software development.
Learning Outcomes: 1: Design, implement, test, and debug a program that uses each of the following fundamental
programming constructs – basic computation, simple I/O, standard conditional and iterative structures, the definition
of functions, and parameter passing. 2: Analyse and explain the behaviour of simple programs involving the
fundamental programming constructs – variables, expressions, assignments, I/O, control constructs, functions,
parameter passing, and recursion. 3: Identify the relative strengths and weaknesses among multiple designs or
implementations for a problem. 4: Use a programming language to implement, test, and debug algorithms for solving
simple problems.
Grading Advice: While fully functioning programs and its documentation that meet all the requirements are the goal of
the test, the programs and the rationale for their design, implementation, testing and debugging will be assessed for
efficiency, simplicity, creativity and good style. Please read the Grading Rubric and bring any questions you may have to
your tutor.
To complete this coursework, you will design the behaviour of simple programs involving the fundamental programming
constructs – variables, expressions, assignments, I/O, and control constructs.
PROBLEM DESCRIPTION
A university has hired our Software Development company to modernize their student assessment system. As we know,
universities evaluate students based on various components throughout the academic year. There are several aspects
to determining a student's overall performance, such as their attendance, coursework submissions, exam results, and
participation. The university administration wishes to implement a categorical marking system to provide more detailed
and standardized feedback to students. You have been tasked to create a program that automates this calculation and
categorization process.
For the Software Development 1 module, student performance is assessed through the following components:
You have been tasked to create a program that calculates a student's overall score for this module and assigns a category
based on the university's categorical marking framework. The program should take into account the weighted scores
from each component, calculate the overall score, and then map it to the appropriate category:
Example: If a student scores 58 in coursework 1, 65 in coursework 2, 55 in coursework 3, and 72 in the final exam,
their overall score would be calculated as:
(58 * 0.10) + (65 * 0.20) + (55 * 0.30) + (72 * 0.40) = 5.8 + 13 + 16.5 + 28.8 = 64.1
This would be rounded to the nearest category, which is 65, placing the student in the "Upper Second" category
- If the overall score is equal to 100, the output should be "Aurum Standard".
- If the overall score is between 82 and 92, the output should be "Upper First".
- If the overall score is between 72 and 78, the output should be "First ".
- If the overall score is between 62 and 68, the output should be "2:1".
- If the overall score is between 52 and 58, the output should be "2:2".
- If the overall score is between 42 and 48, the output should be " Third”.
- If the overall score is between 32 and 38, the output should be " Condonable Fail".
- If the overall score is between 5 and 25, the output should be "Fail".
- If the overall score is 0, the output should be "Defecit Opus".
https://moodle.roehampton.ac.uk/pluginfile.php/4731975/mod_resource/content/1/LTQC%2088.19%20Categorical%
20Marking%20Frameworks%20UG%20PG%20.pdf
COURSEWORK 1
Draw a flowchart that you will use for your program design (the detailed program description is specified in Coursework
2). You can write it down/draw it by hand and take a picture or choose any software you prefer.
Submission Requirements: Please submit a PDF file containing your flowchart on Moodle.
COURSEWORK 2
There are two tasks you need to complete for this coursework:
Task 1. Following the flowchart you designed for Coursework 1, craft a program in Python which has the features listed
below:
a. You program should use the input() function that includes message text to instruct the user to enter each
student’s data.
b. Use an appropriate data structure to create and store this dataset, which contains the student’s ID, and
overall score.
c. Your program calculates the overall rate for each player, using the four main criteria described above
(coursework 1, coursework 2, coursework 3 and final test)
d. Your program should estimate the suitable category for each student by using the category dataset provided.
For instance, if the overall score of the player is between 72 and 78, the output should be:
72- First
Task 2: Write a brief reflection on your code (~500 words), which may include but not limited to the discussions about
topics below.
Marking Scheme: A short video explaining the assessment criteria can be found at:
https://www.youtube.com/watch?v=JrA0Dotq1p8
Design The solution design The solution design Not all of the Few if any of the
decomposes the generally uses selected structures selected structures
ability to decompose problem by using appropriate are appropriate. are appropriate, or
a problem into appropriate structures. Program Some of the the problem is
coherent and structures. The elements and elements are decomposed in ways
reusable parts. overall design is documentation both appropriately that make little sense.
appropriate, and exhibit good design. designed.
with a consideration
of reusability.
Correctness Solution produces Solution produces Solution approaches Solution does not
correct answers or correct answers or correct answers or produce correct
ability to create appropriate results appropriate results appropriate results answers or
solution that reliably
for all inputs tested. for most inputs. for most inputs but appropriate results for
produces correct
can contain most inputs.
answers or
miscalculations.
appropriate results.
Robustness Solution handles All obvious error Some obvious error Solution often fails or
erroneous or conditions are conditions are fails completely.
ability of the solution
unexpected input checked for and checked for and Boundary conditions
to handle gracefully; action is appropriate action is some sort of action are not tested for.
unexpected input taken without taken. Nearly all is taken. Most
and error conditions surprising the user. boundary cases are boundary cases are
correctly as Boundary cases are considered and considered and
evidenced via considered and tested. tested.
testing. tested.
COURSEWORK 3
To complete this coursework, you will design the behaviour of complex programs involving the fundamental
programming constructs – functions, operations, and file reading/writing. A template Jupiter notebook and a text file
are provided to complete the tasks. Time in class can be used to troubleshoot and get feedback on your program.
The university that hired our Software Development company is very pleased with the outcome of Coursework 1 and has
requested an extension. The program that you have crafted for Coursework 1 takes in scores for 4 components of student
assessment in the Software Development 1 module:
The program uses these individual component scores to calculate an overall score out of 100 using the formula:
The resulting number (should be between 0 and 100) is then used to estimate the category using the categorical marking
dataset:
Category
No Overall rate
Aurum
1 100
Standard
2 Upper First 82-92
3 First 72-78
Upper Second
4 62-68
2:1
Lower Second
5 52-58
2:2
6 Third 42-48
Condonable
7 32-38
Fail
8 Fail 5-25
9 Defecit Opus 0
- If the overall score is equal to 100, the output should be "Aurum Standard".
- If the overall score is between 82 and 92, the output should be "Upper First".
- If the overall score is between 72 and 78, the output should be "First ".
- If the overall score is between 62 and 68, the output should be "2:1".
- If the overall score is between 52 and 58, the output should be "2:2".
- If the overall score is between 42 and 48, the output should be " Third”
- If the overall score is between 32 and 38, the output should be " Condonable Fail".
- If the overall score is between 5 and 25, the output should be "Fail".
- If the overall score is 0, the output should be "Defecit Opus".
2. Input expansion (8 points): Adjust your program to ask users to enter a student ID (2-digit number), name and date-of-
birth (D.o.B) by sequence, before asking for the 4 component scores from Coursework 1 (Coursework1, Coursework 2,
Coursework 3 and Final Exam). D.o.B should be in ISO format YEAR-MONTH-DAY.
3. Loop your code (8 points): Your program should use a loop to ask for the information of three students, or until the input
for user ID is "end".
4. Calculate the students' overall scores and store them for later use (2 points).
5. Determine the students' categories and store them for later use (2 points).
6. Calculate students' ages (8 points): According to each user's year of birth, your program should calculate the age of the
student and store it for later use. Hint: the library datetime can be used here to make your job easier.
7. Tabulate (8 points): Display a table that summarises the input data (ascending order with user ID) using the tabulate library.
It should look like:
8. File writing (8 points): Save the table into a new local file named "students.txt"
9. Make sure that you: a. Implement robust input validation for a student's ID, D.o.B., and scores. Your program should give
a. Warning that says "The input you entered was invalid" for any input errors (6 points)
b. Display use of appropriate data structures for storing student information (5 points)
c. Display use of appropriate code structures for implementing the functionality (5 points)
10. Implement a function called `round_to_category(score)` that takes a numerical score and rounds it to the nearest
category. This function should (10 points):
For example:
- If the input score is 73.7, it should return (75, "First") because 73.7 is closer to 75 than to 72.
- If the input score is 69.2, it should return (68, "2:1") because 69.2 is closer to 68 than to 72.
Your implementation should handle edge cases, such as scores exactly halfway between two categories (round up
in these cases), and scores at or beyond the extremes of the scale.
UID Name D.o.B Age Raw Score Rounded Score Category
11. Distinction Advanced Function: Once everything in requirements 1-10 has been completed, for a distinction grade, extend
your program with one more function called advanced(). This function should:
a. Be a complimentary main() method that, instead of taking user input, uses the provided file as input.
b. Accepts in its argument (filename) the name of the text file to read.
c. Read the student information record from the provided file "StudentData.txt", which contains student IDs, names,
and date-of-births. The function should then use this data as the input for the program.
d. ll all the other functions used and produces a text file output (requirement 8).
12. Advanced Generalization Function (Distinction level): Implement a function called `setup_module()` that allows the user
to define the assessment criteria for any module. This function should:
Welcome to the Student Grading System First, let's set up the module configuration.
Results:
UID | Name | D.o.B | Age | Raw Score | Rounded Score | Category
-----|--------------|----------------|------ |---------------|---------------------|---------
01 | John Doe | 1995-05-15 | 28 |82.6 | 82 | Upper First
Submission Requirements: Submit your code via Codegrade as a Jupyter notebook named:
student_category.ipynb
The program file should contain full documentation explaining your implementation (comment your code). Your file
should have your name, ID number and date of last update.
Marking Scheme: Grades will be based on number of components completed. You will be assessed on
• Solution: the completeness of the code, documentation, and reflection to meet the specification given.
• Design: ability to decompose a problem into coherent and reusable parts.
• Correctness: ability to create solution that reliably produces correct answers or appropriate results.
• Logic: ability to use correct program structures appropriate to the problem domain.
• Clarity: ability to format and document code for human consumption (PEP-8) and reflection.
• Robustness: ability of the solution to handle unexpected input and error conditions correctly as evidenced via
testing.
Basic Requirements
In order to get full marks for this rubric category your code must:
Intermediate requirements
In order to get full marks for the rubric category your code must:
- Implement robust input validation for a student's ID, D.o.B., and overall score (6)
- Display use of appropriate data structures for storing student information (5)
- Display use of appropriate code structures for implementing the functionality (5)
Distinction Requirements:
Academic Misconduct: All submissions will be processed through a code plagiarism tool. If signs of misconduct are
found, all students involved will be contacted to discuss further steps. Please see here for information on academic
integrity at the university https://portal.roehampton.ac.uk/information/Pages/Academic-Integrity.aspx.
Our guiding principle is that academic integrity and honesty are fundamental to the academic work you produce at the
University of Roehampton. You are expected to complete coursework which is your own and which is referenced
appropriately. The university has in place measures to detect academic dishonesty in all its forms. If you are found to
be cheating or attempting to gain an unfair advantage over other students in any way, this is considered academic
misconduct and you will be penalised accordingly. Please don’t do it.