1. Controller for Unity3D-based RoboSoccer simulation
Using Unity3D [1], the 3D game development environment,
we have developed a simulation scenario in which
two teams with two rovers each can play robot soccer
against each other.
The rovers of both teams can be controlled via a socket
connection to the Unity simulation [2].
The goal of the
project is to develop the automatic control software
for a team. Any programming language
can be chosen (as long as it supports TCP/IP socket
communication). Machine learning could also be used.
The project is suited for a student with interests
in 3D simulation, rovers, and programming languages.
[1] Unity3D web page. www.Unity3D.com
|
2. Specification and analysis of designs using Alloy and Electrum
The Alloy language and tool offer an approach to software design
that supports a fully automated analysis giving designers immediate
feedback [1,2].
It has been used, for instance, to analyze, critique, and improve the
design of Git [3]. A recent extension of Alloy is called Electrum [4].
While Alloy focusses on the specification of structure, Electrum extends
Alloy with capability to specify and reason about behaviour.
The goal of the project is to study Electrum, i.e., understand its relationship to Alloy, and its capabilities, strengths, and weaknesses.
The project is suited for a student with interests software design and formal specification and analysis.
[1] Alloy web page. alloytools.org
|
3. Formal specification and verification of smart contracts
Smart contracts are computer protocols aimed at facilitating
the enforcement and verification of a contract. Various
cryptocurrencies such as bitcoin have adopted smart contracts.
A recent paper in one of the most respected and visible
computing journals advocates the view that many of the
basic algorithms and techniques used in blockchains are
best understood as variations on familiar algorithms and
techniques from classic distributed computing [1].
The goal of the project is to explore this view through, e.g.,
the study of the literature and the experimentation
with proposed approaches to a formal specification and
verification (including testing) of smart contracts.
The project is suited for a student with interests
in formal specification and distributed computing.
[1] M. Herlihy. Blockchains From a Distributed Computing Perspective.
Communications of the ACM, February 2019, Vol. 62 No. 2, Pages 78-85
|
4. Model-driven software development for distributed systems
In model-driven software development (MDSD) [1], executable code
is generated from higher-level, often domain-specific artifacts
such as component and connector models and state machines.
The motivation behind MDSD is to increase developer productivity
by raising the level of abstraction and automation and
lowering accidental complexity. MDSD hase been used successfully
in different domains including telecommunications and
automotive for the construction of concurrent reactive systems.
MDSD tools include Papyrus-RT [2] and HCL RTist [3].
In recent work, we have extended MDSD to support the
development of web-based distributed systems as found
in many Internet of Things (IoT) applications [4].
The extension includes an integration with
Node-RED [5], a programming tool for wiring
together hardware devices, APIs and online services,
as well as the development of a distributed
runtime system (middleware) to support the
communication between different model components [6].
The goal of the
project is to experiment with this extension through
the construction of small sample systems.
The project is suited for a student with interests
in software development, software modeling, and
distributed systems.
[1] Beyond code: An introduction to model-driven software development (CISC 836).
Graduate course in School of Computing, Queen's University.
research.cs.queensu.ca/home/dingel/cisc836_W19
|
5. Survey and comparison of build automation tools
Build automation tools automate the process of turning source code into executable
code and are indispensible for large projects, especially when
agile development processes with continuous integration and delivery are followed.
The goal of the project is to select a few tools and compare them with
respect to some relevant criteria chosen by the student.
The project is most suitable for a student with interest in
modern, industrial software development.
|
6. Support for dynamic reconfiguration in Kubernetes
Kubernetes is an open-source container-orchestration system
for automating application deployment, scaling, and management [1].
The goal of the project is to explore the extend to which
Kubernetes allows the reconfigation of a containerized
application during execution.
The project is most suitable for a student with interest in
modern, industrial software development.
|
7. Teaching concolic testing
Concolic testing is a recent approach to testing
that combines random testing and symbolic execution [1].
It has been very successful and powers, for instance,
Microsoft's Security Risk Detection Service [2].
The goal of the project develop a concolic testing
engine on a simple imperative language suitable
for teaching the core principles behind the technique.
The project is most suitable for a student with interest in
software testing.
[1] Concolic testing. Wikipedia entry. en.wikipedia.org/wiki/Concolic_testing
|
Last updated at: 5:15pm, Sept 21, 2019