xuebaunion@vip.163.com

3551 Trousdale Rkwy, University Park, Los Angeles, CA

留学生论文指导和课程辅导

无忧GPA：https://www.essaygpa.com

工作时间：全年无休-早上8点到凌晨3点

扫码添加客服微信

扫描添加客服微信

Java代写-COSC 1285/2123-Assignment 1

时间：2021-04-16

Algorithms and Analysis

COSC 1285/2123

Assignment 1

Assessment Type Group assignment. Groups as allocated and notified on Can-

vas. Submit online via Canvas → Assignments → Assign-

ment 1. Marks awarded for meeting requirements as closely as

possible. Clarifications/updates may be made via announce-

ments/relevant discussion forums.

Due Date Friday 16th April 2021, 11:59pm

Marks 30

1 Overview

One of the frequent phrases we hear during the COVID-19 panademic are epidemic

modelling and contract tracing. As the virus is transmitted human to human, one of

the effective methods to stop an outbreak is to identify the close contacts of an infected

individual, and isolate all of them for a period of time (typically 14 days). To estimate

the impact of outbreaks, epidemic modelling is an extremely important tool. A graph

is a natural representation for these close contacts, tracing outbreaks and for epidemic

modelling.

When we represent these networks as a graph, the vertices in such a graph represent

people and edges represents close contact relationship.

In class, we studied three methods to represent the graph, the adjacency list, adja-

cency matrix and vertex/edge list representations. There is a fourth type of representation

called incident matrix (see below for details). The performance of each representation

varies depending on the characteristics of the graph. In this assignment, we will imple-

ment the adjacency list, adjacency matrix and incident matrix representations for the

relational parts, and evaluate on how well they perform when modelling close contacts

and for epidemic modelling. This will assist with your understanding of the tradeoffs

between data structure representations and its effect when implementing operations or

solving problems using algorithms and data structures.

2 Learning Outcomes

This assessment relates to all of the learning outcomes of the course which are:

CLO 1: Compare, contrast, and apply the key algorithmic design paradigms: brute

force, divide and conquer, decrease and conquer, transform and conquer, greedy,

dynamic programming and iterative improvement;

CLO 2: Compare, contrast, and apply key data structures: trees, lists, stacks,

queues, hash tables and graph representations;

CLO 3: Define, compare, analyse, and solve general algorithmic problem types:

sorting, searching, graphs and geometric;

CLO 4: Theoretically compare and analyse the time complexities of algorithms and

data structures; and

CLO 5: Implement, empirically compare, and apply fundamental algorithms and

data structures to real-world problems.

3 Background

3.1 Networked SIR Model

There are several well-known epidemic models, but the one that we will focus on in

this assignment is the (Networked) SIR model. The SIR epidemic model assumes each

individual has three states - Susceptible (S) to the disease, Infected (I) by the disease and

Recovered (R) to the disease. The progression of states is assumed to be susceptible (S)

to Infected (I) to Recovered (R). Initially some in the initial population are infected and

all others are susceptible. Once recovered, an individual has immunity and will not be

further infected. There are also other models, like SIS (Susceptible, Infected, Susceptible),

but for the purpose of this assignment, we will stick with the most fundamental model,

the SIR model, as others are really variations on this.

In the traditional SIR model, there is assumption of full mixing between individuals

- i.e., any individual can potentially infect another. The model then derives differential

equations that estimates the changes in the total number of susceptible, infected and

recovered individuals over time, and these are proportional to the numbers of the other

two states - e.g., change in number of infected individuals is dependent on the number

of susceptible and the number of recovered individuals. It is able to model some diseases

relatively well, but is inaccurate for others and misses out on local spreading and effects.

Hence a networked SIR model was proposed, where instead of full mixing between in-

dividuals, infected individuals can now only infect its neighbours in the graph/network,

which typically represents some form of “close contact”.

The networked SIR model works as follows.

At each timestep, each susceptible individual can be infected by one of its infected

neighbours (doesn’t matter which one, as an individual is infected regardless of who

caused it). Each infected neighbour has a chance to infect the susceptible individual.

This chance is typically modelled as an infection parameter α - for each chance, there

is α probability of infection. In addition, at each timestep each infected individual have

a chance of recovering, either naturally or from medicine and other means (this model

doesn’t care which means). Let the recovery parameter β represent this, which means

there is β probability that an infected individual will recover and change to recovered

state. There is no transition for susceptible to recovered (which could be interesting, e.g.,

to model vaccination, but left for future assignments).

As you can probably infer, the more neighbours one has, the higher potential for

infection. Hence one reason for the general advice from the health departments to reduce

the number of close contacts. Also wearing masks reduces the infection probability, again

reducing the spread of an outbreak. In this assignment, you will get an opportunity to

experiment with these parameters and see what differences they make.

2

For more information about SIR and epidemic modelling, have an initial read here

https://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology. We will

also release some recordings talking more about the model on Canvas, particularly pro-

viding more details about how to run the SIR model to simulate an epidemic, please look

at those also when they become available.

3.2 Incidence Matrix Representation

The incidence matrix represents a graph as a set of vertices and list of edges incident to

each vertex as a 2D array/matrix. More formally, let the incidence matrix of a undirected

graph be an n x m matrix A with n and m are the number of vertices and edges of the

graph respectively. The values in the matrix A follows the following rules:

Each edge ek is represented by a column in A.

Each vertex is represented by a row in A.

Let the two incident vertices to an edge ek be vi and vj. Then the matrix entries

Ai,k and Aj,k are both = 1.

Ai,k = 0 for all other non-incident edges.

For example, the following graph:

has its incidence matrix as below:

AB AC AD BC CD

A 1 1 1 0 0

B 1 0 0 1 0

C 0 1 0 1 1

D 0 0 1 0 1

For further readings about this graph representation, please see https://en.wikipedia.

org/wiki/Incidence_matrix.

4 Assignment Details

The assignment is broken up into a number of tasks, to help you progressively complete

the project.

3

Task A: Implement the Graph Representations, their Operations

and the Networked SIR model (10 marks)

In this task, you will implement data structures for representing undirected, unweighted

graphs using the adjacency list, adjacency matrix and incidence matrix representations.

Your implementation should also model vertices that have SIR model states associated

with them. Your implementation should support the following operations:

Create an empty undirected graph (implemented as a constructor that takes zero

arguments).

Add a vertex to the graph.

Add an edge to the graph.

Toggle the SIR state on vertices.

Delete a vertex from the graph.

Delete an edge from the graph.

Compute the k hop neighbours of a vertex in the graph.

Print out the set of vertices and their SIR states.

Print out the set of edges.

In addition, we want you to implement the (networked) SIR epidemic model to sim-

ulate how a virus can spread through a population.

Note that you are welcome to implement additional functionality. When constructing

our solutions to the assignment, we have found that adding some methods was helpful,

particularly for implementing the SIR model. But the above functionalities are ones you

should complete and ones you will be assessed on.

Data Structure Details

Graphs can be implemented using a number of data structures. You are to implement

the graph abstract data type using the following data structures:

Adjacency list, using an array of linked lists.

Adjacency matrix, using a 2D array (an array of arrays).

Incidence matrix, using a 2D array (an array of arrays).

4

For the above data structures, you must program your own implementation, and not

use the LinkedList or Matrix type of data structures in java.utils or any other libraries.

You must implement your own nodes and methods to handle the operations. If you use

java.utils or other implementation from libraries, this will be considered as an invalid

implementation and attract 0 marks for that data structure. The only exceptions are:

if you choose to implement a map of vertex labels to a row or column index for the

adjacency matrix or incidence matrix, you may use one of the existing Map classes

to do this.

if you choose to implement a map of vertex labels to its associated SIR state, you

