The University of Western Australia
Computer Science and Software Engineering

Department of Computer Science and Software Engineering

CITS3002 Computer Networks

Practical project 2020 - clarifications

(due 5pm Fri 22nd May - end of week 11)

See also: The project and Getting Started

Please post requests for clarification about any aspect of the project to help3002, so that all students may remain equally informed. They will be summarized here.

14th May
Please note: the project does not require you to find the absolute fastest route between source and destination - just a valid one (though great to see, however, that some students are investigating this).

If each station's timetables indicate that there's no connections to the destination today, then report that there is no route - do not wait until the first possible connection tomorrow.

11th May
You can safely assume that no UDP datagrams will be lost on (within) a single machine; they will all arrive at their destination port.

10th May
Still unsure how to get started; too many shellscripts not helping?

  • The C program buildrandomtimetables.c, when compiled and executed, generates a random network of bidirectional links, and creates files holding its adjacency (connectivity) information and each station's timetables. Though random, the network is guaranteed to be connected, and all generated files are in their correct format.
    Generate a 6-station network with:

    shell>  ./buildrandomtimetables 6

  • The shellscript, takes an adjacency file as input, and generates another shellscript containing commands to invoke each station server with available TCP and UDP ports as their arguments. You will need to edit the generated shellscript to correctly invoke your servers written in Java or Python.
    Create a shellscript which starts the station servers:

    shell>  ./ adjacency

  • The shellscript takes a script which starts your station servers as input, and generates an HTML webpage that can be used to contact each server. The webpage will need to be opened in a web-browser.
    Create a webpage to make route queries:

    shell>  ./ myform.html

  • (Only for the brave) the shellscript builds our project's simplified timetable files from downloaded Transperth GTFS textfiles.
    Generate 90 timetable files for the Transperth network (on Wednesdays):

    shell>  ./    # takes several minutes

5th, 7th May
There's now 4 helpful shellscripts on the Getting Started page (each highlighted in yellow) -,,, and

2nd May
The project description has been updated, and the Getting Started page completed. The project's specification has not changed but, hopefully, the wording on the webpages has improved to make things clearer.
The Getting Started page also provides a shellscript producing a webpage that can be used to query each server.

28th April
On programming language choice:
2 of Java and Python and (C or C++) - note, not C and C++

On programming language versions:
For C - definitely C99 or C11... (nothing earlier, which only supports ANSI C89)
For C++ - C++11 or C++17
For Python - v3.6 or later, not Python-2.x
For Java - Java-11 appears sufficient

24th April
More advice, than a clarification - do not attempt to code anything immediately. Instead, grab some paper or a notebook and undertake some design of your project. "Computer Science is all boxes and arrows".

Focus on the following questions:
Who are the significant players?
What information needs to be communicated?
How will the information be represented?
What path will the information take?
How will success and failures be communicated?

This Page

Written by: [email protected]