Proposals
Overview
Proposed projects are divided into the following main categories:
-
Tuple Based coordination , where students may contribute in several ways to our software artifacts concerning the tuple based coordination, i.e.:
-
TuSoW : the same LINDA implementation you used during the Lab lessons
-
TuCSoN : another legacy implementation of LINDA, which is and has been the basis for several research works in our team. In particular, it supports not only tuple spaces but also tuple centres
-
You can read more about TuCSoN and the tuple centre notion by looking for the many papers mentioning them among the ones published by prof. Omicini
-
log in
with your
@studio.unibo.it
credentials on the Apice portal, in order to be able to download and read our papers
-
log in
with your
-
Or you may look for the many theses on these subjects available on AMS Tesi
-
-
ReSpecT : a language aimed at programming tuple centres in order to govern the interaction space
- A good starting point for developers: http://apice.unibo.it/xwiki/bin/view/Publications/RespectxComsis15
- Formal semantics: http://apice.unibo.it/xwiki/bin/view/Publications/RespectEntcs175
- Again, have a look to the many theses about it on AMS Tesi
-
-
Logic Programming as a Service (LPaaS) , where students may contribute in several ways to our software artifacts concerning the LPaaS ecosystem
-
Put it simply, LPaaS leverages on a Logic Programming engine (e.g.
tuProlog
) wrapped by a ReSTful web service - Some interesting details are provided here: http://apice.unibo.it/xwiki/bin/view/Publications/LpaasBdcc2
-
Put it simply, LPaaS leverages on a Logic Programming engine (e.g.
-
Blockchain , where students may contribute in several ways in order to improve their (and our) understanding of the Blockchain model and technology
- Several details about the Blockchain topic have been presented within the course: http://iol.unibo.it/mod/resource/view.php?id=162951
-
[Byzantine] Fault Tolerance ([B]FT) & State Machine Replication (SMR) , where students may contribute in several ways in order to improve our understanding of the BFT & SMR models and technologies
- Several details about the BFT and SMR topics have been presented within the course: http://iol.unibo.it/mod/resource/view.php?id=162951
-
Language and frameworks for Distributed Systems (DS) or Agent Oriented Programming (AOP) , where students may contribute in several ways in order to create or improve new languages or toolkits within the scopes of DS, Coordination, and AOP
-
Simulation of situated agents : where students may contribute by creating novel incarnations for the Alchemist simulator
-
Technology Know-How : where students may contribute exploring the functioning (and possibly the internal structure) of one or more real-world technologies
The "Tuple Based coordination" category
This cathegory comprehends the following projects
-
Designing and implementing a RBAC access control feature for TuSoW, to be enforced by means of an authentication and authorization layer to be injected into the current model and implementation
-
Designing and implementing a variant of TuSoW supporting the replication of tuple spaces on several distributed machines
- This may also mean creating/looking for a Storage Layer for TuSoW to be injected into the current model & implementation
-
Designing and implementing a variant of TuSoW supporting the sharding of tuple spaces on several distributed machines
- This may also mean creating/looking for a Storage Layer for TuSoW to be injected into the current model & implementation
-
Designing and implementing a server-side interface for LINDA (or TuSoW core) to be wrapped within some IoT ready interface base on:
(notice that these are actually three different projects)
-
Designing and implementing a client-side interface for TuSoW supporting two or more of the follwing platforms:
- JVM (Java, Kotlin, Scala, etc)
- .NET (C#, F#, VbNET <-- please don't)
- JavaScript
- Python
(notice that these are actually different projects)
-
Designing and implementing an observability module for TuSoW enabling the implementation of a Web-based monitoring (graphical) interface
-
Designing and implementing an Android -based porting of TuSoW supporting replication of tuple spaces among several devices, possibly interconnected by means of Bluetooth or Wifi-Direct
-
Designing and implementing an Android -based porting of TuSoW supporting federation of tuple spaces à la LIME among several devices, possibly interconnected by means of Bluetooth or Wifi-Direct
-
Understanding, implementing, and injecting the notion of tuple centre into TuSoW, possibly creating a novel implementation of the ReSpecT language
The "LPaaS" category
-
Completely rewriting the current Java EE based source code using Vert.x or some other lightweight, micro-service oriented library or framework. The novel implementation should include at least:
- an improved modularization of the Knowledge-Base Layer
- a suite of fine grained unit tests
Notice that the novel implementation should anyway adhere to the
LPaaS Swagger Specification
-
Designing and implementing an observability module for LPaaS enabling the implementation of a Web-based graphical interface
-
Designing and implementing a client-side interface for LPaaS supporting one of the follwing platforms:
- .NET (C#, F#, VbNET <-- please don't)
- Python
(notice that these are actually different projects)
Furthermore, we are also interested in students designing and developing an unbiased and non-trivial usage scenario for LPaaS. You can propose some.
The "Blockchain" category
No specific project here, but just some ideas you can use as a starting point when proposing a project of yours.
We have four different rearch interestes concerning blockchains:
-
Extending the common notion of smart contract, in order to support asynchrony and time-reactiveness as a first step towards autonomous smart contracts
- More info here: http://apice.unibo.it/xwiki/bin/view/Theses/BlockchainMaffi2018
-
Experimenting and reproducing Hyperledger Fabric's Execute-Order-Validate architecture
- More info here: https://arxiv.org/pdf/1801.10228.pdf
-
Formalising the Ethereum Blockchain Platform by means of the ABS formalism
-
Creating (i.e. designing & implementing) our home-made logic-based blockchain technology from scratch, possibly relying on some Fault Tolerant layer such as:
The "BFT & SMR" category
Projects in this category follow a common pattern:
- Students choose a consensus algorithm from the list below,
- They study the corresponding paper / reference and try to understand the consensus algorithm's functioning
- They create a proof of concept implementation it using a technology of choice
- They test the consensus algorithm's robustness agains crash and byzantine faults
There is an implic step hidden into the procedure above: consensus algorithms are usually aimed at implementing some sort of SMR system (e.g. a replicated DB).
Even if the goal of a project in this category is to study & implement a consensus algorithm, students may need to actually use it in order to test it.
To do so they will have to create a simple SMR system, like, e.g. a replicated Key-Value store supporting at least two operations:
put
and
get
.
Students may choose any of the following consensus algorithms:
- PBFT , Castro, M., & Liskov, B. (2002). Practical byzantine fault tolerance and proactive recovery
- Honey Badger , Miller, A., Xia, Y., Croman, K., Shi, E., & Song, D. (2016). The Honey Badger of BFT Protocols
- BFT2F , Li, J., & Mazières, D. (2007). Beyond one-third faulty replicas in Byzantine fault tolerant systems
- Zyzzyva , Kotla, R., Alvisi, L., Dahlin, M., Clement, A., & Wong, E. (2007). Zyzzyva: Speculative Byzantine Fault Tolerance
- Q/U , Abd-El-Malek, M., Ganger, G. R., Goodson, G. R., Reiter, M. K., & Wylie, J. J. (2005). Fault-scalable Byzantine fault-tolerant services
- Sieve , Cachin, C., Schubert, S., & Vukolić, M. (2016). Non-determinism in Byzantine Fault-Tolerant Replication
- Mastercrypt , Cachin, C., Schubert, S., & Vukolić, M. (2016). Non-determinism in Byzantine Fault-Tolerant Replication (yes, the same paper of Sieve)
- Mod Smart , Sousa, J., & Bessani, A. (2012). From Byzantine consensus to BFT state machine replication: A latency-optimal transformation
- HQ , Bershad, B., ACM Digital Library., D., ACM Special Interest Group in Operating Systems., B., Rodrigues, R., & Shrira, L. (2006). HQ Replication: A Hybrid Quorum Protocol for Byzantine Fault Tolerance
- RAFT , Diego Ongaro and John Ousterhout, (2014). In Search of an Understandable Consensus Algorithm
- BFT-Smart
Overviews and surveys are available in order to perform a quick evaluation and comparison among the protocols above:
- Cachin, C., & Vukolić, M. (2017). "Blockchain Consensus Protocols in the Wild"
- Aublin, P.-L., Guerraoui, R., Knežević, N., Quéma, V., & Vukolić, M. (2015). The Next 700 BFT Protocols. ACM Transactions on Computer Systems, 32(4), 1–45
- Sankar, L. S., Sindhu, M., & Sethumadhavan, M. (2017). Survey of consensus protocols on blockchain applications
- Malkhi, D., & Reiter, M. (1998). Byzantine quorum systems
Finally, the following readings may of interest for who is interest in understanding the many impossiblity results affecting the distributed consensus:
- Fischer, M. J.; Lynch, N. A.; Paterson, M. S. (1985). "Impossibility of distributed consensus with one faulty process"
- Lamport, L.; Shostak, R.; Pease, M. (1982). "The Byzantine Generals Problem"
- Chapters 7, 8, 9 of Tanenbaum & van Steen's "Distributed Systems" book
The "Language & frameworks for DS or AOP" category
-
Design and implement a plugin for Swagger's Codegen aimed at generating Vert.x stubs starting from a Swagger specification file. Differently from
phiz71
's plugin (which may be used as an example or starting poing) the novel plugin should also support Web Sockets and JWT authentication, other than building stubs adhering to the style proposed in Labs 6-8 -
Design and implement a Domain Specific Language aimed at easing the development of agents adhering to the AOP framework developed in Labs 9-10
- It is possible to use any one among the following DSL engineering technologies: Xtext, MPS, ANTLR
- Notice that this project may require some reactoring effort affecting the code provided in Lab 10
-
Improving and extending Lab 10's AOP framework, making it support all FIPA protocols , similarly to JADE
The "Simulation of situated agents" category
- Design and implement an Alchemist incarnation aimed at simulating situated tuple spaces and, possibly, the Spatial Tuples model
- Design and implement an Alchemist incarnation aimed at simulating situated tuple centres
- Design and implement an Alchemist incarnation aimed at simulating situated Agents
The "Technology Know-How" cathegory
Projects in this category follow a common pattern:
-
Students choose a technology from the list below,
-
They must study it and understand its purpose & functioning, possibly looking for scientific paper describing it
-
They must undestand how the technology setup works and it is deployed in a real-world scenario
- Docker Swarm may be useful in some cases
- Such information must be included into the final report
-
They must test it, possibly creating some non-trivial testbed scenario
- It is not sufficient to just copy & past examples from the Web
- The test bed scenario must be propertly designed in order to reveal the technology pros and cons
-
They must stress it, possibly creating some testbed pushing the technology out of its comfort zone
-
They must produce a detailed report describing
- the technology,
- its reference model (if any),
- the assumption it relies upon,
- the tests performed and their rationale,
- the problems it solves
- the problems it DOES NOT solve
- etc
aboutllowing technologies: about
- Docker Swarm
- Traefik
- Etcd
- CEPH
- Redis
- Lagom and, in particular, its Event Sourcing feature
- Apache Flink
- Apache Kafka
- Apache ZooKeeper
- IPFS -- Inteplanetary File System
- Storj
Notice that projects in this category are quite different. Here, we only expect students to produce some non-trivial testbed + some other code examples as software artifacts. The real goal of this sort of projects is to condensate into some useful and written form the knowledge related to a particular technology. Because of this, the final repor must be very detailed and properly written, without assuming the reader have any prior knowledge concerning the technology presented into the report . For this reason final report have no page limitation in this category .
Notice that technicalities are not the only thing that matters . This is why we ask you to reason about a technology, and think about:
- why should people use it?
- why people should NOT use it?
- does it scale?
- etc.
As a rule of thumb consider the following statement:
if your report does not present any problem of the target technology, you are probably missing something