may use of the existing Map classes to do so.

Operations Details

Operations to perform on the implemented graph abstract data type are specified on the

command line. They are in the following format:

[arguments]

where operation is one of {AV, AE, TV, DV, KN, PV, PE, SIR, Q} and arguments is for

optional arguments of some of the operations. The operations take the following form:

AV – add a vertex with label ’vertLabel’ into the graph. Has default

SIR state of susceptible (S).

AE – add an edge with source vertex ’srcLabel’, target

vertex ’tarLabel’ into the graph.

TV – toggle the SIR state of vertex ’vertLabel’. Togglng means go to

the next state, i.e., from S to I, from I to R (if in R, remain in R).

DV – delete vertex ’vertLabel’ from the graph.

DE – remove edge with source vertex ’srcLabel’ and target

vertex ’tarLabel’ from the graph.

KN – Return the set of all neighbours for vertex ’vertLabel’ that

are up to k-hops away. The ordering of the neighbours does not matter. See below

for the required format.

PV – prints the vertex set of the graph. See below for the required format. The

vertices can be printed in any order.

PE – prints the edge set of the graph. See below for the required format. The edges

can be printed in any order.

SIR probability> – Run the networked SIR model simulation, using the current graph

as the network, the specified seed vertices as additional set of infected vertices (in

addition to any existing in the current graph) and the two infection and recover

5

probabilities. Runs the model simulation to completion, which means two things

a) there are no more vertices with Infected (I) state and there are no changes in the

number of infected or recovered in the latest iteration of the model; or b) if condi-

tion there are still infected vertices but there has been no changes in the number of

infected or recovered for 10 iterations, then can stop the simulation. Outputs the

list of nodes infected at each iteration, see below for format.

Q – quits the program.

k-hop Neighbour operation format details The format of the output of the neigh-

bour operation for vertex ’A’ should take the form:

A: neighbour1 neighbour2 ...

If a vertex has no neighbours, then the list of neighbours should be empty. The node

’A’ should not be in the list of neighbours, and the graphs can be assumed to have no

self-loops (self loops don’t necessarily make sense for epidemic modelling).

Print vertex operation format details The print vertex operation output the ver-

tices and associated SIR state in the graph in a single line. The line should specifies all

the valid vertex (indices) in the graph.

(vertex1,state1) (vertex2,state2) (vertex3,state3) ...

where state1 is the SIR state of vertex 1 etc.

Print edge operation format details The print edge operation output the edges in

the graph in over a number of lines. Each line specifies an edge in the graph, and should

be in the following format:

srcVertex tarVertex

SIR operation format details The networked SIR model file output format is each

line represents one iteration of the process, and each line will record the number of newly

infected and recovered vertices (newly infected or recovered nodes are ones that become

infected or recovered in this iteration). The format is as follows:

: [vertices>] : []

Example of all operations As an example of the operations, consider the output

from the following list of operations:

AV A

AV B

AV C

AV D

AV E

AV F

AV G

6

AV H

AE A B

AE C B

AE B D

AE A E

AE D C

AE F A

AE B F

AE C G

AE G H

AE E G

AE F G

KN 1 A

KN 2 A

KN 1 F

DV C

DE B A

DE G H

KN 1 H

TV B

TV E

TV B

PV

PE

SIR A;F 0 .8 0 .5

Q

The output from the four neighbour operations (‘KN 1 A’, ‘KN 2 A’ ‘KN 1 F’, ‘KN 1

H’) should be (remember that the order these neighbourhoods do not matter so if your

output differs from this ordering but has the same set of vertices, that is fine):

A: B E F

A: B C D F E G

F: A B G

H:

The output from the print vertices operation (PV) could be (remember that the order

doesn’t matter):

(A, S) (B,R) (D, S) (E, I ) (F , S) (G, S) (H, S)

The output from the print edges operation (P E) could be (remember that the order

doesn’t matter):

A E

E A

F A

A F

B F

F B

7

D B

B D

E G

G E

F G

G F

The output from the ‘SIR A;F 0.8 0.5’ operation could be (note that it is a stochastic

model, so you can get different results for different runs, so use the following more for

what the output format should look like):

1 : [G] : [ ]

2 : [ ] : [A]

3 : [ ] : [ ]

4 : [ ] : [ ]

5 : [ ] : [F G]

6 : [ ] : [ ]

Testing Framework

We provide Java skeleton code (see Table 1 for the important files) to help you get

started and automate the correctness testing. You may add your own Java files to your

final submission, but please ensure that they compile and can be run on the core teaching

servers.

Notes

Consider the specifications here carefully. If you correctly implement the “Imple-

ment me!” parts and follow the output formating for operations like PV, PE and

SIR, you in fact do not need to do anything else to get the correct output formatting.

The main class in the provided skeleton code will handle this.

The implementation details are up to you, but you must implement your own data

structures and algorithms, i.e., do not use the built-in structures in Java unless for

the purposes outlined in the box above.

If you develop on your own machines, please ensure your code compiles and runs

on the university’s core teaching servers. You don’t want to find out last minute

that your code doesn’t compile on these machines. If your code doesn’t run on

these machines, we unfortunately do not have the resources to debug each one and

cannot award marks for testing.

All submissions should compile with no warnings on Oracle Java 1.8 - this is the

version on the core teaching servers.

Any clarifications on the Canvas FAQ or Assignment 1 Update page will override

the specifications here if they are conflicting.

8

file description

RmitCovidModelling.java Main class. Contains code that reads in operation commands

from stdin then executes those on the selected graph imple-

mentation. Also will format the output as required. No need

to modify this file.

ContactsGraph.java Interface class for the graph representations. It contains the

common interface/methods that you’ll need to implement for

the various representations. Generally no need to modify this

file, but you might want to add helper functionality, and here

would be one place to do so for common ones across all rep-

resentations..

AdjacencyList.java Code that implements the adjacency list implementation of

a graph. Complete the implementation (implement parts la-

belled “Implement me!”).

AdjacencyMatrix.java Code that implements the adjacency matrix implementation

of a graph. Complete the implementation (implement parts

labelled “Implement me!”).

IncidenceMatrix.java Code that implements the incidence matrix implementation

of a graph. Complete the implementation (implement parts

labelled “Implement me!”).

SIRState.java Code that implements the three vertex states of a SIR model.

No need to modify this file.

SIRModel.java Code that implements the networked SIR model. Complete

the implementation (implement parts labelled “Implement

me!”).

Table 1: Table of Java files.

Task B: Evaluate your Data Structures and SIR model (20 marks)

In this second task, you will evaluate your implemented structures in terms of their time

complexities for the different operations and different use case scenarios. Scenarios arise

from the possible use cases of contract tracing and epidemic modelling on a graph. In

addition, run some epidemic modelling simulations to evaluate your structures within an

application (epidemic modelling and simulation) and to explore more about the effect of

the model parameters on epidemic spreading.

Write a report on your analysis and evaluation of the different implementations. Con-

sider and recommend in which scenarios each type of implementation would be most

appropriate. Report the outcomes of your SIR epidemic model simulations. The report

should be 10 pages or less, in font size 12. See the assessment rubric (Appendix A) for

the criteria we are seeking in the report.

9

Graph generators

To evaluate the data structures, we will generate a number of graphs, then apply a

number of operations on them, see the Use Case Scenarios section next. In this section,

we describe more about how to generate the graphs, and see on Canvas for further details

and videos.

There are many ways to generate graphs, but we will focus on two:

Random (Erdos-Renyi) – there is a probability for generating an edge between any

pair of vertices.

Scale-free – graphs whose degree distribution follow a power law (see https://en.

wikipedia.org/wiki/Scale-free_network).

We suggest to use Pajek1, which is available on multiple platforms and has visual-

