Curtin College IT

Computing Discipline

Data Structures and Algorithms (DSA1002)

Trimester 1, 2021


1 Assignment 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. Do not use the Java/Python implementations of ADTs – if in doubt, ask.


2 The Problem

This assignment requires the development of a program to model a series of shops or warehouses to be visited by a drone to collect items. You will have a “purchase order” of items to collect, that could be at any of the locations. Your program should read in the inventories (stock on hand) at each location, and store this using appropriate ADTs. The distances between locations will be given, and your decision on which locations to visit to complete the order can be optimised for the shortest distance. A list of unfilled items should be given if you cannot complete the order.

Your program should be called droneDirect and have three starting options:

• No command line arguments : provides usage information

• "-i" : interactive testing environment

• "-r" : report mode

   usage: droneDirect –r <location_file> <order_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 overviews for the dataset.

You will then investigate the performance of the code you have developed. This investigation will be written up as the Project Report.


3 Submission

Submit electronically via Blackboard.

You should submit a single file, which should be zipped (.zip) or tarred (.tar.gz). 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.


3.1 Project Report

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.2 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. 


3.3 Requirements for passing the unit

Students must submit an assignment worthy of scoring 15% to pass the unit.

This is an individual assignment that must be completed on your own. The assignment has many correct solutions so plagiarism will be easy for us to detect (and we will).

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.4 Late Submission

Curtin College Late Submission penalties will apply. If you wish to request an extension, please do so prior to the due date and provide accompanying documentation. See The Curtin College Assessment Submission Guidelines.


3.5 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.