The University of Western Ontario
Department of Computer Science

CS9668 Internet Algorithmics

2016

Instructor

Roberto Solis-Oba
Office: MC 417
Email: solis@csd.uwo.ca

Office hours: Wednesday from 2:30 pm to 3:30 pm and Friday from 3:30 pm to 5:00 pm.
Course Description

Outline.

Assignments

Assignment 1. Due date: October 21 during class.
Assignment 2. Due date: November 9.
Assignment 3. Optional assignment. Due date: December 2 during class.

Lecture Notes

Projects

Project due date: December 14

Topics

Organization of your report

Presentations (December 8-13)

Chat Server

cnaiapi library. Computer Networks and Internets API Library (Written by Michael H. Evangelista)
Cnaiapi library documentation
readln auxiliary library
cnaiapi.h
compile script
chat server
chat client

To compile the chat client and chat server, place all above files in the same directory, type

    compile chatclient

to compile the chat client and type

    compile chatserver

to compile the chat server. To run the server type

    chatserver portnumber

where portnumber is the port number that you want to use for the server. To run the client type

    chatclient serveraddress portnumber

where serveraddress is the symbolic address of the machine running the chat server, and portnumber is the port number selected by the chat server. The chat server must be started first.

      Chat server and chat client in Java
ChatClient.java
ChatServer.java

To compile the programs type

    java ChatClient.java ChatServer.java

To run the chat server type

    java ChatServer portnumber

To run the client type

    java ChatClient serveraddress portnumber

where serveraddress is the symbolic address of the machine running the chat server, and portnumber is the port number selected by the chat server. The chat server must be started first.

Marks

You can see your marks using OWL.

Simulator for Synchronous Distributed Systems

There are two versions of the simulator. The first version does not have a graphical user interface. When an algorithm is executed, the simulator prints messages on the screen describing the different events taking place during the execution of the algorithm. This version of the simulator and instructions to use it can be found below.
Simulator (simulator.jar) No GUI.
How to use this version of the simulator
The second version of the simulator is by Daniel Servos and it has a nice graphical user interface. You need to read the instructions from the first version of the simulator and the instructions below to be able to use it.
Simulator (simulator.jar) With GUI.
How to use the GUI.
Below you can find examples of distributed algorithms and the inputs needed to run them on the simulator.
Leader election algorithm (LeaderElection.java)
LeaderElection.class
Input file for the leader election algorithm
Broadcasting algorithm (Broadcast.java)
Broadcast.class
Input file for the broadcasting algorithm
runsim script (for UNIX)
runsim script (for Windows)
compile java file (for UNIX)
compile java file (for Windows)
Papers and notes

Paper about name servers

Lecture notes on distributed algorithms by Hagit Attiya.
Paper about consistent hashing
Paper describing the architecture of a web crawler

Paper describing PageRank
Paper about the structure of the Web Graph
Paper describing the greedy dual size algorithm