代写 data structure decision tree C graph Excel algorithm Assignment 3 Individual Coursework Brief

Assignment 3 Individual Coursework Brief
Module name: Computational Thinking
Module code: MSIN0023
Module leader name: Andrew Whiter
Academic year: 2019/20
Term 1, 2 or 3: Term 1
Nature of assessment – individual or group: Individual

Content of this coursework Brief
Section
Content
A
Core information
B
Coursework brief and requirements
C
Module learning outcomes covered in this assessment
D
Assessment of this coursework
E
Groupwork instructions (if applicable)
F
Additional information from module leader (if applicable)


Section A: Core information
This assessment is marked out of
100 marks
% weighting of this assessment within total module mark
60%
Word count/page length – maximum
The maximum word count for this assignment is 2000 words.

Footnotes, appendices, tables, figures, diagrams, charts included in/excluded from word count
Footnotes are included in the word count, as well as any substantive text in any tables, figures, diagrams, or charts.

The code appendix is excluded from word count.
Bibliographies, reference lists included in/excluded from word count
Bibliographies are excluded from the word count.
Penalty for exceeding word count/page length
Yes – 10 percentage points deduction, capped at 40% for Levels 4,5, 6, and 50% for Level 7. Refer to Academic Manual Section 3: Module Assessment – 3.13 Word Counts.
Academic misconduct (including plagiarism)
Academic Misconduct is defined as any action or attempted action that may result in a student obtaining an unfair academic advantage. Refer to Academic Manual Section 9: Student Academic Misconduct Procedure – 9.2 Definitions.
Submission date
17 February 2020
Submission time
10am UK time
Penalty for late submission
Yes. Refer to Academic Manual Section 3: Module Assessment – 3.12 Coursework Deadlines & Late Submissions.
Submitting your assignment
The assignment MUST be submitted to the module submission link located within this module’s Moodle ‘Submissions’ tab by the specified deadline.
Anonymity of identity
All assignments are anonymous (unless the nature of the assessment e.g. video, presentation, group work with minutes attached, is such that anonymity is not possible). Accordingly, students should NOT include their name, student ID number or candidate number (or any other identifying information) anywhere on the assignment or in the saved file name.
  
The nature of this assessment is such that anonymity is required.

Return and status of marked assignments
At the latest this will be within 4 weeks from the date of submission but we will endeavour to return it earlier than this.
Assessments are subject to double marking/scrutiny, and internal quality inspection by a nominated School of Management internal assessor. All results when first published are provisional until confirmed by the relevant External Examiner and the Examination Board.
No appeals regarding your published mark are available until after confirmation by that Examination Board.


Section B: Coursework Brief and Requirements

The requirements of this project are as follows:

Introduction:
Consider a problem we have covered from this module or from any other module (e.g. Data Analytics and MFoM) involving non-trivial algorithms. You are also free to consider any other algorithmic topics we may not have covered e.g. image-processing. The problem should relate to a management problem or business-idea that requires the use of algorithms.
A non-trivial algorithm will be will involve loops and be of at least linear complexity. The more complex your algorithm the more opportunity you will have to demonstrate increased understanding and more sophisticated analysis, providing enhanced potential of a good grade.
You may wish to continue with the same algorithm/problem you presented in your Assignment 2 essay or choose a different algorithm or problem.

Example algorithms:
Here are some examples of non-trivial algorithms you could consider:
• Data Analytical Classification algorithms including Decision Tree Induction and Nearest Neighbour
• Data Analytical Clustering algorithms including Hierarchical Clustering and K-Means Clustering
• Matrix Row Reduction algorithm to solve systems of simultaneous equations or to find inverse matrices
• Simplex Linear Programming algorithm
• Search and graph analysis algorithms, including shortest-path algorithms
• Exhaustive Enumeration and Greedy/Heuristic Algorithms for any NP-Complete problem (eg travelling salesman, knapsack packing problem, wedding banquet seating …)

Report Format and Structure:
The main body of your report has a word count limit of 2000 words, consisting of a number of sections, as detailed below. In addition, you should include as appendices: all your code appropriately commented; your test run outputs; and extracts from your test data. There is no word limit on the appendices, which will be assessed alongside the main body of your report.
You are required to submit two files, with a third optional data file:
• A single PDF document containing your full report, including all the appendices.
• A single supplemental code file, which can either be in the form of a standard python code file (.py) or a Jupyter notebook file (.ipynb). This code will not be marked, but may be required to validate that the code you have provided as an appendix can be executed, as claimed.
• An optional data file (.csv), if this is required to run your supplemental code file.

