Source-to-source Transformations for Flow-based Applications
Emerging applications demand new parallel abstractions. Traditional parallel abstractions such as Data Parallelism and Task Parallelism, while necessary, do not fully the needs of today’s multi-threaded commercial applications. Emerging applications in the domain of recognition, mining and synthesis (RMS); image and video processing; information flow; and automatic financial trading exhibit flow-based forms of parallelism. How can we assist developers in taking advantage of such forms of parallelism? This work investigates an approach based on interactive source-to-source transformations that engage the developer, i.e., the domain expert in the process of parallelizing and optimizing an application.
Language of Languages
Maintaining the consistency of multiple notations used in large projects is daunting. Language of Languages(LoLs) is our experimental language workbench that fulfills a frequently overlooked but important role: unify the different notations so developers can better understand and evolve a project. Due to the impossibility of anticipating all the notations that may be used in a project, LoLs adopts a language agnostic view and supports different notations from free-form text to graphical forms and shapes.
CodingSpectator is an Eclipse plug-in developed at the University of Illinois. This plug-in listens for various actions that the user performs while working with Eclipse. CodingSpectator gathers a rich set of data about the usage of Eclipse that could reveal many interesting patterns in the usage of this IDE. CodingSpectator saves the captured events locally and uploads them to a designated server periodically.
It is currently used for research purposes but we hope that its non-invasive, low-overhead monitoring techniques could be incorporated one day into all IDEs to help improve software development tools.
Personal Health Instrumentation
Our work began as a class project for Prof. Bruce Schatz and Dr. Richard Berlin’s advanced computer science course “Healthcare Infrastructure” in the Fall of 2009. The goal of their course is to inspire engineering students to understand and tackle some of the large challenges of our healthcare system, using our unique skills and perspective. Our class project for Healthcare Infrastructure formed the basis for our initial CIMIT proposal. This project was awarded $10,000 as a finalist for the CIMIT Prize for Primary Healthcare 2010.
Patterns for Parallel Programming
This is a catalog of parallel programming patterns, similar to the one at Berkeley called OPL. We've been working with the people at Berkeley, so it is not surprising that it overlaps with OPL a great deal. However, it is not the same.
Like OPL, these patterns are arranged in layers. The column to the left gives an outline of these layers. Berkeley has focused on the top levels, and so far has ignored the lower levels. In contrast, we are focusing on the lower levels, and mostly reusing other people's work for the upper levels. Many of our pattern descriptions point to the Berkeley web site.
The top two layers, Software Architecture and Computational Pattern Languages, set up parallelism but are not about parallelism. The next two layers, Parallel Algorithms and Parallel Implementation Strategy, are closely related to the patterns in the book Patterns for Parallel Programming. The rest of the patterns are smaller patterns that are used to particular parts of a program, and are the ones we have focused on.
The main goal of this website is to encourage discussion and feedback about the patterns. We want to make it easy for readers to leave feedback about different patterns –- tell us what we are doing right and what we are doing wrong; what is clear and what is unclear; and what should we include and what should we remove. We also want to make it easy for people to contribute code, examples of using these patterns in their systems, other patterns that they have seen or anything else that they find relevant.