1
Introduction
In practicals you have implemented and learned about a
number of algorithms and ADTs and will be implementing more of these in the remaining practicals. In this assignment, you will be making use of
this knowledge to implement a system to explore and compare a variety of ADT implementations. Feel free to re-use the generic ADTs from your practicals.
However, remember to self-cite; if you submit work that you have already
submitted for a previous assessment (in this unit or any other) you have to
specifically state this. Do not use the Java/Python implementations of ADTs –
if in doubt, ask.
2
The Problem
This assignment requires the development of a solution
to analyse crypto-currency trading data. You will be downloading and reading in
the trade data, which defines connections between different currencies. Where
currencies are not connected directly, there will be a path to follow to find
an overall “exchange”, via intermediate trades.
We will access
data from www.binance.com via their
API, to collate the currencies and valid trade pairs. From there it should be possible to query for currencies,
trades and trade paths.
To get an idea of the dataset, explore the following links:
·
API Documentation: https://binance-docs.github.io/apidocs/spot/en/#general-info
·
Markets and trade overview: https://www.binance.com/en/markets
·
Tradeable tokens: https://www.binance.com/api/v3/exchangeInfo (1062 pairs)
·
Last 500 trades on a token: https://www.binance.com/api/v3/trades?symbol=ETHBTC
·
Trade information for last 24
hours: https://www.binance.com/api/v3/ticker/24hr (527KB)
Your program
should be called cryptoGraph and
have three starting options:
•
No command line arguments :
provides usage information
•
"-i" : interactive
testing environment
•
"-r" : report mode
usage: cryptoGraph –r <asset_file>
<trade_file>
When the
program starts in interactive mode, it should provide the following menu
options:
You can structure the menu/UI differently, just make
sure at least those options are included.
When running in report mode, you will give the input files and any
parameters on the command line, then output the statistics for the dataset.
You will then investigate particular assets and trades, using the
code you have developed. This investigation will be written up as the Project
Report.
Remember: think
before you code!
1
Submission
Submit electronically via Blackboard.
You should submit a single file, which should be zipped
(.zip) or tarred (.tar.gz). Check that you can decompress it on the lab computers. These are also the computers on which your work will be tested, so make sure that your work runs there. The file must be named DSA_Assignment_<id> where the
<id> is replaced by your student id. There should
be no spaces in the file name; use underscores as shown.
The file must contain the following:
·
Your code. This means all .java/.py
files needed to run your program. Do include code provided to you as part of
the assignment if that is required to run your
program.
·
README file including short descriptions
of all files and dependencies, and information on how to run the program.
·
Your unit test harnesses. One of the easiest ways for us to be sure that
your code works is to make sure that
you’ve tested it properly. Make it easy for us to test your work - the test
harness for class X should be called UnitTestX, or can be included in the class
file for Python.
·
Documentation and Report for your code,
as described in Section 2.1.
·
A signed and dated cover sheet. These are available from
Blackboard with the assignment specification. You can sign a hard copy and scan
it in or you can fill in a soft copy and digitally sign it.
·
Java Students:
o Do not include .class files
or anything else that we do not need. We will recompile
.java files to ensure that what we’re testing is what we’re reading. We will use javac
*.java to compile your files and run the unit tests by their
expected names.
Make sure that your file contains what is required. Anything
not included in your submission will not be marked, even if you
attempt to provide it later. It is your responsibility to make sure that your
submission is complete and correct.
Please submit the Project Report in PDF format. Your
Report will be minimum 8-10 pages (excluding UML and Javadocs) and should
include the following:
3.1
Marking
Marks will be
awarded to your submission as follows:
·
Marks will be deducted
for not following specifications outlined
in this document, which
includes incorrect submission format and content and using built-in
Java ADTs.
·
If the cover sheet isn’t
provided with your submission, your submission will not be marked and you will
be awarded zero (0) marks. If you forget to submit the cover sheet you will be
allowed to submit it separately to the unit coordinator but will lose 5 marks.
3.1
Requirements
for passing the unit
Students
must submit an assignment worthy of scoring 15% to pass the unit.
This assignment has many correct solutions so plagiarism will be
easy for us to detect (and we will). For information about plagiarism, please
refer to http://academicintegrity.curtin.edu.au.
In the case of doubt, you may be asked to explain your code and the reason
for choices that you have made as part of coding to the unit coordinator. A failure to adequately display
knowledge required to have produced the code will most
likely result in being formally accused of cheating.
Finally, be sure to secure your code. If someone else gets access
to your code for any reason (including because you left it on a lab
machine, lost a USB drive containing the code or put it on a public repository)
you will be held partially responsible for any plagiarism that results.
3.2
Late Submission
Late submissions will
incur a 10% deduction per day.
3.3
Clarifications
and Amendments
This assignment specification may be clarified and/or
amended at any time. Such clarifications and amendments will be announced
via Blackboard. These clarifications and amendments form part of the
assignment specification and may include things that affect mark allocations or
specific tasks.
0 comments:
Post a Comment