Distributed Systems - Practical Exercises

Fractal Computation
(more about fractals - click here)

In 1953 I realized that the straight line leads to the downfall of mankind. But the straight line has become an absolute tyranny. The straight line is something cowardly drawn with a rule, without thought or feeling; it is the line which does not exist in nature. And that line is the rotten foundation of our doomed civilization. Even if there are places where it is recognized that this line is rapidly leading to perdition, its course continues to be plotted. ..Any design undertaken with the straight line will be stillborn. Today we are witnessing the triumph of rationalist know-how and yet, at the same time, we find ourselves confronted with emptiness. An aesthetic void, dessert of uniformity, criminal sterility, loss of creative power. Even creativity is prefabricated. We are no longer able to create. That is our real illiteracy.  

Friedensreich Hundertwasser

In the first part of the practical exercises you will have to design a Java Program for computing and displaying fractals. After an introductory variant, in which you will design a single process variant, you will have to derive some "complicated" versions of distributed applications, to learn more about the communications mechanisms within distributed systems. You have to think about failure tolerance, load balancing, etc. These aspects does not need to be implement in detail, you can discuss about them.

1.1 Single-Process Variant
You have to implement a simple Java program to compute and display a fractal function (we suggest you to implement the Mandelbrot Set; for a better documentation about fractals you should visit this link). The program will have as input the necessary parameters (nmax, coordinates of G) and will compute which points contained in G are also in the Mandelbrot set. By choosing two points in your representation or of an whole region, the program has to compute the Mandelbrot set for the new region (new G). Think already at this point to your next tasks! (the computation of a graphic region has to be implemented in a separate class).

1.2 Sockets Variant
The fractal computation has to be made in a different Server-Program. This Compute-Server has to be started in different points in your LAN. The client designed in the Project 1.1 will send computation-requests to these servers. The client has to be able to distribute its requests (the graphic representation can be partitioned) and send them to different servers. The final graphical representation of the chosed fractal function will be the result collected for all these servers. For the communication between Server and Client you can chose either TCP or UDP (with Multicast respectively) Sockets. YOu can decide on the form in which you want to encode the packets transmitted between Server and Client. (for more information about Sockets, please click here)

1.3 Java RMI Variant
As 1.2 with the difference that you will use RMI to invoke the methods in the remote Server Classes. (for more information about RMI, please click here)

1.4 CORBA Variant
As 1.2 with the difference that the Service Interface has to be specified within CORBA IDL. Your system has to be implemented as a CORBA Client/Server application. (for more information about CORBA, please click here)