The requirements of the code and code appendix are provided first in these instructions as this forms the primary focus of this assignment. This is followed by instructions for each of the sections of main body of the report.

CODE APPENDIX: Provide working python code that solves your problem (30%)

Provide, as an appendix to your report, your completed coded.
Embed in your code comments that describe each function in terms of its purpose, inputs and outputs. Additional comments should also be included to help explain key steps in your algorithms, and examples of particular techniques you have used.
You are not required to have written all the code yourself.
There are plenty of examples of python code on the Internet that provide solutions to any problem you are likely to consider. Please feel free to use such code, providing suitable references to these sources. Any code you do re-use should fully implement your chosen algorithms, so that you can identify and comment on how the code implements these algorithms.
You are not allowed to use python modules that directly implements your algorithm in such a way that you cannot see exactly how the code implements the algorithm.
You can though use standard python modules to provide appropriate data representations for your algorithm (eg numpy for matrix data or networkx for graph data) or provide other functions that do not form part of the core implementation of your focus algorithm (eg math, statistics, csv, random modules).
You are required to demonstrate you have fully understood the code and have been able to apply it to your particular problem, using suitable test data. This is likely to require, at a minimum, that you write some additional code to run and test your algorithm code on your particular problem; maybe to load data from a csv file, enter some initial input values, and to print or plot outputs.
You should add additional print statements within your code to illustrate key aspects of how the algorithm works.
You should also add appropriate additional code (such as loop counters) and print statements within your code to help assess the complexity your algorithm and prepare Big(O) plots.
You are required to provide code that it understandable and well designed. Code copied from the Internet is often not well designed! Don’t necessarily use the first version you find. You are likely to need to edit and potentially change any code you re-use from the Internet so that it uses clear and consistent names.
You will need to demonstrate decomposition in your code (ie it should contain multiple functions, rather than one large single function). You may therefore need to decompose a large unstructured program from the Internet into smaller functions that are easier to understand.

Main Report Sections:

1. System Requirements and Your Algorithm (10%)

Describe your management problem or business-idea and outline the purpose of the software system/application that addresses this problem/idea in the form of a brief set of system requirements, listing:
• the functional requirements, identifying the key functions with their data inputs and outputs
• any non-functional requirements you believe may be important for this problem

Describe your algorithm, identifying:
• how your algorithm works
• how your algorithm helps solve your problem
• which functional requirements are associated with your algorithm

2. Explain how the code works (30%)

Explain the design of your code, particularly commenting on:
• The overall structure of the code in terms of the key functions it contains and how the code decomposes into a hierarchy of functions
• The flow of the overall code as it progresses from loading/inputting/generating some input data to providing the final solution to your problem
• In what ways the code is generalised
• How data is represented in your code and why it is represented in this way
• The use of any particularly noteworthy or advanced coding features such as: recursive functions, use of list comprehensions, passing functions as input parameters

You must also identify and comment on which parts of the code are re-used (you must reference the source of all re-used code), any re-used code you have improved or changed (how and why), and which parts you have coded fully yourself.

3. Analyse the complexity of your code (10%)

Explain how the key inputs to your problem can vary in size and nature. Assess the expected running time complexity of your code in terms of an order of magnitude of the size of your input value(s). Justify your results.
Test the actual run time performance of your code using a range of different input size values.
Provide appropriate timing, loop-counter-based and/or theoretical Big(O) plots to support your findings.
Explain you results and compare any theoretical or loop-counter-based analysis with your experimental timing results.
Explain any realistic limits of your code, in regard to runtime performance.

4. Describe the data used to test your code (10%)

Describe the data you used to illustrate how your algorithm could solve your particular management problem or business-idea software. Did you use an open data source for this or did you create/generate the data yourself? Explain the choices you made in this regard.
Explain how you tested your code using this test data.
Explain how you selected or generated different ‘sizes’ of data to analyse the running time complexity of your code.

5. Conclusions (10%)

Briefly conclude by discussing the benefits and limitations of your code. Things you may like to consider are:
• Explain in what ways you believe your code follows good design principles.
• Discuss any alternative approaches to solving this problem.
• Suggest how your code could be improved.
• Discuss whether and how you think this code can be generalised for use on different problems.
• Discuss any limitations in your test data and the implications for your findings

