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
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
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
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