Posters
Babylscript is a multilingual JavaScript. It has different language modes in which keywords, objects, and functions are translated to non-English languages. Babylscript uses separate tokenizers for each language and extends JavaScript's object model by allowing properties to have multiple names, so objects expose different interfaces for different languages.
Cedalion is a programming language designed to host internal DSLs while providing projectional editing, as an alternative to language workbenches. We present a case study where Cedalion was used to help fellow researchers in the field of biology design a DNA microarray for a protein-binding assay.
JavaScript is one of the most widely used programming languages of the present day. While its flexibility is treasured by proponents, its lack of language support for encapsulation is an obstacle to writing maintainable programs. We propose refactorings for improving modularity, and discuss challenges arising in their implementation.
SugarJ is a Java-based programming language that provides extensible surface syntax, static analyses, and IDE support. SugarJ extensions are organized as libraries; conventional import statements suffice to activate and compose language extensions. We illustrate how programmers can use SugarJ to modularly extend Java's syntax, semantic analyses and IDE support.
MATLAB is a popular language for scientific computation, used by millions of students, scientists and engineers world-wide. The McLAB project aims to provide a open source compiler and virtual machine infrastructure to enable programming language, compiler and software engineering researchers to work in this important area.
CREST is an architectural style for decentralized, flexible, and secure open and adaptive systems. Adopting the bilateral transfer of computation as the fundamental medium of exchange among peers, CREST reduces content to a side-effect of computational exchange. We discuss the style's constraints, its anticipated benefits, and the implementation mechanisms.
In this paper we examine the performance of parallel sorting algorithms on modern multi-core hardware. Several general-purpose methods, with particular interest in sorting of database records and huge arrays, are evaluated and a brief analysis is provided.
Observationally Cooperative Multithreading (OCM) is a new approach to shared-memory parallelism. Programmers write code using the well-understood cooperative (i.e., nonpreemptive) multithreading model for uniprocessors. OCM then allows threads to run in parallel, so long as results remain consistent with the cooperative model.
The Habanero-Java language extends sequential Java with a simple but powerful set of constructs for multicore parallelism. Its imple- mentation includes a compiler that generates standard Java class- files, a runtime system that builds on the java.util.concurrent library, an IDE (DrHJ) that extends DrJava, and a new data-race detection tool.
Permissions specify how an object may be aliased and mutated. Plaid is a permission-based language with an object model which explicitly models the changing states of an object, a type system that tracks those state changes, and a runtime system that checks permission casts and leverages permissions to parallelize code.
Programming in Java has many benefits; small memory footprint is remarkably not one of them. We present five memory compaction techniques, and their use for reducing the infamous bloat of of the main data structures offered by Java' standard library: HashMap, HashSet, TreeMap and TreeSet by 30-70%.
The rise of many-core general-purpose GPUs (graphical processing units) has introduced new urgency to parallel programming. Focusing on CUDA lab exercises for the undergraduate curriculum, we discuss lessons learned, as well as extended lab exercises including the game of life and ray tracing.
We present a two language solution to Adaptive-Object-Model (AOM) that comprises Java as the behavioral language and a new language named Ink as the dynamic structure language.