Assessment Criteria

In general, if you have fully addressed all the requirements in the above statement for this assignment this should be indicative of a “very good” grading. Variations, by exception, from this standard are provided in the criteria grid below:

Available Marks
Section
Excellent
Very Good
Good
Satisfactory
Poor
30%
APPENDIX: Provide working python code that solves your problem
Evidence of significant, complex, well-designed, and effective working code written by the student.
Addresses all points required of this section.
Evidence of student coding, including improves to the original code.
Clear code annotation.
Code works but there is limited evidence of additional code development by the student and/or the code is inadequately annotated.
eg Code is for a trivial algorithm, or Code does not work, or is not annotated, or does not relate to the problem.
10%
1. System Requirements and Your Algorithm

Algorithm is both complex, explained well and relevant to stated problem.

Both functional and non-function requirements are appropriately identified and discussed in terms of the problem and algorithm.
Addresses all points required of this section.
Problem shows a moderate level of complexity and clear explanation.
Problem chosen is adequate but simplistic with limited opportunities to demonstrate a range of techniques and depth of understanding.
eg A trivial algorithm is used, or the algorithm does not solve the problem, or appropriate functional requirements are not provided
30%
2. Explain how the code works
Explanation provides a clear and correct identification of a wide range of CT concepts and good design principles.
Addresses all points required of this section.
Explanations are correct but the ideal range and depth of explanations has not been provided.
Explanation is reasonably correct but the problem/code is too simplistic to exhibit all the range and depth of explanations asked for.
eg Explanation is incorrect

10%
3. Analyse the complexity of your code
Provide a clear and correct analysis of the complexity of non-trivial algorithmic code.

Demonstrates a range of complexity analysis techniques.

Compares the complexity and runtime performance of different algorithms or consider other aspects of the data to determine best/average/worse case findings.
Addresses all points required of this section.
Complexity analysis is mostly correct and effective runtime timing analysis has been performed.
Complexity analysis is mostly correct but the problem/code is too simplistic to make this sufficiently challenging.
eg Complexity analysis is incorrect
10%
4. Describe the data used to test your code
Large datasets have been found and used to support appropriate testing, including over different volumes of data.

Addresses all points required of this section.
Test datasets have been used that align to the key functional requirements.
A number of test cases have been used that align to most of the key functional requirements.
eg. Datasets are very small or do not relate to the problem
10%
5. Conclusions
Provides a well-argued case for the limitations and potential of the code that demonstrates clear understanding.
Addresses all points required of this section.
Concluding statements demonstrate evidence of overall understanding.
Some concluding statements demonstrate evidence of overall understanding.
eg. Conclusions do not adequately consider any the points suggested

Section C: Module Learning Outcomes covered in this Assignment
This assignment contributes towards the achievement of the following stated module Learning Outcomes as highlighted below:
• Understand how modern algorithmic software technologies add value to businesses.
• Understand how to express and design algorithms in terms of sequences of instructions, selection rules and iterative processes.
• Characterise algorithms and the data structures they employ.
• Assess the complexity of algorithmic code and prepare ‘Big O’ plots based on timings, loop counters and theory.
• Understand, analyse and apply algorithms and code to a given problem.

Section D: Assessment of this Coursework
Within each section of this coursework you may be assessed on the following aspects, as applicable and appropriate to this particular assessment, and should thus consider these aspects when fulfilling the requirements of each section:
• The strengths and quality of your overall analysis and evaluation;
• The rationale and evidence that you provide in support of your arguments;
• The credibility and viability of the evidenced conclusions/recommendations/plans of action you put forward;
• Structure and coherence of your considerations and reports/presentations;
• Appropriate and relevant use of, as and where relevant and appropriate, real world examples, academic materials and referenced sources. Any references should use either the Harvard OR Vancouver referencing system (see References, Citations and Avoiding Plagiarism)
• Academic judgement regarding the blend of scope, thrust and communication of ideas, contentions, evidence, knowledge, arguments, conclusions.
• Each part has requirements with allocated marks, maximum word count limits/page limits and where applicable, templates that are required to be used.

You are advised to refer to the UCL Assessment Criteria Guidelines, located at https://www.ucl.ac.uk/teaching-learning/sites/teaching-learning/files/migrated-files/UCL_Assessment_Criteria_Guide.pdf