Undergraduate Projects

Thorn-Related Project

[To be fleshed out].

Thorn is a PL project joint with IBM. We are creating an extensible scripting language suitable for both prototyping and dependable systems. Key features include gradual typing, isolated processes, a PL-level plugin architecture, dynamic typing and a functional slant.

Contact person: Jan Vitek (jv@cs.purdue.edu)

Standard Libraries

Thorn is in dire need of standard libraries. One possible project is developing certain parts of the standard library, which can be either dynamically typed, statically typed with generics, or gradually typed. Thorn especially needs I/O libraries, some of which may be developed as individual isolated processes communicated with in an asynchronous fashion.

Benchmarks for Thorn

Investigate the performance of Thorn by porting existing benchmarks, from e.g., Erlang and Java, to Thorn. We are interested in both hard aspects (performance, speed, memory) and softer aspects like expressiveness and how “natural” Thorn programming is.

Soft Typing

Use Thorn's plugin architecture to implement a soft or hybrid typing plugin that inserts dynamic checks into code with uncomplete type information. Some preliminary work exist, both definitions of types, parsing type syntax, some type inference, etc.

Debugging Thorn

Thorn needs debugging support, preferably inside a IDE like Eclipse or Netbeans. Stepping, watches, break points etc.

Test Suite

Thorn has a fairly comprehensive test suite that sadly is somewhat outdated. As a good first step to learn Thorn is writing test cases and helping us out with improving the test suite. One thing on the TODO-list is wrapping each test around a timeout function that kills the test if it fails to terminate within certain time.

Misc

Statically Verified Concurrency Abstractions for Java

We have developed an Eclipse plugin for programming with thread-local data. This plugin implements an extended Java type checker that works on Java 1.5-style annotations.

As a separate project, we have developed a type system for Joelle, an extension to Java for programming concurrent applications in the active objects style. A valid Joelle program does not share mutable state between active objects, can pass objects by reference by transferring ownership, and infer a minimal safe cloning operation for minimal overhead. The thread-local system, while different, is a good starting point for implementing Eclipse support for Joelle. We are interested in:

  1. Type checking
  2. Desugaring of Joelle code into more verbose Java
  3. Byte code rewriting, possibly into continuation-passing style, that allows many lightweight active objects that can be interleaved in an arbitrary fashion, plus support for futures (can be based on existing java.util.concurrent libraries)

Contact person: Tobias Wrigstad (wrigstad@cs.purdue.edu)

 
ugprojects.txt · Last modified: 2008/11/24 10:42 by wrigstad
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki