Posters

Mon 5:00-6:30 pm - Parlor A,B&C
Babylscript: Multilingual JavaScript
Ming-Yee Iu, -, Canada

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.

A Case Study of Language Oriented Programming with Cedalion
David Lorenz, Open University of Israel, Israel
Boaz Rosenan, Open University of Israel, Israel

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.

Refactoring towards the Good Parts of JavaScript
Asger Feldthaus, Aarhus University, Denmark
Todd Millstein, University of California, Los Angeles, United States
Anders Møller, Aarhus University, Denmark
Max Schäfer, University of Oxford, United Kingdom
Frank Tip, IBM Research, United States

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: Library-based Language Extensibility
Sebastian Erdweg, University of Marburg, Germany
Lennart C. L. Kats, Delft University of Technology, Netherlands
Tillmann Rendel, University of Marburg, Germany
Christian Kästner, University of Marburg, Germany
Klaus Ostermann, University of Marburg, Germany
Eelco Visser, Delft University of Technology, Netherlands

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.

McLAB: Enabling Programming Language, Compiler and Software Engineering Research for MATLAB
Laurie Hendren, McGill University, Canada
Jesse Doherty, McGill University, Canada
Anton Dubrau, McGill University, Canada
Rahul Garg, McGill University, Canada
Nurudeen Lameed, McGill University, Canada
Soroush Radpour, McGill University, Canada
Amina Aslam, McGill University, Canada
Toheed Aslam, McGill University, Canada
Andrew Casey, McGill University, Canada
Maxime Chevalier Boisvert, McGill University, Canada
Jun Li, McGill University, Canada
Clark Verbrugge, McGill University, Canada
Olivier Savary Belanger, McGill University, Canada

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: Principled Foundations for Decentralized Systems
Michael Gorlick, University of California, Irvine, United States
Kyle Strasser, University of California, Irvine, United States
Alegria Baquero, University of California, Irvine, United States
Richard N. Taylor, University of California, Irvine, United States

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.

A Comparative Study of Parallel Sort Algorithms
Albert Akhriev, IBM Research Dublin Lab, Dublin, Ireland, Ireland
Davide Pasetto, IBM Research Dublin Lab, Dublin, Ireland, Ireland

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
Christopher A. Stone, Harvey Mudd College, United States
Melissa E. O'Neill, Harvey Mudd College, United States

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 Design and Implementation of the Habanero-Java Language
Vincent Cave, Rice University, United States
Raghavan Raman, Rice University, United States
Jun Shirako, Rice University, United States
Sagnak Tasirlar, Rice University, United States
Jisheng Zhao, Rice University, United States
Vivek Sarkar, Rice University, United States

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.

Plaid: a Permission-Based Programming Language
Jonathan Aldrich, Carnegie Mellon University, United States
Robert Bocchino, Carnegie Mellon University, United States
Ronald Garcia, Carnegie Mellon University, United States
Mark Hahnenberg, Carnegie Mellon University, United States
Manuel Mohr, Karlsruhe Institute of Technology, Germany
Karl Naden, Carnegie Mellon University, United States
Darpan Saini, Carnegie Mellon University, United States
Sven Stork, Carnegie Mellon University / University of Coimbra, United States / Portugal
Joshua Sunshine, Carnegie Mellon University, United States
Éric Tanter, University of Chile, Chile
Roger Wolff, Carnegie Mellon University, United States

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.

Smaller Footprint for Java Collections
Yossi Gil, Technion--Israel Institute of Technology, Israel
Yuval Shimron, Technion--Israel Institute of Technology, Israel

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

Learning CUDA: Lab Exercises and Experiences
Christopher T. Mitchell, Lewis & Clark College, United States
Jens Mache, Lewis & Clark College, United States
Karen L. Karavanic, Portland State University, United States

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.

Decoupling Structure and Behavior of AOM Systems Using Two Separate Languages
Eli Acherkan, Open University of Israel, Israel
Atzmon Hen-Tov, Pontis Ltd, Israel
David Lorenz, Open University of Israel, Israel
Lior Schachter, Open University of Israel, Israel

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.