isation, which allows one to look at the generated graphs. But it also has basic graph

generation functionality and doesn’t require programming to use, unlike more powerful

graph libraries2.

Use Case Scenarios

Typically, you use real usage data to evaluate your data structures. However, for this as-

signment, you will write data generators to enable testing over different scenarios of

interest. We are also interested in the effect of the average degree of the graph3 on these

scenarios. There are many possibilities, but for this assignment, consider the following

scenarios:

Scenario 1 k-hop Neighbourhoods: When doing contract tracing and/or epidemic

modelling, computing neighbourhoods is an important function. In this scenario, the

graph is not changing, but important operations such as k-hop neighbourhood (recall

this is all neighbours up to k-hops away) are requested.

You are to evaluate the performance of the the k-hop neighbourhood implementations,

as the average degree of the evaluated graph and k are varied.

Scenario 2 Dynamic Contact Conditions: In the real world, the contact conditions

between people are likely not static and there will be need to update these over time. In

this scenario, the contacts are changing (been added and deleted). In this scenario, you

are to evaluate the performance of your implementations in terms of:

edge additions

edge deletions

You are to evaluate the performance the edge operations as the average degree and

size (number of vertices) of the initial graph (before edge changes) are varied.

1http://mrvar.fdv.uni-lj.si/pajek/ the website looks a bit dated, but this is one of the well

known social network analysis tools.

2Networkx https://networkx.org/ – if you know Python, you are more than welcome to use this

instead.

3Average number of neighbours per node, which both graph generator models allows to be specified

10

Scenario 3 Dynamic People Tracing: As time goes on, the people been traced will

change. Although it is possible to have a large graph that tries to capture every possible

person, it is computationally difficult to do so and run simulations on it. In this scenario,

you are to evaluate the performance of your implementations in terms of:

vertex addition

vertex deletion

You are to evaluate the performance the vertex operations as the average degree and size

(number of vertices) of the initial graph (before vertex changes) are varied.

SIR Model Epidemic Simulation

In addition to evaluating how well the graph representations perform for the contract

tracing and epidemic modelling simulations, we also want to experiment with how the

networked SIR model works and performs.

Run epidemic simulation for different graph types (Erdos-Renyi and Scale-free), differ-

ent seed initialisations and different infection and recover probabilities. For performance

evaluation, evaluate each of the three data structures on a subset of the possible simula-

tion parameters and compare how they perform (in terms of timing efficiency).

We don’t expect a comprehensive analysis, but want you to explore and gain a better

understanding of epidemic modelling and what it implies for how to limit the spread of

epidemics.

Consider how you might present the results, but at a minimum plot the following:

Number of susceptible, infected and recovered after every iteration.

Data Generation

When generating the vertices and edges to add or remove and find neighbourhoods for,

the distribution of these elements, compared to what is in the graph already, will have

an effect on the timing performance. However, without the usage and query data, it is

difficult to specify what this distributions might be. Instead, in this assignment, uniformly

sample from a fixed range, e.g., 0 to max vertex label of your graph when generating the

vertices and edges for removing and adding and k-hop neighbourhoods, and a different

