|
1. Experimentation with kiltera kiltera is an experimental, high-level language for concurrent and distributed, mobile, real-time computation. One of the main uses of kiltera is simulation. It has, for instance, successfully been used for complex traffic simulations. We currently use kiltera extensively in our research with IBM on software modeling tools. More information on kiltera can be found at www.kiltera.org.The goal of this project is to implement some of the common algorithms in mobile and distributed computing (e.g., mobile leader election) as case studies in kiltera. These case studies would be integrated as examples into the kiltera documentation. Moreover, the work would enhance our understanding of the strengths and weaknesses of kiltera. This project is most suitable for students interested in programming languages and mobile and distributed computing. |
|
2. Survey of Application ("App") Development for SmartPhones "Apps" have become one of the success stories of modern, mobile computing. They can significantly enhance the capabilities of a smartphone in many different ways (turning the smartphone into the computing equivalent of a "Swiss Army Knife"), are specifically designed to be able to operate under resource restrictions, are easy to install and operate and are inexpensive. Not surprisingly, app developers are in high demand.The goal of this project is to survey the state of the art in "app" development and cover, e.g., popular development techniques, languages, and tools together with their strengths and weaknesses. A few case studies of simple apps would strengthen the survey. This project is most suitable for students interested in programming languages and mobile computing devices. |
|
3. Evaluation of a State-of-the-art Collaborative Software Development Environment
Collaboration of possibly geographically highly distributed developers
is an increasingly important feature of industrial software development.
For instance, General Motors has software developers in three continents (North America,
Europe, and Asia).
Many tools exist to support collaborative development. One of them is
IBM Rational Team Concert (RTC)
which is based on IBM's popular
Jazz platform.
The goal of the project is to evaluate RTC and to determine its capabilities,
strengths and weaknesses.
This project is most suitable for a student with interests
in software development and supporting tools.
|
|
4. Analyzing Concurrent Java Programs with Java PathFinder Finding bugs in current programs can be very difficult. Java PathFinder (JPF) is an open source tool developed at NASA intended to facilitate this task. It works by systematically exploring all execution paths of a program and reporting violations of properties such as deadlocks and assertion violations. JPF has been quite successful in academia and industry and has even helped detect defects in real spacecraft. One intriguing feature of JPF is its customizability. For instance, it supports user-defined search heuristics and property definitions. Moreover, it allows for a Prolog-style programming style that can be used, for instance, to implement solvers for certain kinds of "puzzles" or optimization problems quite easily.The goals of the project would be to evaluate JPF by applying it to some larger pieces of Java code, and to experiment with different customizations and uses. The project is most suited for a student with interest in concurrent programming and software quality assurance. |
|
5. Generating concurrency control using Discrete Event Systems Discrete Event System (DES) theory defines the Supervisor Control Problem (SCP) as: Given a system G whose behaviour is unrestricted and given a specification L separating "good" from "bad" behaviours, find a supervisor S such that the composition of G and S exhibits only behaviours satisfying L. Control theory offers techniques to solve this problem automatically. The SCP has many intriguing and unexplored applications in software development. For instance, it turns out that if G is a multi-threaded Java program completely devoid of any concurrency control and L is a specification ensuring, e.g., the consistency of some shared data concurrently manipulated by the threads in G, then techniques for solving the SCP can be used to automatically generate the Java concurrency control code that needs to be put into G such that none of the executions of G will ever put the shared data into an inconsistent state. The technique thus has the potential to simplify concurrent programming tremendously.In recent work, we have begun to develop a prototype implementing generation of concurrency control code using DES. However, this prototype is incomplete and using it requires some, unnecessary "hand-holding". For instance, the injection of the control statements needs to be performed by hand. The goal of this project is to extend the prototype by implementing the automatic injection of the generated control code into the Java source. To this end, the use of techniques from aspect-oriented programming may be useful. The project is most suited for a student with interest in concurrent programming, control theory, or aspect-oriented programming. |
|
6. Implementing a formula evaluator
The first assignment
in CISC422
involves the implementation
of a formula evaluator. The point of the assignment is
to give students a better understanding of
recursion, induction, and evaluation.
Moreover, the assignment involves the
use of a parser generator.
On top of all this, the assignment could also provide
a very good illustration of two of the most important
software design patterns: Composite and Visitor.
However, in its current form, the assignment doesn't
support this.
The goal of the project is to extend the provided assignment
such that it supports the Composite and Visitor pattern
and such that it can be used to illustrate these concepts.
This project is most suitable for a student with interest
in programming and design patterns.
|
Last modified: Wed Oct 26 10:32:31 EDT 2011