实现一个Assessment System, 自由度较高。
Assessment Instructions
What do you need to do for this assessment?
Task:
You are required to develop and test a Python program and then write up a
report about your solution.
Students should complete the task based on the scenario chosen and provide
evidence to meet all the criteria. Evidence must be provided to show key
elements of this assessment:
- Analysis of the scenario and the application of computational thinking skills.
- Technical understanding of the data structures, algorithms, functions, and data types.
- Development of a programming solution in Python.
- The testing and evaluation of the solution during the development process and at the end of the development.
The following sections should be included in the report submitted:
- Analysis
- Design (Using an algorithm)
- Technical Overview
- Developing the codded solution
- Testing to inform development
- Testing to inform evaluation
- Evaluation of Solution
- References
It is recommended that you consult the marking rubric and marking check list
to identify the weighting that goes with each of the categories and the scores
for each category. This page and the following page contain a short
description of what each of the sections.
Analysis
The analysis section should contain an analysis of the scenario which is being
worked on. In this section students should identify what is important about
the scenario. It is important that this section contains a set of success
criteria which indicate what features the solution should have and can be used
later in the report to assess how well the final program fulfils the success
criteria. In this section students should consider the requirements that all
stakeholders have and anticipate any likely features that are complimentary to
the ones identified in the scenario. The analysis can also draw upon research
into other applications and into the needs of the stakeholders.
Design (Using an algorithm)
The design section should include a description and representation of the
algorithms that are going to be used in the making of the final project. The
algorithms that are designed should be represented using either flowcharts or
pseudocode, and the correctness and completion of these representations will
be considered in the awarding of marks. If there are elements that are key for
the final program missing from the representations of the algorithms this will
negatively impact this section. Hence, it is recommended that these algorithms
be as complete as possible and contain comments where appropriate.
Technical Overview
The technical overview section should contain a detailed description of the
data structures, programming techniques and methods used in programming the
final solution. This means that students should identify and describe the use
of things like iteration, selection, and the use of sub functions in the code
(built in Python functions or ones that are defined in the code). It also
means that students should describe the nature of the data structures that are
used in the project. In other words, the variable ‘name’ should be identified,
and the type of data should be given (i.e., a string) and the purpose of that
variable should be identified. The same should be done for complex data
structures. It is also recommended to include a justification for the use of
the type of variable for storing the data in the program.
Developing the codded solution
This section should contain a complete list of the final python code, and that
code should contain comments which describe that code. If there are elements
in the final Python project which are not planned in the design section or
technical overview, this will likely reduce the grade awarded. The omission of
an explanation for the use of programming techniques indicates that the
student may not fully understand the reason for using such programming
techniques. If the student has used code from other sources such as the
internet or a textbook, the code should be cited, and a reference should be
included at the end of the report.
Testing to inform development
This section should contain a description of the testing that went on during
the development of the solution. Testing is an important part of the
development process. For example, if data is to be stored in a text file for
use in the program, the function for storing and retrieving the data from the
file needs to be tested for it to work within the program as expected. It is
also recommended that this section contain a description of how any code was
changed to fix any problems encountered. Therefore, it is important that
students record the changes that they have made to the code.
Testing to inform evaluation
This section should contain a description of the systematic testing of the
final project that is produced. It is recommended that the students use the
success requirements identified in the analysis part of the report to direct
their testing, although testing should not be limited to those areas
identified in the analysis. Through the testing it is important that students
assume that the user will not always input the required information or the
required type of information into the program. The program should not fail or
stop if the user does not enter the required data in the correct format so it
is important for the student to test for edge cases and type errors etc that
would raise exceptions or stop the program running as expected.
Evaluation of Solution
In this section the final solution should be evaluated against the scenario
that was presented to the student and against the success criteria that was
identified in the analysis section of the report. The evaluation should draw
upon the analysis section and consider the needs of all the stakeholders. The
evaluation should also consider possible additions to the program that would
add additional features or functionality that would be complementary to the
program.
References
A list of references that are in the Harvard referencing style should be
provided along with citations in the text of the report to reference the
materials used in the project.
Guidance
For this assessment you should make use of the following formative activities
and summative assessments that you have already completed. These activities
have been designed to support this summative assessment:
- Programming Assignment Part 1 Feedback
- Formative Assessments for topics in the Programming and Computational Thinking Themes.
Please note:
This is an individual assessment so you should not work with any other
student.
Your tutor will also ask for a draft copy of your report and provide written
feedback.
Before you submit this assessment, you will have an opportunity to receive
feedback from your peers (other students in the class). Your tutor will
arrange a time for you to share and discuss your progress with your
classmates. You do not have to act on their feedback, but you may find it
useful to enhance your final submission.
The task has been designed to encourage you to develop more sophisticated
programs which can showcase your programming skills and allow you to develop
more complex algorithms. The complexity and originality of your work will be
considered in the awarding of a grade for this piece of work.
Program Specification
Robert works in the admin department for an international college. He has been
asked by the manager to create a program to manage the results from the
students’ assessments. The system should be used by both students and
teachers. Each student has a unique identifier which can be used to identify
the students in the college.
Robert wants to create a user interface that allows him to log into the system
and carry out the necessary administration such as add assessment results etc.
Storage
It is recommended that the assessment management system should store at least:
- Unique username and password for students and teachers.
- User status (i.e., If the user is a teacher or a student).
- Student Name (First name and Surname) the courses they are on and their scores.
- Course information and a list of the breakdown of the assessments on the course.
- Assessment information for individual assessments as well as the combined total for their course.
However, the possibility of storing other data can improve the functionality
of the program.
Minimal Requirements
You have been asked to analyse the requirements for this system and design,
develop, test, and evaluate a program that allows Robert to at least:
- Login with a username and password.
- Access a menu system (for example to login as a student, or teacher, then check score etc.)
- Enter and store assessment information.
- Log out.
- Retrieve and display the details of a particular student.
- Create at least two different reports that Rob might need and describe how he would use each one.
- Produce these reports when selected from a menu.
As the designer of the application, it is your responsibility to add
functionality to the program which you can justify according to the scenario.
In other words, this specification page details the minimum requirements for
the programming project. The final solution will be awarded marks based on the
complexity and the use of programming techniques that are developed on the
course. You are recommended to go beyond this specification and try to
showcase your programming skills and technical understanding.
Note for students:
To test this program, you will need a data file containing the details of at
least 20 students and their assessments. You are free to invent courses and
assessments for those courses, but they must be applied consistently across
the system.
Structure
Your report must include a Title page, contents page, page numbers and
declaration of ownership.
There is no word count for the assignment, but there are some guidelines for
each section:
Section 1: Analysis
The analysis needs to be no more than one page of text.
Section 2: Design (Using an algorithm)
The design of the algorithm can take up multiple pages.
Section 3: Technical Overview
It is recommended that this should be a detailed description which can take
multiple pages.
Section 4: Developing the codded solution
This section will contain all code and will take up multiple pages.
Section 5: Testing to inform development
This section will contain a detailed description of the testing during the
development process and will take up multiple pages.
Section 6: Testing to inform evaluation
This section will contain a detailed description of the testing of the final
project and will take up multiple pages.
Section 7: Evaluation of Solution
This section will contain an evaluation of the final program that has been
produced. It can contain multiple pages.
Section 8: References
Theory and/or task resources required for the assessment
You will need to use the Python programming language for this assignment. This
will be available on the university computers and can also be downloaded and
installed free of charge to your home PC/laptop.
Your tutor will advise you on this.
Referencing style
As well as any literary references you should include references to any Python
code that you have used that is not sourced from the taught material (e.g.
labs/lectures). Code references MUST BE referenced within the code e.g.
The following 3 lines of code were taken from [
https://stackoverflow.com/questions/2960772/how-do-i-put-a-variable-s-value-
inside-a-string-interpolate-it-into-the-string
](https://stackoverflow.com/questions/2960772/how-do-i-put-a-variable-s-value-
inside-a-string-interpolate-it-into-the-string)
Or
The following lines of code were adapted from [
https://stackoverflow.com/questions/2960772/how-do-i-put-a-variable-s-value-
inside-a-string-interpolate-it-into-the-string
](https://stackoverflow.com/questions/2960772/how-do-i-put-a-variable-s-value-
inside-a-string-interpolate-it-into-the-string)
Expected word count
There is no word count for this assessment.
Learning Outcomes Assessed
- Identify the following accurately: integer, real/float, Boolean, character, string, date/time, records (or equivalent), arrays (or equivalent)
- Demonstrate a theoretical understanding of conditions and iteration structures.
- To use abstractions in programming languages such as functions and define our own functions.
- To apply the fundamentals of numerical data and data storage to computational data.