MoK Projects



Whereas the following projects are mostly conceived for graduate students following the course on Distributed Systems,  anyone coming across this page is welcome to contact Stefano Mariani if interested: most projects can be adjusted to cover both a thesis and a master thesis.


  • Information exploration and exploitation: leveraging Behavioural Implicit Communication in distributed shared workspaces

Despite the specific project chosen, reading the following papers is highly recommended:

As a reference, a completed project in this area of interest is

Despite the specific project chosen, reading this then this is highly recommended.

  • Storage in MoK: experimenting with column-oriented / tabular DBs
  • Storage in MoK: experimenting with document-oriented DBs
    • OrientDB multi-model DB (graph, document, even relational views)
    • Terrastore scalable document store
  • Information management: decentralized self-* algorithms, semantic reasoning on resource-constrained devices, efficient in-memory DBs

Also, the list of projects may likely be updated with novel proposals anytime: please, if interested, check periodically for updates.


The goals of participating in these projects are:

  1. make students learn advanced topics about coordination, multi-agent systems, and middleware
  2. make students work on state-of-art research topics using widely adopted technologies
  3. make students fruitfully contribute in building a novel technology, while having fun

The projects below are split into four research topics, which are, not by chance, the main logical components of the Molecules of Knowledge technology.
As such, besides being the whole set of projects conceived to become part of a coherent and integrated MoK "ecosystem", projects within the same topic are tightly coupled.
Nevertheless, they are designed so as to be modular enough to allow separate activities and separate software products.
Therefore, a fundamental concern to account for while developing the projects independently, is to promote reusability and modularisation with the goal of future integration.

Expected outcome

The expected outcome of any project listed below is

  • a written essay describing the activities undertaken to develop the project (goals, challenges, methodology, solutions, etc.)
  • a software module supporting and demonstrating the projects claims

Nevertheless, the exact nature of each artefact is also determined by the specific project itself and by the evolution of the same.

To quickly getting a grasp of what Molecules of Knowledge is, read the "Overview" page and this MoK talk (link to Slideshare therein, too).
Then, besides the literature and reference material specific to each project, you are strongly advised to read the MoK "Overview" page and the following papers on MoK foundations:

Technical info

The second goal described above states "make students work on state-of-art research topics using widely adopted technologies". This means that it is important for you to learn using the right tools for developing software products: besides being useful for boosting your productivity, it will be extremely valuable in your future workplace. Accordingly, all the projects must be developed using the following tools:

  • Java, as the main programming language and execution platform (some projects may require other languages for specific tasks)
  • Eclipse, as the reference IDE (featuring some invaluable plugins I'd like for you to adopt, e.g. Checkstyle and FindBugs)
  • Maven, as project management tool of our choice (supporting coherent development of your software products and easy integration)
  • Git, as the distributed version control system of our choice (enabling distributed development and preventing you to break everything ;D)
  • Bitbucket, as the source code hosting service of our choice (enabling distributed development and preventing you to break everything ;D)

Usage is straightforward, nevertheless, here it is a quick how-to about setting up your working environment:

  1. Clone with Git the project codebase from its Bitbucket online repository into a custom folder on your machine. Git is a Distributed Version Control Systems, available from here, quick guide here. Either use Git from the command line or through a graphical client (e.g., SourceTree is available both under Mac and Windows). E.g., if using the command line, type (replacing username with your Bitbucket username) 
git clone

Folder 'mok-projects' should be created, storing the project codebase.

  1. Checkout the remote branch named after your group members' surnames (e.g., 'feature/surname1-surname2') on your local copy of the repository (that is, within folder 'mok-projects'). E.g., if using Git from the command line, type 
git fetch origin


git checkout -b feature/surname1-surname2 origin/feature/surname1-surname2

If you now type

git branch

you should see two branches: 'master' and 'feature/surname1-surname2', the latter with an asterisk next to it.

  1. Open a new Eclipse workspace therein, that is, into the newly-created folder 'mok-projects'. You may use another IDE if you wish, but usage of Eclipse is warmly suggested, due to the following plugin I wish you to use.
  2. If necessary, download & install the Maven plugin for Eclipse, available from
  3. If necessary, download & install the Checkstyle plugin for Eclipse, available from!/
  4. If necessary, download & install the FindBugs plugin for Eclipse, available from
  5. Import all the Eclipse preferences from the cloned file 'Eclipse-prefs.epf', within folder 'mok-projects/mok/config/'. If successful, under 'Eclipse > Preferences > Java > Code Style > Clean Up' you should see 'TuCSoN' under label 'Active profile:'.
  6. Import the codebase you just cloned as a Maven project. Choose 'File > Import... > Maven > Existing Maven Projects' then choose 'mok-projects/mok' as the "Root Directory:". If successful, a number of Maven (Java) modules (projects) should appear in the "Package Explorer" view, decorated with a little 'M' in the upper-left corner of the project icon, and a little 'J' in the upper-right corner (except for project 'mok', which only has the 'M' label), as shown by the screenshot at the bottom of the page.
  7. If necessary, fix the directory structure of the imported projects according to the screenshot at the bottom of the page.
  8. Import Checkstyle preferences from the cloned file 'MoK-checkstyle.xml', within folder 'mok-projects/mok/config/'. Choose 'Eclipse > Preferences > Checkstyle > New', then 'Project Relative Configuration' next to label "Type", browsing to file 'mok-projects/mok/config/MoK-checkstyle.xml' (give it the name of your choice, doesn't matter). To finish, select the "Check Configuration" just imported then click on "Set as Default".
  9. Happy coding ;D

For any question, do not hesitate to mail Stefano Mariani


MoK Resources

Partita IVA: 01131710376 - Copyright © 2008-2022 APICe@DISI Research Group - PRIVACY