CISC499 projects for Fall 2017/Winter 2018

This list contains 5 project suggestions. Unfortunately, I will not be able to supervise all of these. A maximum of 2 is more realistic.

1. Block chains and other distributed ledger systems

In accounting, a ledger refers to a document in which financial transactions are recorded. In a distributed ledger, this information is spread out over several documents which are held in geographically separated locations. Block chains are a data structure allowing the implementation of a distributed ledger in such a way that modifications to the ledger are permanent and verifiable. The use of block chains has been discussed predominantly in the financial and banking sector, but applications in other domains, e.g., the energy sector, have been suggested as well.

The goal of the project is to explore and better understand distributed ledger technology and block chains and their applications in particular. The creation of a prototype implementation, possibly based on open source code, would be ideal.

The project is most suitable for a student interested in distributed computing and its applications.

2. Escape the Maze: Programming Unity simulations

Unity [1] is a programming environment for the development of 3D, virtual reality-type applications, making it ideal for game development, but also for animations and simulations.

The goal of this project is the development of the control logic of a rover (i.e., a small vehicle with motors, sensors, and, possibly, actuators). For the project, a Unity simulation of rovers in a maze would be provided together with an interface providing basic control of the rovers.

The goal of the project is the development of higher-level control logic allowing the rovers to find their way through the maze. The control logic can be written in different programming languages (such as C/C++, Java, and Python). Another option is the use of the modeling language UML-RT from which, with the help of the Eclipse Papyrus-RT tool, executable code can be generated [2,3,4]. The comparison of different implementations in different languages to compare their suitability for this task would be an interesting extension of the project.

The project is most suitable for a student with interest in software development for embedded systems or simulation.

[1] Unity pages. Unity Technologies SF. https://unity3d.com
[2] Eclipse Papyrus-RT download page. https://www.eclipse.org/papyrus-rt
[3] Eclipse Papyrus-RT Wiki. https://wiki.eclipse.org/Papyrus-RT
[4] Resources page of 'Modeling & Analysis in Software Engineering' group in the School of Computing. http://flux.cs.queensu.ca/mase/papyrus-rt-resources

3. Model-driven development of real-time embedded systems using UML-RT and Papyrus-RT: 7-segment display

Statemachines have proven very useful for the description of the behaviour of the software in embedded devices. In model-driven development (MDD), complete, executable, and fully functional code is generated automatically from such statemachines. The goal is to increase developer productivity by lifting development onto a higher level of abstraction that facilitates the construction and reuse of complex systems. MDD is used heavily in, e.g., the automotive industry.

The goal of the project is to gain some first experience with MDD through the development of software for a small device such a 7-segment display as used in digital watches. Development would be supported through the Eclipse Papyrus-RT tool [1,2,3], an open source MDE tool that allows full code generation from state machines expressed in UML-RT, a small subset of UML.

The project is most suitable for a student with interest in software development, modeling, code generation, or embedded systems.

[1] Eclipse Papyrus-RT download page. https://www.eclipse.org/papyrus-rt
[2] Eclipse Papyrus-RT Wiki. https://wiki.eclipse.org/Papyrus-RT
[3] Resources page of 'Modeling & Analysis in Software Engineering' group. http://flux.cs.queensu.ca/mase/papyrus-rt-resources

4. Design recovery for the runtime system of real-time, embedded applications

Eclipse Papyrus-RT (is an open source tool that allows the generation of fully functional C/C++ code from state machine models expressed in UML-RT, a modeling language specifically designed for reactive software as found, e.g., embedded systems [1,2,3]. The generated code executes with the help of a runtime system (RTS) that implements platform-specific services (such as the delivery of messages between communicating state machines) and thus allows the UML-RT models to abstract from these lower, implementation-level details simplifying development.

The goal of the project is to perform a 'design recovery' on the RTS. In other words, the RTS code (about 10K LOC of Linux-based C/C++) is to be analyzed (e.g., with static analysis tools as used in CISC 326) to extract the overall architecture of the RTS and identify design patterns. The subsequent modification of the RTS to experiment with different realizations of the RTS services would be an interesting extension.

The project is most suited for a student with interest in software architecture, static analysis, or working with open source code.

[1] Eclipse Papyrus-RT download page. https://www.eclipse.org/papyrus-rt
[2] Eclipse Papyrus-RT Wiki. https://wiki.eclipse.org/Papyrus-RT
[3] Resources page of 'Modeling & Analysis in Software Engineering' group. http://flux.cs.queensu.ca/mase/papyrus-rt-resources

5. Experimenting with Node-RED, a flow-based programming tool for the Internet of Things

Node-RED is a programming tool that allows the development of dataflow applications by connecting hardware devices, APIs, and online services as required by emerging Internet-of-Things applications [1]. Node-RED was originally developed by IBM's Emerging Technologies Serives Team and is now part of the JS (JavaScript) Foundation.

The goal of the project is to gain practical experience with Node-RED by building applications of different sizes. Determining its strengths and weaknesses will be of particular interest.

The project is most suited for a student interested in independently learning a new programming tool and learning more about the Internet of Things.

[1] Node-RED web site. nodered.org

Last modified: Sat Oct 14 17:39:06 EDT 2017