range (e.g., greater than the largest vertex label when adding vertices (we do not want

to repeatingly add vertices that are in the graph already).

For generating graphs with different initial average degrees and sizes, you can either

use Pajek or your favourite graph generator, we will not prescribe one particular approach.

Whichever method you decide to use, remember to generate graphs of different average

degrees to evaluate on. Due to the randomness of the data, you may wish to generate a

few graphs with the same average degrees and sizes and take the average across a number

of runs when performing the performance evaluation and analysis.

Analysis

In your analysis, you should evaluate each of your representations and data structures in

terms of the different scenarios outlined above.

Note, you may be generating and evaluating a significant number of graphs and evaluation

datasets, hence we advise you to get started on this part relatively early.

11

5 Report Structure

As a guide, the report could contain the following sections:

Explain your data and experimental setup. Things to include are (brief) explana-

tions of the data scenarios you decide to evaluate on (e.g., how many additions/re-

movals operations did you evaluate and why these), size of the graphs, the range of

average degrees tested (add some brief explanation of why this range selection), de-

scribe how the scenarios were generated (a paragraph and perhaps a figure or high

level pseudo code suffice), which approach(es) you decide to use for measuring the

timing results, and briefly describe the fixed set(s) you sampled from to generate

the elements for addition, removal of vertices and edges and k-hop neighbourhood

of the graphs.

Evaluation of the data structures using the generated data (different scenarios,

average degree, graph size). Analyse, compare and discuss your results. Provide

your explanation on why you think the results are as you observed. You may

consider using the known theoretical time complexities of the operations of each

data structure to help in your explanation if useful.

Summarise your analysis as recommendations, e.g., for this certain data scenario

of this average degree (and size), I recommend to use this data structure because...

We suggest you refer to your previous analysis to help.

Evaluate the different parameters of the SIR model and its effect on the number

of susceptible, infected and recovered individuals over time. Which combination

of parameters has the fastest infection spread, which one has the most extensive

number of infected? How does the average timing compare between your three

graph representation? Can you explain why?

6 Submission

The final submission will consist of three parts:

Your Java source code of your implementations. Include only source code

and no class files, we will compile your code on the core teaching serers. Make

sure that your assignment can run only with the code included! That is, it should

be self contained, including all the skeleton code needed to run it.

Your source code should be placed into in a flat structure, i.e., all the files should

be in the same directory/folder, and that directory/folder should be named as

Assign1-. Specifically, if your student number is s12345,

when unzip Assign1-s12345.zip is executed then all the source code files should

be in directory Assign1-s12345.

Your data generation code. Create a sub-directory/sub-folder called “gener-

ation” within the Java source file directory/folder. Place your generation code

within that folder. We will not run the code, but may examine their contents.

Your written report for part B in PDF format, called “assign1.pdf”. Submit

this separately to a Turnitin submission.

12

Note: submission of the report and code will be done via Canvas. We will

provide details closer to the submission deadline. We will also provide details on how

the setup we use to test the correctness of your code will be like, so you can ensure your

submitted structure will conform to the automated testing we will perform.

7 Assessment

The project will be marked out of 30. Late submissions will incur a deduction of 3 marks

per day, and no submissions will be accepted 5 days beyond the due date and will attract

0 marks for the assignment.

The assessment in this project will be broken down into two parts. The following

criteria will be considered when allocating marks.

Implementation (10/30):

You implementation will be assessed based on the number of tests it passes in our

automated testing.

While the emphasis of this project is not programming, we would like you to main-

tain decent coding design, readability and commenting, hence commenting and

coding style will make up a portion of your marks.

Report (20/30):

The marking sheet in Appendix A outlines the criteria that will be used to guide the

marking of your evaluation report4. Use the criteria and the suggested report structure

(Section 5) to inform you of how to write the report.

8 Team Structure

This project should be done in pairs (group of two). If you have difficulty in finding a

partner, post on the discussion forum or contact your lecturer. If you want to do the

assignment individually, please contact one of your lecturers first and obtain his

approval.

In addition, please submit what percentage each partner made to the assignment (a

contribution sheet will be made available for you to fill in), and submit this sheet in your

submission. The contributions of your group should add up to 100%. If the contribution

percentages are not 50-50, the partner with less than 50% will have their marks reduced.

Let student A has contribution X%, and student B has contribution Y%, and X > Y .

The group is given a group mark of M. Student A will get M for assignment 1, but student

B will get MX

Y

.

This semester we will also institute some additional group management initiatives,

including registration and not allowing further group changes in the week before the due

date. We will detail more about this on Canvas.

4Note for the marking guide, if one of the criteria is not demonstrated a tall, then 0 marks will be

awarded for that criteria.

13

9 Academic integrity and plagiarism (standard warning)

Academic integrity is about honest presentation of your academic work. It means ac-

knowledging the work of others while developing your own insights, knowledge and ideas.

You should take extreme care that you have:

Acknowledged words, data, diagrams, models, frameworks and/or ideas of others

you have quoted (i.e. directly copied), summarised, paraphrased, discussed or men-

tioned in your assessment through the appropriate referencing methods

Provided a reference list of the publication details so your reader can locate the

source if necessary. This includes material taken from Internet sites. If you do not

acknowledge the sources of your material, you may be accused of plagiarism because

you have passed off the work and ideas of another person without appropriate

referencing, as if they were your own.

RMIT University treats plagiarism as a very serious offence constituting misconduct.

Plagiarism covers a variety of inappropriate behaviours, including:

Failure to properly document a source

Copyright material from the internet or databases

Collusion between students

For further information on our policies and procedures, please refer to the following:

https://www.rmit.edu.au/students/student-essentials/rights-and-responsibilities/

academic-integrity.

We will run both code and report similarity checks.

10 Getting Help

There are multiple venues to get help. First point of call should be Canvas, assignment

FAQ (on Canvas), recordings about it and the discussion forum. There will also be weekly

online consultation hours for the assignment (see Canvas for times). In addition, you are

encouraged to discuss any issues you have with your Tutor or Lab Demonstrator. Please

refrain from posting solutions to the discussion forum.

14

A Marking Guide for the Report

Design of Evaluation Analysis of Results Report Clarity and Structure

(Maximum = 5 marks) (Maximum = 10 marks) (Maximum = 5 marks)

5 marks 10 marks 5 marks

Data generation and

experimental setup are

well designed, systematic

and well explained. All

suggested scenarios, data

structures and a

reasonable range of

parameters were

evaluated. Each type of

test was run over a

number of runs and

results were averaged.

Analysis is thorough and demon-

strates understanding and critical

analysis. Well-reasoned explana-

tions and comparisons are provided

for all the data structures, sce-

narios and parameters. All anal-

ysis, comparisons and conclusions

are supported by empirical evidence

and possibly theoretical complexi-

ties. Well reasoned recommenda-

tions are given.

Very clear, well struc-

tured and accessible re-

port, an undergraduate

student can pick up the

report and understand it

with no difficulty.

3.75 marks 7.5 marks 3.75 marks

Data generation and

experimental setup are

reasonably designed,

systematic and explained.

There are at least one

obvious missing suggested

scenarios, data structures

or reasonable parameters.

Each type of test was run

over a number of runs

and results were

averaged.

Analysis is reasonable and demon-

strates good understanding and crit-

ical analysis. Adequate comparisons

and explanations are made and illus-

trated with most of the suggested

scenarios and parameters. Most

analysis and comparisons are sup-

ported by empirical evidence and

possibly theoretical analysis. Rea-

sonable recommendations are given.

Clear and structured for

the most part, with a few

unclear minor sections.

2.5 marks 5 marks 2.5 marks

Data generation and

experimental setup are

somewhat adequately

designed, systematic and

explained. There are

several obvious missing

suggested scenarios, data

structures or reasonable

parameters. Each type of

test may only have been

run once.

Analysis is adequate and demon-

strates some understanding and crit-

ical analysis. Some explanations

and comparisons are given and il-

lustrated with one or two scenarios

and parameters. A portion of anal-

ysis and comparisons are supported

by empirical evidence and possibly

theoretical analysis. Adequate rec-

ommendations are given.

Generally clear and well

structured, but there are

notable gaps and/or un-

clear sections.

1 marks 2 marks 1 marks

Data generatio and

experimental setup are

poorly designed,

systematic and explained.

There are many obvious

missing suggested

scenarios, data structures

or reasonable parameters.

Each type of test has only

have been run once.

Analysis is poor and demonstrates

minimal understanding and critical

analysis. Few explanations or com-

parisons are made and illustrated

with one scenario and parameter

setting. Little analysis and compar-

isons are supported by empirical evi-

dence and possibly theoretical anal-

ysis. Poor or no recommendations

are given.

The report is unclear on

the whole and the reader

has to work hard to under-

stand.

15

COSC 1285/2123

Assignment 1

Assessment Type Group assignment. Groups as allocated and notified on Can-

vas. Submit online via Canvas → Assignments → Assign-

ment 1. Marks awarded for meeting requirements as closely as

possible. Clarifications/updates may be made via announce-

ments/relevant discussion forums.

Due Date Friday 16th April 2021, 11:59pm

Marks 30

1 Overview

One of the frequent phrases we hear during the COVID-19 panademic are epidemic

modelling and contract tracing. As the virus is transmitted human to human, one of

the effective methods to stop an outbreak is to identify the close contacts of an infected

individual, and isolate all of them for a period of time (typically 14 days). To estimate

the impact of outbreaks, epidemic modelling is an extremely important tool. A graph

is a natural representation for these close contacts, tracing outbreaks and for epidemic

modelling.

When we represent these networks as a graph, the vertices in such a graph represent

people and edges represents close contact relationship.

In class, we studied three methods to represent the graph, the adjacency list, adja-

cency matrix and vertex/edge list representations. There is a fourth type of representation

called incident matrix (see below for details). The performance of each representation

varies depending on the characteristics of the graph. In this assignment, we will imple-

ment the adjacency list, adjacency matrix and incident matrix representations for the

relational parts, and evaluate on how well they perform when modelling close contacts

and for epidemic modelling. This will assist with your understanding of the tradeoffs

between data structure representations and its effect when implementing operations or

solving problems using algorithms and data structures.

2 Learning Outcomes

This assessment relates to all of the learning outcomes of the course which are:

CLO 1: Compare, contrast, and apply the key algorithmic design paradigms: brute

force, divide and conquer, decrease and conquer, transform and conquer, greedy,

dynamic programming and iterative improvement;

CLO 2: Compare, contrast, and apply key data structures: trees, lists, stacks,

queues, hash tables and graph representations;

CLO 3: Define, compare, analyse, and solve general algorithmic problem types:

sorting, searching, graphs and geometric;

CLO 4: Theoretically compare and analyse the time complexities of algorithms and

data structures; and

CLO 5: Implement, empirically compare, and apply fundamental algorithms and

data structures to real-world problems.

3 Background

3.1 Networked SIR Model

There are several well-known epidemic models, but the one that we will focus on in

this assignment is the (Networked) SIR model. The SIR epidemic model assumes each

individual has three states - Susceptible (S) to the disease, Infected (I) by the disease and

Recovered (R) to the disease. The progression of states is assumed to be susceptible (S)

to Infected (I) to Recovered (R). Initially some in the initial population are infected and

all others are susceptible. Once recovered, an individual has immunity and will not be

further infected. There are also other models, like SIS (Susceptible, Infected, Susceptible),

but for the purpose of this assignment, we will stick with the most fundamental model,

the SIR model, as others are really variations on this.

In the traditional SIR model, there is assumption of full mixing between individuals

- i.e., any individual can potentially infect another. The model then derives differential

equations that estimates the changes in the total number of susceptible, infected and

recovered individuals over time, and these are proportional to the numbers of the other

two states - e.g., change in number of infected individuals is dependent on the number

of susceptible and the number of recovered individuals. It is able to model some diseases

relatively well, but is inaccurate for others and misses out on local spreading and effects.

Hence a networked SIR model was proposed, where instead of full mixing between in-

dividuals, infected individuals can now only infect its neighbours in the graph/network,

which typically represents some form of “close contact”.

The networked SIR model works as follows.

At each timestep, each susceptible individual can be infected by one of its infected

neighbours (doesn’t matter which one, as an individual is infected regardless of who

caused it). Each infected neighbour has a chance to infect the susceptible individual.

This chance is typically modelled as an infection parameter α - for each chance, there

is α probability of infection. In addition, at each timestep each infected individual have

a chance of recovering, either naturally or from medicine and other means (this model

doesn’t care which means). Let the recovery parameter β represent this, which means

there is β probability that an infected individual will recover and change to recovered

state. There is no transition for susceptible to recovered (which could be interesting, e.g.,

to model vaccination, but left for future assignments).

As you can probably infer, the more neighbours one has, the higher potential for

infection. Hence one reason for the general advice from the health departments to reduce

the number of close contacts. Also wearing masks reduces the infection probability, again

reducing the spread of an outbreak. In this assignment, you will get an opportunity to

experiment with these parameters and see what differences they make.

2

For more information about SIR and epidemic modelling, have an initial read here

https://en.wikipedia.org/wiki/Compartmental_models_in_epidemiology. We will

also release some recordings talking more about the model on Canvas, particularly pro-

viding more details about how to run the SIR model to simulate an epidemic, please look

at those also when they become available.

3.2 Incidence Matrix Representation

The incidence matrix represents a graph as a set of vertices and list of edges incident to

each vertex as a 2D array/matrix. More formally, let the incidence matrix of a undirected

graph be an n x m matrix A with n and m are the number of vertices and edges of the

graph respectively. The values in the matrix A follows the following rules:

Each edge ek is represented by a column in A.

Each vertex is represented by a row in A.

Let the two incident vertices to an edge ek be vi and vj. Then the matrix entries

Ai,k and Aj,k are both = 1.

Ai,k = 0 for all other non-incident edges.

For example, the following graph:

has its incidence matrix as below:

AB AC AD BC CD

A 1 1 1 0 0

B 1 0 0 1 0

C 0 1 0 1 1

D 0 0 1 0 1

For further readings about this graph representation, please see https://en.wikipedia.

org/wiki/Incidence_matrix.

4 Assignment Details

The assignment is broken up into a number of tasks, to help you progressively complete

the project.

3

Task A: Implement the Graph Representations, their Operations

and the Networked SIR model (10 marks)

In this task, you will implement data structures for representing undirected, unweighted

graphs using the adjacency list, adjacency matrix and incidence matrix representations.

Your implementation should also model vertices that have SIR model states associated

with them. Your implementation should support the following operations:

Create an empty undirected graph (implemented as a constructor that takes zero

arguments).

Add a vertex to the graph.

Add an edge to the graph.

Toggle the SIR state on vertices.

Delete a vertex from the graph.

Delete an edge from the graph.

Compute the k hop neighbours of a vertex in the graph.

Print out the set of vertices and their SIR states.

Print out the set of edges.

In addition, we want you to implement the (networked) SIR epidemic model to sim-

ulate how a virus can spread through a population.

Note that you are welcome to implement additional functionality. When constructing

our solutions to the assignment, we have found that adding some methods was helpful,

particularly for implementing the SIR model. But the above functionalities are ones you

should complete and ones you will be assessed on.

Data Structure Details

Graphs can be implemented using a number of data structures. You are to implement

the graph abstract data type using the following data structures:

Adjacency list, using an array of linked lists.

Adjacency matrix, using a 2D array (an array of arrays).

Incidence matrix, using a 2D array (an array of arrays).

4

For the above data structures, you must program your own implementation, and not

use the LinkedList or Matrix type of data structures in java.utils or any other libraries.

You must implement your own nodes and methods to handle the operations. If you use

java.utils or other implementation from libraries, this will be considered as an invalid

implementation and attract 0 marks for that data structure. The only exceptions are:

if you choose to implement a map of vertex labels to a row or column index for the

adjacency matrix or incidence matrix, you may use one of the existing Map classes

to do this.

if you choose to implement a map of vertex labels to its associated SIR state, you

may use of the existing Map classes to do so.

Operations Details

Operations to perform on the implemented graph abstract data type are specified on the

command line. They are in the following format:

where operation is one of {AV, AE, TV, DV, KN, PV, PE, SIR, Q} and arguments is for

optional arguments of some of the operations. The operations take the following form:

AV

SIR state of susceptible (S).

AE

vertex ’tarLabel’ into the graph.

TV

the next state, i.e., from S to I, from I to R (if in R, remain in R).

DV

DE

vertex ’tarLabel’ from the graph.

KN

are up to k-hops away. The ordering of the neighbours does not matter. See below

for the required format.

PV – prints the vertex set of the graph. See below for the required format. The

vertices can be printed in any order.

PE – prints the edge set of the graph. See below for the required format. The edges

can be printed in any order.

SIR

as the network, the specified seed vertices as additional set of infected vertices (in

addition to any existing in the current graph) and the two infection and recover

5

probabilities. Runs the model simulation to completion, which means two things

a) there are no more vertices with Infected (I) state and there are no changes in the

