Apply appropriate processes (design documentation and testing) and articulate the rationale for
design decisions throughout the process of developing a program.
2. Communicate own algorithmic solutions for complex programming problems using appropriate
notation.
3. Select and implement appropriate structures for file handling and error catching within a program.
4. Select and implement appropriate structures for data manipulation within a program.
5. Demonstrate knowledge of subject terminology and concepts, giving appropriate comparative
examples in specific contexts.

Task(s)
Design, implement and demonstrate a program to sort a dataset from a file in to ascending order using
three different algorithms. The program will time stamp the different algorithms to test the effectiveness
(timeliness) of the algorithms. The methods you should user are Insertion, Selection and Bubble sort.
The program should read from a file in to an appropriate data structure. The program should then use a
series of methods as discussed to sort the data and write it to another file in a sorted ascending format you
have chosen. The program will calculate the length of time it took each algorithm to process the sorts and
this information will be stored in another test file, which will not be overwritten only appended.
Extend the program to allow the user to select different files for sorting. Add a method to accept an
additional algorithm of your own design. Your algorithm will sort the dataset in to descending order again;
you will have to calculate run time. The program should continue to run until the user terminates the
program.
Design documentation (500 words plus designs):

2

All design documentation should be in a formal report format, with a clear introduction. Any research
undertaken or resources consulted should be discussed and/or presented in a bibliography. The designs
should be presented in the appendices and clearly referred to from the body of the text. The following
should be included:

• Identify any assumptions you have had to make (this is NOT information given in the brief)
• Discuss any research or resources you have used throughout the development, with
appropriate citations.
• Given the brief evaluate the program clearly identify any areas of the brief not achieved or
issues yet to be resolved
• A bibliography (all resources consulted)
• Formal design documentation in the form of use cases, Pseudo code and Flow-charts where
applicable to the scenario, (in the appendices). This should be as complete as possible and
reflect the final design. They main contain a number of elements that are not implemented.

Implementation:
The implemented program should demonstrate an appropriate use of programming concepts, as detailed
in the marking criteria. Credit will not be given for extending the brief or producing something unrelated.
All program files should include a clear header that includes at least the author’s name. The (main)
program name should be as specified in the brief. The code should be well structured and commented and
follow best practice. The majority of methods should demonstrate some form of effective testing
(commented out, output statements.
It is not expected that all designed elements be implemented; there should be a focus on demonstrating
the elements given in the marking criteria and the overall functionality of the application. However, the
implementation should NOT be significantly different from the design documentation (which should be
updated as work progresses).

Demonstration:
The program will be demonstrated to the module tutor, and in some instances a second marker. Where
the tutor will provide applicable test data, unless otherwise stated in the brief. Students will be expected
to explain specific aspects of their code and should do so using appropriate technical language. The
demonstration will take place during class on the 20 th April 2020.

Marking Criteria

Criteria Assessed Element Weighting
1. Insertion sort 10%
1. Selection sort 10%

3

1. Bubble sort 10%
2. Own Algorithm 20%
3. Main Program 20%
4. Report 30%
Total 100%

Assessment Criteria

A+/A/A-
1. All of the sorting algorithms have been correctly implemented and function as expected.
2. The descending algorithm is of an appropriate type, has been well documented in the report, and is
effectively implemented in the program.
3. The data is effectively drawn from the generated files and stored appropriately in the program.
4. The core program has been extended successful to enable user interaction and is only terminated
by the user.

4

5. The report presents the results of an effective set of experiments that test a range of different data
sets with all three sorting algorithms.
6. An appropriate and well-formed conclusion has been presented that is supported by the results.

B+/B/B-
1. All of the sorting algorithms have been correctly implemented and function as expected.
2. The descending algorithm is of an appropriate type and has been documented in the report
with some mistakes identified. The algorithm is implemented in the program however only
works in a limited way.
3. The data is drawn from the generated files and stored appropriately in the program, which is
mostly effective.
4. The core program has been extended to enable user interaction and is only terminated by the
user, however some aspects are not handled effectively.
5. The report presents the results of a set of experiments that test at least three different data
sets with all three sorting algorithms.
6. A conclusion has been presented that is supported by the results to some degree.

C+/C/C-
1. At least two of the sorting algorithms have been correctly implemented and function as expected.
The descending algorithm has not been implemented in to the final program. However, it is in the
design documentation.
2. The data is drawn from the generated files and stored appropriately in the program, which is
somewhat effective.
3. The core program has been extended to enable user interaction and is only terminated by the user;
however, a number of aspects are not handled effectively.
4. The report presents the results of a set of experiments that test at least two different data sets with
all algorithms implemented.
5. A conclusion has been presented that is supported by the results to some degree.

D+/D/D-
1. At least one of the sorting algorithms has been correctly implemented and functions as expected.
No descending algorithm exists in the program and is discussed in a minimal state in the report
and design documentation.
2. The data is drawn from the generated files and stored in the program, which is implemented in a
less than effective