[ Software Research Lunch ]


The Stanford Software Research Lunch is a weekly event on Friday where students and researchers present their latest work to peers. Talks are open to anybody, but regular attendees are expected to give a presentation on their work.

Mailing list: software-research-lunch@lists.stanford.edu (subscribe via mailman)

Calendar: ical | Add to Google Calendar

Format: The lunch is held every week during fall, winter and spring quarter. The first week of every quarter is an organizational lunch where people can sign up to give a talk. If you'd like to give a talk, contact Stefan Heule.

Past quarters: Winter 2017, Fall 2016.


4/7: Organizational Lunch

Time: Friday, April 7, 2017, 12 noon - 1pm
Location: Gates 463a

Organizational lunch. Come enjoy food and sign up to give a talk during the quarter.

Food: Stefan


4/14: TBD (Daniel Selsam)

Time: Friday, April 14, 2017, 12 noon - 1pm
Location: Gates 463a

Speaker: Daniel Selsam


4/21: Cracking Multi-Language Transformations

Time: Friday, April 21, 2017, 12 noon - 1pm
Location: Gates 463a

Speaker: James Koppel

Abstract: Programming languages have many similarities, and so, when writing a source-to-source transformation on one language, it would be nice to reuse code from a similar transformation for a different language. This is a fundamentally difficult problem, and previous attempts have either resorted to reimplementing the same transformation for many languages, or at best reducing multiple languages to a common intermediate representations, which necessarily destroys information and produces poor source-to-source results.
We present a new representation for programs called *incremental parametric syntax*, and show how it enables us to construct source-to-source transformations so that we can implement them once, and run them on each of C, Java, JavaScript, Lua, and Python. Instead of constructing a common representation for the languages, incremental parametric syntax allows us to instead construct a family of representations sharing common components, each specialized to a single-language, and to semi-automatically generate them from existing syntax definitions. Our evaluation shows that (1) once a transformation is written, relatively little work is required to configure it for a new language (2) transformations built this way output readable code which preserve the structure of the original, according to participants in our human study, and (3) despite dealing with many languages, our transformations can still handle language corner-cases, and pass 90% of compiler test suites.