number of infected or recovered in the latest iteration of the model; or b) if condi-

tion there are still infected vertices but there has been no changes in the number of

infected or recovered for 10 iterations, then can stop the simulation. Outputs the

list of nodes infected at each iteration, see below for format.

Q – quits the program.

k-hop Neighbour operation format details The format of the output of the neigh-

bour operation for vertex ’A’ should take the form:

A: neighbour1 neighbour2 ...

If a vertex has no neighbours, then the list of neighbours should be empty. The node

’A’ should not be in the list of neighbours, and the graphs can be assumed to have no

self-loops (self loops don’t necessarily make sense for epidemic modelling).

Print vertex operation format details The print vertex operation output the ver-

tices and associated SIR state in the graph in a single line. The line should specifies all

the valid vertex (indices) in the graph.

(vertex1,state1) (vertex2,state2) (vertex3,state3) ...

where state1 is the SIR state of vertex 1 etc.

Print edge operation format details The print edge operation output the edges in

the graph in over a number of lines. Each line specifies an edge in the graph, and should

be in the following format:

srcVertex tarVertex

SIR operation format details The networked SIR model file output format is each

line represents one iteration of the process, and each line will record the number of newly

infected and recovered vertices (newly infected or recovered nodes are ones that become

infected or recovered in this iteration). The format is as follows:

Example of all operations As an example of the operations, consider the output

from the following list of operations:

AV A

AV B

AV C

AV D

AV E

AV F

AV G

6

AV H

AE A B

AE C B

AE B D

AE A E

AE D C

AE F A

AE B F

AE C G

AE G H

AE E G

AE F G

KN 1 A

KN 2 A

KN 1 F

DV C

DE B A

DE G H

KN 1 H

TV B

TV E

TV B

PV

PE

SIR A;F 0 .8 0 .5

Q

The output from the four neighbour operations (‘KN 1 A’, ‘KN 2 A’ ‘KN 1 F’, ‘KN 1

H’) should be (remember that the order these neighbourhoods do not matter so if your

output differs from this ordering but has the same set of vertices, that is fine):

A: B E F

A: B C D F E G

F: A B G

H:

The output from the print vertices operation (PV) could be (remember that the order

doesn’t matter):

(A, S) (B,R) (D, S) (E, I ) (F , S) (G, S) (H, S)

The output from the print edges operation (P E) could be (remember that the order

doesn’t matter):

A E

E A

F A

A F

B F

F B

7

D B

B D

E G

G E

F G

G F

The output from the ‘SIR A;F 0.8 0.5’ operation could be (note that it is a stochastic

model, so you can get different results for different runs, so use the following more for

what the output format should look like):

1 : [G] : [ ]

2 : [ ] : [A]

3 : [ ] : [ ]

4 : [ ] : [ ]

5 : [ ] : [F G]

6 : [ ] : [ ]

