University stuff

In this page I tried to organize the material about some of the exams I took: projects, papers, exercises and exams' solutions. Maybe some students will find these things interesting.

Computer System Security

I wrote a short paper on the security aspects of electronic voting and the receipt-freeness property in particular. Receipt-freeness guarantees that the voter keeps its vote secret, so that no one else can be convinced of the way he voted (even if the voter collaborates); at the same time, the voter is still able of verifying that his vote has been correctly tallied.

E-voting paper 

Distributed Systems

Duno screenshot Albana and I have designed and developed a distributed version of the famous card game known as UNO. We called it DUNO which stands for Distributed UNO. DUNO is written in Java, communications are based on Java RMI. It's fully decentralized (no server needed to coordinate the game). It aims at being fault tolerant against peers' crashes. Duno is actively developed and is now hosted by SourceForge: have a look at Duno's project page.

Duno source code 

Duno documentation 

Middleware

My group and I did a short presentation of the J2EE based Collaborative Information Portal developed for the NASA's Mars exploration mission. The slides summarizes the content of this paper.

We also developed a J2EE application that helps managing rooms' bookings in a hypothetical university/school. The application works on the JBoss with both centrilized and clustered configuration. The points of strength of this application are:

  • fine grained mechanisms of booking rooms over deeply customizable periods of time
  • users are given roles that define the permissions of booking rooms
  • roles can be added/removed and their booking policy can be modified later
  • reservations can be canceled partially or as a whole

Paper slides 

Project source code 

Project documentation 

Software Engineering

Yadoda screenshot I played the role of project manager during the development of project for this exam. My team and I designed and implemented a personal digital library called Yadoda (though the original name in the documentation is still BiblioTech): user can create their own ontology and a database of digital documents (pdf, ps, mp3, images) that can be enriched with metadata (author,date,title). User can create semantic relations between documents and navigate them. It works on both Linux and Windows. Yadoda is no longer developed: it needs some deep refactoring, a new GUI and a better integration with desktop manager. Yadoda is hosted by SourceForge: have a look at Yadoda's project page. Source code can be checked out from the SVN repository, read how in the download page of the project. This wiki page describes the development process of Yadoda (Bibliotech); there's a diary of the group jobs and links to the member's page.

Yadoda documentation 

Yadoda slides 

Algorithms on computer networks

This is absolutely the most difficult exam I ever have taken! It took about 2 months of hard study for me to be ready. I should thank my friend Mirco for the helpful discussions in front of the blackboards of the Department of Mathematics. I collected almost all of the solutions to the exercises we solved in that period (July 2005). I'm sure they will be of great help to other students. There're some diagrams drawn with XFig that can be converted to Postscript in order to be printed. Issue the command: fig2dev -p <input.fig> <output.ps>. Before asking any questions, please read the README file inside.

Solved exercises  

Complex adaptive systems

Random graph from a scale free graph I really appreciated the arguments treated by this exam. I suggest anyone to take it or to follow prof. Babaoglu's lessons, at least. Two tasks for this exam: make a brief presentation of a research paper on complex systems and write a randomizer protocol for the Peersim simulator. The paper I chose is The Role of Computation in Complex Regulatory Networks. You can download my slides, the randomizer algorithm source and a brief analysis of its performance.

Paper slides 

Randomizer source code 

Randomizer documentation 

Programming languages and compilers

The project of this exam was the definition and implementation of a programming language. We called it CinC which stands for "CinC is not C" (recursive acronym :-). It is a trivial procedural language with strong typechecking which syntax was inspired by C, Java, Python and finally OCaml (everyone in the team suggested his preferences). Primitive types are Integers, Booleans, Strings and (multiple) Arrays of the previous types. The main feature of this language is that you don't need to define function prototypes, even with mutually recursive functions. Like OCaml, CinC understands recursive comments. Despite of the name, CinC compiler is entirely written in C and is based on Jasmin, a backend which generates Java bytecode. Lexical analyzer and syntax parser generators are respectively Flex and Bison.

Cinc source code 

Cinc documentation 

Computer Networks

For this exam, my collegue Matteo and I developed Fshame (aka File SHaring shAME). It's mainly a proxy that acts as an intermediate between clients and a group of servers; the proxy listens to the clients' requests for downloading files and then forwards these requests to the group of servers. Traffic loading between proxy and servers is balanced in order to make the best of the bandwidth of each server. The proxy protocol aims at maximizing the download speed of the clients. The file to be downloaded is divided in small frames of data by the proxy; initial frames receive a higher priority and are requested to the server at first. Clients don't care about how file data has been downloaded.

Fshame source code 

Programming

GnuForza4 is a board game for two players which is often called "5 in a row". The goal is to align four of your fiches horizontally, vertically or diagonally inside a grid. You must be faster than your opponent. The program is entirely written in C and has a ncurses interface. The AI is based on the brute-force strategy, to say, it tries to resolve the whole system and valuates the winning choices. Each possible solution is given a score; the AI playes according to the solution with the best score.

Gforza4 source code 

Last changes: March 17th, 2007

Iraq Body Count Banner Iraq Boday Count Values Digital Restrictions Management Support Amnesty International Written with GVIM Valid XHTML 1.1! Valid CSS!