CISC499 Projects for Fall 2012/Winter 2013

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

1. An "app" for a walking tour of Kingston

A local historian has been writing walking tours of heritage streets in the City of Kingston. These tours are described on paper, which is retrictive.

The goal of the project is to explore the use of modern Smartphone technology to make descriptions of walking tours more user-friendly and interesting. More specically, the project will focus on the development of a smartphone application for a currently written walking tour documenting life in Kingston during the Great War, 1914-1919. The application is expected to help guide the user along the tour by, e.g., monitoring the user's progress and directions, and make the tour more engaging by, e.g., showing relevant photographs or playing sounds. The possibility of the strategic placement of advertising (e.g., to a restaurant or hotel nearby) is to be explored as well.

This project is most suitable for students interested in programming languages and mobile computing devices. Interest in the history of Kingston would be a bonus.

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

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

4. Building a Semantic Web Site

The semantic web promises to smarter, more effective search capabilities because search engines would be capable of, in some form, understanding the "meaning" the content of a web page. Instead of having to rely on search strings occuring verbatim on a web page as with a standard search, a semantically enabled search would be capable of determining whether the meaning of the web page content matches the search string. While lots of supporting technology has been developed, the semantic web is still not yet a reality.

The purpose of the project is to experiment with this technology and to develop an understanding of what it currently takes to build a semantically-enabled web page. To this end, the student will be asked to independently acquire the necessary background (e.g., this page seemsm to provide a good starting point), and then to experiment with building small semantically-enabled web pages of his/her choice.

This project is most suitable for a student with interest and background in web development.

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

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

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

Last modified: Thu Sep 20 21:43:41 EDT 2012