Testing Framework

We provide Java skeleton code (see Table 1 for the important files) to help you get

started and automate the correctness testing. You may add your own Java files to your

final submission, but please ensure that they compile and can be run on the core teaching

servers.

Notes

Consider the specifications here carefully. If you correctly implement the “Imple-

ment me!” parts and follow the output formating for operations like PV, PE and

SIR, you in fact do not need to do anything else to get the correct output formatting.

The main class in the provided skeleton code will handle this.

The implementation details are up to you, but you must implement your own data

structures and algorithms, i.e., do not use the built-in structures in Java unless for

the purposes outlined in the box above.

If you develop on your own machines, please ensure your code compiles and runs

on the university’s core teaching servers. You don’t want to find out last minute

that your code doesn’t compile on these machines. If your code doesn’t run on

these machines, we unfortunately do not have the resources to debug each one and

cannot award marks for testing.

All submissions should compile with no warnings on Oracle Java 1.8 - this is the

version on the core teaching servers.

Any clarifications on the Canvas FAQ or Assignment 1 Update page will override

the specifications here if they are conflicting.

8

file description

RmitCovidModelling.java Main class. Contains code that reads in operation commands

from stdin then executes those on the selected graph imple-

mentation. Also will format the output as required. No need

to modify this file.

ContactsGraph.java Interface class for the graph representations. It contains the

common interface/methods that you’ll need to implement for

the various representations. Generally no need to modify this

file, but you might want to add helper functionality, and here

would be one place to do so for common ones across all rep-

resentations..

AdjacencyList.java Code that implements the adjacency list implementation of

a graph. Complete the implementation (implement parts la-

belled “Implement me!”).

AdjacencyMatrix.java Code that implements the adjacency matrix implementation

of a graph. Complete the implementation (implement parts

labelled “Implement me!”).

IncidenceMatrix.java Code that implements the incidence matrix implementation

of a graph. Complete the implementation (implement parts

labelled “Implement me!”).

SIRState.java Code that implements the three vertex states of a SIR model.

No need to modify this file.

SIRModel.java Code that implements the networked SIR model. Complete

the implementation (implement parts labelled “Implement

me!”).

Table 1: Table of Java files.

Task B: Evaluate your Data Structures and SIR model (20 marks)

In this second task, you will evaluate your implemented structures in terms of their time

complexities for the different operations and different use case scenarios. Scenarios arise

from the possible use cases of contract tracing and epidemic modelling on a graph. In

addition, run some epidemic modelling simulations to evaluate your structures within an

application (epidemic modelling and simulation) and to explore more about the effect of

the model parameters on epidemic spreading.

Write a report on your analysis and evaluation of the different implementations. Con-

sider and recommend in which scenarios each type of implementation would be most

appropriate. Report the outcomes of your SIR epidemic model simulations. The report

should be 10 pages or less, in font size 12. See the assessment rubric (Appendix A) for

the criteria we are seeking in the report.

9

Graph generators

To evaluate the data structures, we will generate a number of graphs, then apply a

number of operations on them, see the Use Case Scenarios section next. In this section,

we describe more about how to generate the graphs, and see on Canvas for further details

and videos.

There are many ways to generate graphs, but we will focus on two:

Random (Erdos-Renyi) – there is a probability for generating an edge between any

pair of vertices.

Scale-free – graphs whose degree distribution follow a power law (see https://en.

wikipedia.org/wiki/Scale-free_network).

We suggest to use Pajek1, which is available on multiple platforms and has visual-

isation, which allows one to look at the generated graphs. But it also has basic graph

generation functionality and doesn’t require programming to use, unlike more powerful

graph libraries2.

Use Case Scenarios

Typically, you use real usage data to evaluate your data structures. However, for this as-

signment, you will write data generators to enable testing over different scenarios of

interest. We are also interested in the effect of the average degree of the graph3 on these

scenarios. There are many possibilities, but for this assignment, consider the following

scenarios:

Scenario 1 k-hop Neighbourhoods: When doing contract tracing and/or epidemic

modelling, computing neighbourhoods is an important function. In this scenario, the

graph is not changing, but important operations such as k-hop neighbourhood (recall

this is all neighbours up to k-hops away) are requested.

You are to evaluate the performance of the the k-hop neighbourhood implementations,

as the average degree of the evaluated graph and k are varied.

Scenario 2 Dynamic Contact Conditions: In the real world, the contact conditions

between people are likely not static and there will be need to update these over time. In

this scenario, the contacts are changing (been added and deleted). In this scenario, you

are to evaluate the performance of your implementations in terms of:

edge additions

edge deletions

You are to evaluate the performance the edge operations as the average degree and

size (number of vertices) of the initial graph (before edge changes) are varied.

1http://mrvar.fdv.uni-lj.si/pajek/ the website looks a bit dated, but this is one of the well

known social network analysis tools.

2Networkx https://networkx.org/ – if you know Python, you are more than welcome to use this

instead.

3Average number of neighbours per node, which both graph generator models allows to be specified

10

Scenario 3 Dynamic People Tracing: As time goes on, the people been traced will

change. Although it is possible to have a large graph that tries to capture every possible

person, it is computationally difficult to do so and run simulations on it. In this scenario,

you are to evaluate the performance of your implementations in terms of:

vertex addition

vertex deletion

You are to evaluate the performance the vertex operations as the average degree and size

(number of vertices) of the initial graph (before vertex changes) are varied.

SIR Model Epidemic Simulation

In addition to evaluating how well the graph representations perform for the contract

tracing and epidemic modelling simulations, we also want to experiment with how the

networked SIR model works and performs.

Run epidemic simulation for different graph types (Erdos-Renyi and Scale-free), differ-

ent seed initialisations and different infection and recover probabilities. For performance

evaluation, evaluate each of the three data structures on a subset of the possible simula-

tion parameters and compare how they perform (in terms of timing efficiency).

We don’t expect a comprehensive analysis, but want you to explore and gain a better

understanding of epidemic modelling and what it implies for how to limit the spread of

epidemics.

Consider how you might present the results, but at a minimum plot the following:

Number of susceptible, infected and recovered after every iteration.

Data Generation

When generating the vertices and edges to add or remove and find neighbourhoods for,

the distribution of these elements, compared to what is in the graph already, will have

an effect on the timing performance. However, without the usage and query data, it is

difficult to specify what this distributions might be. Instead, in this assignment, uniformly

sample from a fixed range, e.g., 0 to max vertex label of your graph when generating the

vertices and edges for removing and adding and k-hop neighbourhoods, and a different

