CISC499 Projects for Fall 2019/Winter 2020

This list 7 project suggestions. Unfortunately, I will not be able to supervise all of these. A maximum of 2 is more realistic. Note that projects can be worked on in teams.

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] MDETools'19 Workshop Challenge Problem Description. Available at mdetools.github.io/mdetools19/challengeproblem.html

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
[2] D. Jackson. Software Abstractions, Revised Edition. Logic, Language, and Analysis. MIT Press. 2016
[3] S. Perez De Rosso, D. Jackson What's wrong with Git? A conceptual design analysis. Onward! 2013
[4] Elecrum web page. haslab.github.io/Electrum

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
[2] HCL RealTime Software Tooling. www.hcltech.com/software/rtist
[3] Eclipse Papyrus-RT web page. Eclipse project. www.eclipse.org/papyrus-rt
[4] Making modeling cool again: Teaching and researching MDE using animation, simulation, and the IoT. Tutorial at MODELS'18. Copenhagen, Denmark. Oct 2018. github.com/kjahed/Models18-MMCA/blob/master/index.md
[5] Node-RED: Flow-based programming for the Internet of Things. nodered.org
[6] K. Jahed, J. Dingel. Enabling model-driven software development tools for the Internet of Things. Proceedings of the 11th International Workshop on Modelling in Software Engineerings (MiSE'19). Montreal, Canada. May 2019.

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
[2] Microsoft Security Risk Detection web page. www.microsoft.com/en-us/security-risk-detection

Last updated at: 5:15pm, Sept 21, 2019