range (e.g., greater than the largest vertex label when adding vertices (we do not want

to repeatingly add vertices that are in the graph already).

For generating graphs with different initial average degrees and sizes, you can either

use Pajek or your favourite graph generator, we will not prescribe one particular approach.

Whichever method you decide to use, remember to generate graphs of different average

degrees to evaluate on. Due to the randomness of the data, you may wish to generate a

few graphs with the same average degrees and sizes and take the average across a number

of runs when performing the performance evaluation and analysis.

Analysis

In your analysis, you should evaluate each of your representations and data structures in

terms of the different scenarios outlined above.

Note, you may be generating and evaluating a significant number of graphs and evaluation

datasets, hence we advise you to get started on this part relatively early.

11

5 Report Structure

As a guide, the report could contain the following sections:

Explain your data and experimental setup. Things to include are (brief) explana-

tions of the data scenarios you decide to evaluate on (e.g., how many additions/re-

movals operations did you evaluate and why these), size of the graphs, the range of

average degrees tested (add some brief explanation of why this range selection), de-

scribe how the scenarios were generated (a paragraph and perhaps a figure or high

level pseudo code suffice), which approach(es) you decide to use for measuring the

timing results, and briefly describe the fixed set(s) you sampled from to generate

the elements for addition, removal of vertices and edges and k-hop neighbourhood

of the graphs.

Evaluation of the data structures using the generated data (different scenarios,

average degree, graph size). Analyse, compare and discuss your results. Provide

your explanation on why you think the results are as you observed. You may

consider using the known theoretical time complexities of the operations of each

data structure to help in your explanation if useful.

Summarise your analysis as recommendations, e.g., for this certain data scenario

of this average degree (and size), I recommend to use this data structure because...

We suggest you refer to your previous analysis to help.

Evaluate the different parameters of the SIR model and its effect on the number

of susceptible, infected and recovered individuals over time. Which combination

of parameters has the fastest infection spread, which one has the most extensive

number of infected? How does the average timing compare between your three

graph representation? Can you explain why?

6 Submission

The final submission will consist of three parts:

Your Java source code of your implementations. Include only source code

and no class files, we will compile your code on the core teaching serers. Make

sure that your assignment can run only with the code included! That is, it should

be self contained, including all the skeleton code needed to run it.

Your source code should be placed into in a flat structure, i.e., all the files should

be in the same directory/folder, and that directory/folder should be named as

Assign1-

when unzip Assign1-s12345.zip is executed then all the source code files should

be in directory Assign1-s12345.

Your data generation code. Create a sub-directory/sub-folder called “gener-

ation” within the Java source file directory/folder. Place your generation code

within that folder. We will not run the code, but may examine their contents.

Your written report for part B in PDF format, called “assign1.pdf”. Submit

this separately to a Turnitin submission.

12

Note: submission of the report and code will be done via Canvas. We will

provide details closer to the submission deadline. We will also provide details on how

the setup we use to test the correctness of your code will be like, so you can ensure your

submitted structure will conform to the automated testing we will perform.

7 Assessment

The project will be marked out of 30. Late submissions will incur a deduction of 3 marks

per day, and no submissions will be accepted 5 days beyond the due date and will attract

0 marks for the assignment.

The assessment in this project will be broken down into two parts. The following

criteria will be considered when allocating marks.

Implementation (10/30):

You implementation will be assessed based on the number of tests it passes in our

automated testing.

While the emphasis of this project is not programming, we would like you to main-

tain decent coding design, readability and commenting, hence commenting and

coding style will make up a portion of your marks.

Report (20/30):

The marking sheet in Appendix A outlines the criteria that will be used to guide the

marking of your evaluation report4. Use the criteria and the suggested report structure

(Section 5) to inform you of how to write the report.

8 Team Structure

This project should be done in pairs (group of two). If you have difficulty in finding a

partner, post on the discussion forum or contact your lecturer. If you want to do the

assignment individually, please contact one of your lecturers first and obtain his

approval.

In addition, please submit what percentage each partner made to the assignment (a

contribution sheet will be made available for you to fill in), and submit this sheet in your

submission. The contributions of your group should add up to 100%. If the contribution

percentages are not 50-50, the partner with less than 50% will have their marks reduced.

Let student A has contribution X%, and student B has contribution Y%, and X > Y .

The group is given a group mark of M. Student A will get M for assignment 1, but student

B will get MX

Y

.

This semester we will also institute some additional group management initiatives,

including registration and not allowing further group changes in the week before the due

date. We will detail more about this on Canvas.

4Note for the marking guide, if one of the criteria is not demonstrated a tall, then 0 marks will be

awarded for that criteria.

13

9 Academic integrity and plagiarism (standard warning)

Academic integrity is about honest presentation of your academic work. It means ac-

knowledging the work of others while developing your own insights, knowledge and ideas.

You should take extreme care that you have:

Acknowledged words, data, diagrams, models, frameworks and/or ideas of others

you have quoted (i.e. directly copied), summarised, paraphrased, discussed or men-

tioned in your assessment through the appropriate referencing methods

Provided a reference list of the publication details so your reader can locate the

source if necessary. This includes material taken from Internet sites. If you do not

acknowledge the sources of your material, you may be accused of plagiarism because

you have passed off the work and ideas of another person without appropriate

referencing, as if they were your own.

RMIT University treats plagiarism as a very serious offence constituting misconduct.

Plagiarism covers a variety of inappropriate behaviours, including:

Failure to properly document a source

Copyright material from the internet or databases

Collusion between students

For further information on our policies and procedures, please refer to the following:

https://www.rmit.edu.au/students/student-essentials/rights-and-responsibilities/

academic-integrity.

We will run both code and report similarity checks.

10 Getting Help

There are multiple venues to get help. First point of call should be Canvas, assignment

FAQ (on Canvas), recordings about it and the discussion forum. There will also be weekly

online consultation hours for the assignment (see Canvas for times). In addition, you are

encouraged to discuss any issues you have with your Tutor or Lab Demonstrator. Please

refrain from posting solutions to the discussion forum.

14

A Marking Guide for the Report

Design of Evaluation Analysis of Results Report Clarity and Structure

(Maximum = 5 marks) (Maximum = 10 marks) (Maximum = 5 marks)

5 marks 10 marks 5 marks

Data generation and

experimental setup are

well designed, systematic

and well explained. All

suggested scenarios, data

structures and a

reasonable range of

parameters were

evaluated. Each type of

test was run over a

number of runs and

results were averaged.

Analysis is thorough and demon-

strates understanding and critical

analysis. Well-reasoned explana-

tions and comparisons are provided

for all the data structures, sce-

narios and parameters. All anal-

ysis, comparisons and conclusions

are supported by empirical evidence

and possibly theoretical complexi-

ties. Well reasoned recommenda-

tions are given.

Very clear, well struc-

tured and accessible re-

port, an undergraduate

student can pick up the

report and understand it

with no difficulty.

3.75 marks 7.5 marks 3.75 marks

Data generation and

experimental setup are

reasonably designed,

systematic and explained.

There are at least one

obvious missing suggested

scenarios, data structures

or reasonable parameters.

Each type of test was run

over a number of runs

and results were

averaged.

Analysis is reasonable and demon-

strates good understanding and crit-

ical analysis. Adequate comparisons

and explanations are made and illus-

trated with most of the suggested

scenarios and parameters. Most

analysis and comparisons are sup-

ported by empirical evidence and

possibly theoretical analysis. Rea-

sonable recommendations are given.

Clear and structured for

the most part, with a few

unclear minor sections.

2.5 marks 5 marks 2.5 marks

Data generation and

experimental setup are

somewhat adequately

designed, systematic and

explained. There are

several obvious missing

suggested scenarios, data

structures or reasonable

parameters. Each type of

test may only have been

run once.

Analysis is adequate and demon-

strates some understanding and crit-

ical analysis. Some explanations

and comparisons are given and il-

lustrated with one or two scenarios

and parameters. A portion of anal-

ysis and comparisons are supported

by empirical evidence and possibly

theoretical analysis. Adequate rec-

ommendations are given.

Generally clear and well

structured, but there are

notable gaps and/or un-

clear sections.

1 marks 2 marks 1 marks

Data generatio and

experimental setup are

poorly designed,

systematic and explained.

There are many obvious

missing suggested

scenarios, data structures

or reasonable parameters.

Each type of test has only

have been run once.

Analysis is poor and demonstrates

minimal understanding and critical

analysis. Few explanations or com-

parisons are made and illustrated

with one scenario and parameter

setting. Little analysis and compar-

isons are supported by empirical evi-

dence and possibly theoretical anal-

ysis. Poor or no recommendations

are given.

The report is unclear on

the whole and the reader

has to work hard to under-

stand.

15

- 留学生代写
- Python代写
- Java代写
- c/c++代写
- 数据库代写
- 算法代写
- 机器学习代写
- 数据挖掘代写
- 数据分析代写
- Android代写
- html代写
- 计算机网络代写
- 操作系统代写
- 计算机体系结构代写
- R代写
- 数学代写
- 金融作业代写
- 微观经济学代写
- 会计代写
- 统计代写
- 生物代写
- 物理代写
- 机械代写
- Assignment代写
- sql数据库代写
- analysis代写
- Haskell代写
- Linux代写
- Shell代写
- Diode Ideality Factor代写
- 宏观经济学代写
- 经济代写
- 计量经济代写
- math代写
- 金融统计代写
- 经济统计代写
- 概率论代写
- 代数代写
- 工程作业代写
- Databases代写
- 逻辑代写
- JavaScript代写
- Matlab代写
- Unity代写
- BigDate大数据代写
- 汇编代写
- stat代写
- scala代写
- OpenGL代写
- CS代写
- 程序代写
- 简答代写
- Excel代写
- Logisim代写
- 代码代写
- 手写题代写
- 电子工程代写
- 判断代写
- 论文代写
- stata代写
- witness代写
- statscloud代写
- 证明代写
- 非欧几何代写
- 理论代写
- http代写
- MySQL代写
- PHP代写
- 计算代写
- 考试代写
- 博弈论代写
- 英语代写
- essay代写
- 不限代写
- lingo代写
- 线性代数代写
- 文本处理代写
- 商科代写
- visual studio代写
- 光谱分析代写
- report代写
- GCP代写
- 无代写
- 电力系统代写
- refinitiv eikon代写
- 运筹学代写
- simulink代写
- 单片机代写
- GAMS代写
- 人力资源代写
- 报告代写
- SQLAlchemy代写
- Stufio代写
- sklearn代写
- 计算机架构代写
- 贝叶斯代写
- 以太坊代写
- 计算证明代写
- prolog代写
- 交互设计代写
- mips代写
- css代写
- 云计算代写
- dafny代写
- quiz考试代写
- js代写
- 密码学代写
- ml代写
- 水利工程基础代写
- 经济管理代写
- Rmarkdown代写
- 电路代写
- 质量管理画图代写
- sas代写
- 金融数学代写
- processing代写
- 预测分析代写
- 机械力学代写
- vhdl代写
- solidworks代写
- 不涉及代写
- 计算分析代写
- Netlogo代写
- openbugs代写
- 土木代写
- 国际金融专题代写
- 离散数学代写
- openssl代写
- 化学材料代写
- eview代写
- nlp代写
- Assembly language代写
- gproms代写
- studio代写
- robot analyse代写
- pytorch代写
- 证明题代写
- latex代写
- coq代写
- 市场营销论文代写
- 人力资论文代写
- weka代写
- 英文代写
- Minitab代写
- 航空代写
- webots代写
- Advanced Management Accounting代写
- Lunix代写
- 云基础代写
- 有限状态过程代写
- aws代写
- AI代写
- 图灵机代写
- Sociology代写
- 分析代写
- 经济开发代写
- Data代写
- jupyter代写
- 通信考试代写
- 网络安全代写
- 固体力学代写
- spss代写
- 无编程代写
- react代写
- Ocaml代写
- 期货期权代写
- Scheme代写
- 数学统计代写
- 信息安全代写
- Bloomberg代写
- 残疾与创新设计代写
- 历史代写
- 理论题代写
- cpu代写
- 计量代写
- Xpress-IVE代写
- 微积分代写
- 材料学代写
- 代写
- 会计信息系统代写
- 凸优化代写
- 投资代写
- F#代写
- C#代写
- arm代写
- 伪代码代写
- 白话代写
- IC集成电路代写
- reasoning代写
- agents代写
- 精算代写
- opencl代写
- Perl代写
- 图像处理代写
- 工程电磁场代写
- 时间序列代写
- 数据结构算法代写
- 网络基础代写
- 画图代写
- Marie代写
- ASP代写
- EViews代写
- Interval Temporal Logic代写
- ccgarch代写
- rmgarch代写
- jmp代写
- 选择填空代写
- mathematics代写
- winbugs代写
- maya代写
- Directx代写
- PPT代写
- 可视化代写
- 工程材料代写
- 环境代写
- abaqus代写
- 投资组合代写
- 选择题代写
- openmp.c代写
- cuda.cu代写
- 传感器基础代写
- 区块链比特币代写
- 土壤固结代写
- 电气代写
- 电子设计代写
- 主观题代写
- 金融微积代写
- ajax代写
- Risk theory代写
- tcp代写
- tableau代写
- mylab代写
- research paper代写
- 手写代写
- 管理代写
- paper代写
- 毕设代写
- 衍生品代写
- 学术论文代写
- 计算画图代写
- SPIM汇编代写
- 演讲稿代写
- 金融实证代写
- 环境化学代写
- 通信代写
- 股权市场代写
- 计算机逻辑代写
- Microsoft Visio代写
- 业务流程管理代写
- Spark代写
- USYD代写
- 数值分析代写
- 有限元代写
- 抽代代写
- 不限定代写
- IOS代写
- scikit-learn代写
- ts angular代写
- sml代写
- 管理决策分析代写
- vba代写
- 墨大代写
- erlang代写
- Azure代写
- 粒子物理代写
- 编译器代写
- socket代写
- 商业分析代写
- 财务报表分析代写
- Machine Learning代写
- 国际贸易代写
- code代写
- 流体力学代写
- 辅导代写
- 设计代写
- marketing代写
- web代写
- 计算机代写
- verilog代写
- 心理学代写
- 线性回归代写
- 高级数据分析代写
- clingo代写
- Mplab代写
- coventorware代写
- creo代写
- nosql代写
- 供应链代写
- uml代写
- 数字业务技术代写
- 数字业务管理代写
- 结构分析代写
- tf-idf代写
- 地理代写
- financial modeling代写
- quantlib代写
- 电力电子元件代写
- atenda 2D代写
- 宏观代写
- 媒体代写
- 政治代写
- 化学代写
- 随机过程代写
- self attension算法代写
- arm assembly代写
- wireshark代写
- openCV代写
- Uncertainty Quantificatio代写
- prolong代写
- IPYthon代写
- Digital system design 代写
- julia代写
- Advanced Geotechnical Engineering代写
- 回答问题代写
- junit代写
- solidty代写
- maple代写
- 光电技术代写
- 网页代写
- 网络分析代写
- ENVI代写
- gimp代写
- sfml代写
- 社会学代写
- simulationX solidwork代写
- unity 3D代写
- ansys代写
- react native代写
- Alloy代写
- Applied Matrix代写
- JMP PRO代写
- 微观代写
- 人类健康代写
- 市场代写
- proposal代写
- 软件代写
- 信息检索代写
- 商法代写
- 信号代写
- pycharm代写
- 金融风险管理代写
- 数据可视化代写
- fashion代写
- 加拿大代写
- 经济学代写
- Behavioural Finance代写
- cytoscape代写
- 推荐代写
- 金融经济代写
- optimization代写
- alteryxy代写
- tabluea代写
- sas viya代写
- ads代写
- 实时系统代写
- 药剂学代写
- os代写
- Mathematica代写
- Xcode代写
- Swift代写
- rattle代写
- 人工智能代写
- 流体代写
- 结构力学代写
- Communications代写
- 动物学代写
- 问答代写
- MiKTEX代写
- 图论代写
- 数据科学代写
- 计算机安全代写
- 日本历史代写
- gis代写
- rs代写
- 语言代写
- 电学代写
- flutter代写
- drat代写
- 澳洲代写
- 医药代写
- ox代写
- 营销代写
- pddl代写
- 工程项目代写
- archi代写
- Propositional Logic代写
- 国际财务管理代写
- 高宏代写