CINXE.COM
SPLASH 2013 - Tutorials - SPLASH 2013
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <link href="https://2013.splashcon.org/favicon.ico?28d37e6d7e5e12d24c39bdba0f4f3cfd" rel="shortcut icon" type="image/x-icon" /> <link href="https://2013.splashcon.org/stylesheets/common_.css?d7bcca3579a066193caf560ede9d6399" rel="stylesheet" type="text/css" /> <title>SPLASH 2013 - Tutorials - SPLASH 2013</title> <script type="text/javascript">var show_webdsl_debug=false;</script> <script type="text/javascript">var contextpath="https://2013.splashcon.org";</script> <link rel="stylesheet" href="https://2013.splashcon.org/stylesheets/bootstrap/css/bootstrap.min.css?7f89537eaf606bff49f5cc1a7c24dbca" type="text/css" /><link rel="stylesheet" href="https://2013.splashcon.org/stylesheets/conf.css?e0c92ee5f52769e04d268b7588469bfe" type="text/css" /><link rel="stylesheet" href="https://2013.splashcon.org/getFile/474741e5-5ec0-4bb8-bdb0-1c2998cf94f3/main.css?1519308135845" type="text/css" /><link rel="stylesheet" href="https://2013.splashcon.org/stylesheets/theme.bootstrap_3.min.css?6867e70881e6ed2c03b6c9cf9c3152e0" type="text/css" /><script type="text/javascript" src="//code.jquery.com/jquery-3.5.1.min.js"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/jquery.tablesorter.combined.min.js?285b21976326641f8f1b910492e6d5d0"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/jquery.tablesorter.pager.min.js?4551cdfea66f45a11ae5548f3d50a06f"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/tablesorter-init.js?ee6babedf1a6be960e4543a1bb57b421"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/bootstrap/js/bootstrap.min.js?2f34b630ffe30ba2ff2b91e3f3c322a1"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/notify.min.js?e86d399917a84b69a4683f504c7a7813"></script> <script type="text/javascript" src="https://2013.splashcon.org/javascript/ajax.js?2dbd1cc4f8f2d52ae9c879d7346f4f8a"></script> <script type="text/javascript">(function($){ $(document).ready(function(){ $('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) { event.preventDefault(); event.stopPropagation(); $(this).parent().siblings().removeClass('open'); $(this).parent().toggleClass('open'); }); }); })(jQuery); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-4G0QWEKVQS"></script> <script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'G-4G0QWEKVQS', {'cookie_domain': 'auto', 'anonymizeIp': true });gtag('config', 'UA-9607501-2', {'cookie_domain': 'auto', 'anonymizeIp': true });</script> <meta prefix='og: http://ogp.me/ns#' property='og:description' content='The SPLASH tutorial program complements the technical material from OOPSLA, Onward!, and Wavefront with 80-minute tech talks and 1/2-day in-depth tutorials taught by experts that provide participants with in-depth or hands-on background in the area of focus. We invite tech talks and tutorials covering any topic related to SPLASH and its constituent events, including programming languages, programming, and software engineering. Tutorials and talks should target one or more significant segments of SPLASH’s audience, which includes researchers, educators, students, and leading-edge practition ...'> <meta prefix='og: http://ogp.me/ns#' property='og:title' content='SPLASH 2013 - Tutorials - SPLASH 2013'> <meta name='description' content='The SPLASH tutorial program complements the technical material from OOPSLA, Onward!, and Wavefront with 80-minute tech talks and 1/2-day in-depth tutorials taught by experts that provide participants with in-depth or hands-on background in the area of focus. We invite tech talks and tutorials covering any topic related to SPLASH and its constituent events, including programming languages, programming, and software engineering. Tutorials and talks should target one or more significant segments of SPLASH’s audience, which includes researchers, educators, students, and leading-edge practition ...'> <script type="text/javascript">function addEventModalLoadOnClick( containerNode ){ $(containerNode).find( "a[data-event-modal]" ).on("click", function(e){ var eventId = $(this).data("event-modal"); var modalElem = $("#modal-" + eventId); if(modalElem.length){ modalElem.modal({ backdrop: 'static', keyboard: true}, 'show'); } else { var loaderElem = $("#event-modal-loader"); loaderElem.find("input.event-id-input").val( eventId ); loaderElem.find("#load-modal-action").click(); } e.preventDefault(); } ); } </script><script type="text/javascript">function addStarredEventOnClick( containerNode ){ $(containerNode).find( "[data-event-star]" ).on("click", function(e){ var eventId = $(this).data("event-star"); var starEventFormElem = $("#event-star-form"); starEventFormElem.find("input.event-id-input").val( eventId ); starEventFormElem.find("#star-event-action").click(); e.preventDefault(); e.stopPropagation(); } ); } </script><script type="text/javascript">function pauseOnCloseModal( modalid ){ //pauses video (only youtube at the moment) when closing modal $('#' + modalid).on('hidden.bs.modal', function () { $(this).find('.embed-container iframe[src*=enablejsapi]').each( function(){ this.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*') } ); } ) } </script> <meta prefix='og: http://ogp.me/ns#' property='og:image' content='https://2013.splashcon.org/getImage/carousel/carousel-collage-v3.png?1519209383000'> </head> <body id="track"><div class="frame"><div class="logobar"><div class="container"><a href="https://2013.splashcon.org" class="navbar-brand navigate"><span class="brand-text">SPLASH 2013</span></a><div class="place">Sat 26 - Thu 31 October 2013 <a href="https://2013.splashcon.org/venue/splash-2013-venue" class="navigate">Indianapolis, United States</a></div></div></div><div class="navbar navbar-default"><div class="container"><div class="navbar-header"><button type="button" data-toggle="collapse" data-target="#navigationbar" class="navbar-toggle"><span class="sr-only">Toggle navigation</span><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div><div id="navigationbar" class="navigationbar collapse navbar-collapse"><ul class="block nav navbar-nav"><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Attending <span class="caret"></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/venue/splash-2013-venue" class="navigate">Hotel: Hyatt Regency</a></li><li class="block"><a href="https://2013.splashcon.org/attending/awards" class="navigate">Awards</a></li><li class="block"><a href="https://2013.splashcon.org/attending/splash%2713-general-chairs%27-welcome" class="navigate">General Chairs' Welcome</a></li><li class="block"><a href="https://2013.splashcon.org/attending/oopsla%E2%80%9913-chair%E2%80%99s-welcome" class="navigate">OOPSLA PC Chair’s Welcome</a></li></ul></li><li id="tracks-in-navbar" class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Tracks <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-3"><div class="row"><div class="col-sm-5"><ul class="block multi-column-dropdown"><li class="block dropdown-header">SPLASH 2013</li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-ACM-SRC" class="navigate">ACM SRC</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Demonstrations" class="navigate">Demonstrations</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Doctoral-Symposium" class="navigate">Doctoral Symposium</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Keynotes" class="navigate">Keynotes</a></li><li class="block"><a href="https://2013.splashcon.org/track/oopsla-2013-papers" class="navigate">OOPSLA</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-OOPSLA-Artifacts" class="navigate">OOPSLA Artifacts</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Panels" class="navigate">Panels</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Posters" class="navigate">Posters</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-SPLASH-E" class="navigate">SPLASH-E</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-SPLASH-I" class="navigate">SPLASH-I</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Student-Volunteers" class="navigate">Student Volunteers</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Tutorials" class="navigate">Tutorials</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Wavefront" class="navigate">Wavefront</a></li><li class="block"><a href="https://2013.splashcon.org/track/splash-2013-Wavefront-Experience" class="navigate">Wavefront Experience</a></li></ul></div><div class="col-sm-7"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Co-hosted Conferences</li><li class="block"><a href="https://2013.splashcon.org/track/dls-2013-papers" class="navigate"><strong>DLS</strong> Research Papers</a></li><li class="block"><a href="https://2013.splashcon.org/track/gpce-2013-papers" class="navigate"><strong>GPCE</strong> Research Papers</a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Onward!</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/track/onward-2013-papers" class="navigate"><strong>Onward!</strong> Research Papers</a></li><li class="block"><a href="https://2013.splashcon.org/track/onward-2013-Onward-Essays" class="navigate"><strong>Onward!</strong> Essays</a></li></ul></li><li class="block"><a href="https://2013.splashcon.org/track/sle-2013-papers" class="navigate"><strong>SLE</strong> Research Papers</a></li></ul></div></div></ul></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Organization <span class="caret"></span></a><ul class="block dropdown-menu multi-column columns-2"><div class="row"><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">SPLASH 2013 Committees</li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-general" class="navigate">General</a></li><li class="block dropdown-header">Track Committees </li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-acm-src-committee" class="navigate"><strong>ACM SRC</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-demonstrations-committee" class="navigate"><strong>Demonstrations</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-doctoral-symposium-committee" class="navigate"><strong>Doctoral Symposium</strong></a></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>OOPSLA</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-papers-program-committee" class="navigate">Program Committee</a></li><li class="block"><a href="https://2013.splashcon.org/committee/oopsla-2013-papers-external-review-committee" class="navigate">External Review Committee</a></li></ul></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-oopsla-artifacts-artifacts" class="navigate"><strong>OOPSLA Artifacts</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-posters-committee" class="navigate"><strong>Posters</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-splash-e-committee" class="navigate"><strong>SPLASH-E</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-student-volunteers-committee" class="navigate"><strong>Student Volunteers</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-tutorials-committee" class="navigate"><strong>Tutorials</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-wavefront-committee" class="navigate"><strong>Wavefront</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/splash-2013-wavefront-experience-committee" class="navigate"><strong>Wavefront Experience</strong></a></li><li class="block dropdown-header">Contributors</li><li class="block"><a href="https://2013.splashcon.org/people-index" class="navigate"><span class="glyphicon glyphicon-search"></span><sup><span class="glyphicon glyphicon-user"></span></sup> People Index</a></li></ul></div><div class="col-sm-6"><ul class="block multi-column-dropdown"><li class="block dropdown-header">Co-hosted Conferences</li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>DLS</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/committee/dls-2013-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>GPCE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/committee/gpce-2013-papers-program-committee" class="navigate">Program Committee</a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>Onward!</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/committee/onward-2013-papers-program-committee" class="navigate"><strong>Research Papers</strong></a></li><li class="block"><a href="https://2013.splashcon.org/committee/onward-2013-onward-essays-committee" class="navigate"><strong>Onward! Essays</strong></a></li></ul></li><li class="dropdown dropdown-submenu "><a href="#" data-toggle="dropdown" class="dropdown-toggle"><strong>SLE</strong></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/committee/sle-2013-papers-program-committee" class="navigate">Program Committee</a></li></ul></li></ul></div></div></ul></li><li class="block"><a href="https://2013.splashcon.org/search//all" class="navigate"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> Search</span></a></li><li class="dropdown"><a href="#" data-toggle="dropdown" class="dropdown-toggle"><span class="hidden-sm">Series <span class="caret"></span></span><span title="Series" class="visible-sm"><span class="glyphicon glyphicon-repeat"></span> <span class="caret"></span></span></a><ul class="block dropdown-menu"><li class="block"><a href="https://2013.splashcon.org/series/splash" class="navigate"><span class="glyphicon glyphicon-home"></span> Series</a></li><li class="block divider"></li><li class="block"><a href="https://2025.splashcon.org" class="navigate">SPLASH 2025</a></li><li class="block"><a href="https://2024.splashcon.org" class="navigate">SPLASH 2024</a></li><li class="block"><a href="https://2023.splashcon.org" class="navigate">SPLASH 2023</a></li><li class="block"><a href="https://2022.splashcon.org" class="navigate">SPLASH 2022</a></li><li class="block"><a href="https://2021.splashcon.org" class="navigate">SPLASH 2021</a></li><li class="block"><a href="https://2020.splashcon.org" class="navigate">SPLASH 2020</a></li><li class="block"><a href="https://2019.splashcon.org" class="navigate">SPLASH 2019</a></li><li class="block"><a href="https://2018.splashcon.org" class="navigate">SPLASH 2018</a></li><li class="block"><a href="https://2017.splashcon.org" class="navigate">SPLASH 2017</a></li><li class="block"><a href="https://2016.splashcon.org" class="navigate">SPLASH 2016</a></li><li class="block"><a href="https://2015.splashcon.org" class="navigate">SPLASH 2015</a></li><li class="block"><a href="https://2014.splashcon.org" class="navigate">SPLASH 2014</a></li><li class="block"><span class="text-muted" style="margin-left: 2px;"><span class="glyphicon glyphicon-hand-right"></span> SPLASH 2013</span></li><li class="block"><a href="https://2012.splashcon.org" class="navigate">SPLASH 2012</a></li><li class="block"><a href="https://2011.splashcon.org" class="navigate">SPLASH 2011</a></li><li class="block"></li><li class="block"><a href="http://splashcon.org/2010/" target="_blank" class="navigate">SPLASH 2010 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"></li><li class="block"><a href="http://www.oopsla.org/oopsla2009/" target="_blank" class="navigate">OOPSLA 2009 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2008/" target="_blank" class="navigate">OOPSLA 2008 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2007/index.php?page=home/" target="_blank" class="navigate">OOPSLA 2007 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2006/program.html" target="_blank" class="navigate">OOPSLA 2006 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2005/ShowPage.do?id=Home" target="_blank" class="navigate">OOPSLA 2005 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2004/ShowPage.do?id=Home" target="_blank" class="navigate">OOPSLA 2004 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/oopsla2003/files/" target="_blank" class="navigate">OOPSLA 2003 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2002/" target="_blank" class="navigate">OOPSLA 2002 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2001/" target="_blank" class="navigate">OOPSLA 2001 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li><li class="block"><a href="http://www.oopsla.org/2000/" target="_blank" class="navigate">OOPSLA 2000 <span class="pull-right"><span class="glyphicon glyphicon-new-window"></span></span></a></li></ul></li></ul><div class="navbar-right"><ul class="block nav navbar-nav"><li class="block"><a href="https://conf.researchr.org/signin/splash-2013/https%3A%5Es%5Es2013.splashcon.org%5Estrack%5Essplash-2013-Tutorials" rel="nofollow" class="navigate">Sign in</a></li><li class="block"><a href="https://2013.splashcon.org/signup" class="navigate">Sign up</a></li></ul></div></div></div></div><div id="content" class="container"><div class="page-header"><span class="text-muted small"><span class="glyphicon glyphicon-home"></span> <a href="https://2013.splashcon.org" class="navigate">SPLASH 2013</a> (<a href="https://2013.splashcon.org/series/splash" class="navigate">series</a>) / </span><h1>Tutorials<span class="pull-right small h1">SPLASH 2013</span></h1></div><div class="row"><div class="col-sm-8"><p>The SPLASH tutorial program complements the technical material from OOPSLA, Onward!, and Wavefront with 80-minute tech talks and 1/2-day in-depth tutorials taught by experts that provide participants with in-depth or hands-on background in the area of focus. We invite tech talks and tutorials covering any topic related to SPLASH and its constituent events, including programming languages, programming, and software engineering. Tutorials and talks should target one or more significant segments of SPLASH’s audience, which includes researchers, educators, students, and leading-edge practitioners. Successful tutorial models include describing an important piece of research infrastructure, introducing an educational technique or tool, or educating the community on an emerging topic. Note the different tutorial model this year, with free tutorials and the short tech talk option, and the first-come first-served review process.</p> <h2>Program</h2><p><div class="text-box"> <h4> Capsule-Oriented Programming: Concurrency Made Simple </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Sean Mooney</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Bryan Shrader</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Lorand Szakacs</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Hridesh Rajan</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> </div> <p>This tutorial will provide an introduction to capsule-oriented programming and introduce the Panini programming language and infrastructure.</p> <p>It is often difficult but necessary to read, write, and reason about concurrent programs, a process which can benefit from better abstractions for concurrency. One promising approach to addressing this problem is the combination of state and control within a linguistic mechanism, as well as the use of asynchronous messages to enable communication between system entities. However, this approach requires programmers adapt to the asynchronous style of programming. Capsule-oriented programming, a new approach to addressing these concerns, focuses on providing sequentially trained programmers with actor-like abstractions via a familiar synchronous model. The programs look similar to sequential programs and maintain sequential semantics, but are implicitly concurrent.</p> <p>This tutorial will begin by discussing capsule-oriented programming. We will then proceed to define the Panini language, a capsule-oriented extension of Java, and work through several hands-on examples which demonstrate the benefits of the language. We will conclude with pointers to the ongoing design and implementation work of the language.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://paninij.org" target="_blank">http://paninij.org</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/mooney.jpg"> <strong>Sean Mooney</strong> is a graduate student at Iowa State University with a research focus on program analysis and methods for concurrency.</p> <p><img src="/getImage/splash-2013/orig/shrader.jpg"> <strong>Bryan Shrader</strong> is an undergraduate student at Iowa State University. He works on the Panini project as a compiler engineer.</p> <p><img src="/getImage/splash-2013/orig/szakacs.jpg"> <strong>Lorand Szakacs</strong> is a graduate student at Iowa State University with a focus on easing the development of reliable software that scales to multi-core processors by means of programming language design and implementation.</p> <p><img src="/getImage/splash-2013/orig/rajan.jpg"> <strong>Hridesh Rajan</strong> has extensive experience developing new languages. He has developed the Panini, Boa, Ptolemy and Eos languages.</p></span></div> </div> </div> </td></tr></tbody></table> <h4> Interactive Language Design with the Spoofax Language Workbench </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Eelco Visser</span>, <span class="affiliation">Delft U Technology</span>, <span class="country">Netherlands</span></div> <div class="participant"><span class="name">Guido Wachsmuth</span>, <span class="affiliation">Delft U Technology</span>, <span class="country">Netherlands</span></div> </div> <p>The Spoofax language workbench is a platform for the development of textual software languages with state-of-the-art IDE support. Spoofax provides a comprehensive environment that integrates syntax definition, name binding, program transformation, code generation, and declarative specification of IDE components. It supports agile development of languages by allowing incremental, iterative development of languages and showing editors for the language under development alongside its definition.</p> <p>This tech talk presents principles and techniques for the design and implementation of software languages in Spoofax, illustrated using a subset of Java. These techniques are explained using Spoofax’s high-level DSLs for language engineering. Spoofax’s testing language enables test-driven language engineering. The syntax definition formalism SDF supports modular definition of (composite) languages. The name binding language NaBL enables declarative definitions of name binding and scope rules of software languages. The Stratego transformation language unifies model transformation and code generation. The use of concrete object syntax allows structured transformation patterns to be phrased in the syntax of the source language.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/visser.jpg"> <strong>Eelco Visser</strong> is associate professor at Delft University of Technology, where he leads the Software Language Design and Engineering program, which develops the Spoofax language workbench, as well as many domain-specific languages, including DSLs for syntax definition (SDF), program transformation (Stratego), web application development (WebDSL), and mobile phone applications (mobl).</p> <p><img src="/getImage/splash-2013/orig/wachsmuth.jpg"> <strong>Guido Wachsmuth</strong> is assistant professor at Delft University of Technology where he designs and implements new declarative metalanguages for the Spoofax language workbench, including languages for name binding (NaBL) and type systems.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> R: A Language for Analyzing Data </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Tomas Kalibera</span>, <span class="affiliation">Purdue U</span>, <span class="country">Czech Republic</span></div> </div> <p>The R language and runtime was released in 1995 and quickly gained its popularity as a tool for scientific computing. Over the last decade it has become a key platform for implementing data analysis algorithms. Today R has over 5000 open-source packages, an estimated base of 2000 package developers and 2 million end users. For computer scientists, R is a useful tool for analyzing and visualizing experimental results. But most of all it is a challenge for researchers in programming languages and virtual machines. R has function closures with lexical scoping, but also lazy evaluation of function arguments. R allows to reflectively access code as text and to turn text into code and evaluate it in any scope. R code can run in synthetically created scopes, e.g. in data sets. R has rich support for vector arithmetics, including arithmetics with missing data. The talk includes a tutorial on R for computer scientists based on a running example of summarizing results of a DaCapo benchmark and it is intended for anyone who needs to analyze experimental results - no prior knowledge of R is expected. The second part of the talk covers interesting features of the R language which make R a distinctive language but also a challenge for fast execution.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/kalibera-small.jpg"></p> <p><b>Tomas Kalibera</b> is a researcher working for Purdue University on the FastR project. His research interests include virtual machines, garbage collection, and benchmarking based on statistical methods.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Best Practices for Writing and Managing Performance Requirements </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">André Bondi</span>, <span class="affiliation">Siemens</span>, <span class="country">USA</span></div> </div> <p>Functional requirements refer to how a piece of a system functions or what it does given specific inputs. Nonfunctional requirements refer to such business and engineering needs as performance, reliability, availability, stability, usability, compatibility with interfaces, and security. Performance requirements are one of the main drivers of architectural decisions. They may also play a role in the choice of programming languages and environments to be used. Because many performance problems have their roots in architectural decisions, and since poor performance is a principal cause of software project risk, it is essential that performance requirements be developed early in the software lifecycle, and that they be clearly formulated. In this tutorial, we shall look at criteria for high-quality performance requirements, including algebraic consistency, measurability, testability, and linkage to business and engineering needs. While focus of this tutorial is on practice, we shall show how the drafting of performance requirements can be aided by performance modeling. We shall show methods for presenting and managing performance requirements that will improve their chances of being accepted by architects, developers, testers, contract negotiators, and purchasers; and of their being successfully implemented and tested.</p> <p><a style="border-bottom: 2px DeepSkyBlue dotted;" href="http://icpe2012.ipd.kit.edu/fileadmin/user_upload/descartes/icpe2012/docs/perf_requirements_ICPE2012_tutorial_boston_greyscale.pdf">Presentation Slides</a> are available.</p><div class="presentation-extra"><span class="label">Audience</span><span class="">This tutorial is intended for architects, requirements engineers, developers, and their managers.It is also of interest to product managers, who must elicit product performance needs, and designers of programming languages in performance-sensitive domains</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/bondi.jpg"> <strong>André Bondi</strong> is a performance engineer and senior research scientist in the Software Engineering Department at Siemens Corporation, Corporate Research and Technology in Princeton, New Jersey. He spent a year on assignment in Munich as the lead performance engineer of team that used an agile process to develop a system based on a service-oriented architecture. He has been actively involved with the negotiation and interpretation of performance requirements with developers and suppliers of services. He has worked on performance issues in several domains, including railway control, alarm systems, telecommunications, call centers, conveyor systems, finance systems, building surveillance, and network management systems. Just prior to joining Siemens, he held senior performance positions at two startup companies. Before that, he spent more than ten years working on a variety of performance and operational issues at AT&T Labs and its predecessor, Bell Labs, in New Jersey. He taught courses in performance, simulation, and operating systems principles at the University of California, Santa Barbara for three years. Dr. Bondi holds a Ph.D. in computer science from Purdue University and an M.Sc. in statistics from University College London.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Language Modeling Principles </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Ralf Lämmel</span>, <span class="affiliation">U Koblenz</span>, <span class="country">Germany</span></div> </div> <p> This tutorial is concerned with <i>software languages</i> in a broad sense to include domain-specific languages (DSLs and DSMLs, embedded or not), programming languages as well as intermediate and auxiliary languages in grammarware and modelware. The overarching objective of the tutorial is to foster cross-pollination between the technological spaces with interests in language modeling: modelware, grammarware, and, to some extent, ontoware. <i>Language modeling</i> refers to the process of defining the syntax and semantics of a language while involving different aspects: abstract (tree- versus graph-based) versus concrete (textual versus visual) syntax, parsing, editing, pretty-printing, well-formedness, well-typedness, and other constraints, dynamic semantics in terms of interpretation or reduction, and translation-based semantics.</p> <p>The tutorial walks through a catalogue of <i>language modeling problems</i> and recovers fundamental <i>notions</i> to provide simple, technology-neutral explanations of these problems. The notions, some of them on the verge of extinction, are adopted from diverse disciplines of programming languages and software engineering, e.g., compiler construction, formal semantics, metamodeling, software language engineering, algebraic specification, term rewriting, functional programming, the semantic web, software reverse and re-engineering.</p> <p>For instance, consider the well-known problem of mapping (textual) concrete syntax to abstract syntax. How to model and thus, to fundamentally understand such a mapping in a principled manner? The problem can be explained in terms of these basic notions: algebraic signature, term algebra, algebraic interpretation of a context-free grammar, and signature morphism. This is a suitable foundation for understanding such mappings as facilitated by specific grammarware or modelware technologies. Here are some other language modeling problems: definition-use resolution, type and constraint checking, type inference and logical reasoning, program and model normalization, interpretation, model and program translation and generation, and language embedding. Of course, the idea is not to cover these problems in depth, but to associate them with fundamental notions that explain the problems at a basic level to support helpful and robust intuitions.</p> <p>Lightweight semi-formal notation, encoded in Prolog or Haskell, is used to capture the involved notions, thereby providing an integrated and executable model of language modeling. Profound background on the aforementioned disciplines is not assumed. Specific grammarware and modelware technologies serve for illustration. Further reading pointers are provided. The tutorial is interactive in that it is designed to pursue continuous discussion on a representative and manageable set of language modeling problems, a suitable and digestible set of notions to explain the problems, and a diverse set of technologies and applications for illustration.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://softlang.uni-koblenz.de/splash13/" target="_blank">http://softlang.uni-koblenz.de/splash13/</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/laemmel.jpg"> <b>Ralf Lämmel</b> is Professor of Computer Science at University of Koblenz Landau, Germany. In the past, he held positions at Microsoft Corp., Free University of Amsterdam, CWI (Dutch Center for Mathematics and Computer Science), and the University of Rostock, Germany. Ralf Lämmel's speciality is "software language engineering", but he is generally interested in themes that combine software engineering and programming languages. He is one of the founding fathers of the international summer school series on Generative and Transformational Techniques on Software Engineering (GTTSE), the international conference on Software Language Engineering (SLE), and the 101companies project for the aggregation and integration of knowledge about software concepts, software languages, and software technologies.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Verified Software Components </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Murali Sitaraman</span>, <span class="affiliation">Clemson U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Bruce W. Weide</span>, <span class="affiliation">Ohio State U</span>, <span class="country">USA</span></div> </div> <p>In this tutorial, attendees will learn how to design, specify, and implement verified software components. The tutorial should be of interest to researchers, educators, and software practitioners. They will be involved in hands-on experimentation with construction and modular verification using a web-integrated software engineering environment that requires no software installation. The tutorial will discuss how to engineer specifications and how to design and annotate object-based component implementations of software components. To make the ideas concrete, the tutorial will use RESOLVE, an integrated specification and programming language especially designed for building verified components, which features a prototype “push-button” verifying compiler. It will also summarize the presenters’ experiences in adapting a RESOLVE discipline of component-based development to C++ and Java.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://www.cs.clemson.edu/resolve/research/docs/Verified-Software-Components-Tutorial-2013.pdf" target="_blank">http://www.cs.clemson.edu/resolve/research/docs/Verified-Software-Components-Tutorial-2013.pdf</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/sitaraman.jpg"> <strong>Murali Sitaraman</strong> is Professor of Computer Science in the School of Computing at Clemson. He directs the RESOLVE/Reusable Software Research Group (RSRG) at Clemson. His research spans a spectrum of foundational, practical, and educational topics in software engineering, and it has been supported by US NSF grants continuously for over 20 years. He has co-edited a book on Foundations of Component-Based Systems with Gary Leavens for Cambridge University Press. Together with members of his group, he has published over 100 papers in various forums. He has offered tutorial-style workshops to educators on teaching mathematical reasoning at the ACM SIGCSE conference several times, including each of the last four years. Sitaraman has taught these ideas to graduate and undergraduate students for over 20 years.</p> <p><img src="/getImage/splash-2013/orig/weide.jpg"> <strong>Bruce W. Weide</strong> is Professor of Computer Science and Engineering at Ohio State University. He and his colleagues in the RESOLVE/Reusable Software Research Group (RSRG) have studied design, specification, and verification of component-based software. Weide and his colleague, Prof. Tim Long, were awarded the IEEE Computer Society Computer Science and Engineering Undergraduate Teaching Award in 2000 “for innovative work in the content and pedagogy of introductory computer science education, linking research advances in software engineering with educational delivery of the material taught in the introductory courses.” Weide has taught these ideas to graduate and undergraduate students for over 30 years.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Mining Ultra-Large-Scale Software Repositories with Boa </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Robert Dyer</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Hridesh Rajan</span>, <span class="affiliation">Iowa State U</span>, <span class="country">USA</span></div> </div> <p>Mining software repositories provides developers and researchers a chance to learn from previous development activities and apply that knowledge to the future. Ultra-large-scale open source repositories (e.g., SourceForge with 350k+ projects) provide an extremely large corpus to perform such mining tasks on. This large corpus allows researchers the opportunity to test new mining techniques and empirically validate new approaches on real-world data. However, the barrier to entry is often extremely high. Researchers interested in mining must know a large number of techniques, languages, tools, etc, each of which is often complex. Additionally, performing mining at the scale proposed above adds additional complexity and often is difficult.</p> <p>The Boa language and infrastructure was developed to solve these problems. Boa provides a web-based interface for mining ultra-large-scale software repositories. Users use a domain-specific language tailored for software repository mining and submit queries to the website. These queries are then automatically parallelized and executed on a cluster.</p> <p>This tutorial teaches users how to efficiently perform mining tasks on over 600k open-source software projects. We introduce the language and supporting infrastructure and then perform several mining tasks. Users need not be experts in mining: Boa is simple enough for even novices, yet still powerful enough for experts.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://boa.cs.iastate.edu/" target="_blank">http://boa.cs.iastate.edu/</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/dyer.jpg"> <strong>Robert Dyer</strong> is the current lead on the Boa project. He co-developed the Boa language and backend caching mechanisms, and developed the compiler and the supporting website infrastructure. He has previously given a poster presentation on Boa and several formal demonstrations of Boa at SPLASH’12. He has prior experience implementing and evaluating the Ptolemy language.</p> <p><img src="/getImage/splash-2013/orig/rajan.jpg"> <strong>Hridesh Rajan</strong> has extensive experience in developing new languages. He co-developed the Boa language. Prior to that, he developed the Ptolemy language, an event-based language for advanced separation of concerns. He also developed the aspect-oriented language Eos. He has successfully given multiple tutorials and demonstrations on other topics at AOSD’10, FSE’10, ECOOP’11, AOSD’11, and ASE’11.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Parallel Programming with Charm++ </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Phil Miller</span>, <span class="affiliation">U Illinois</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Laxmikant Kale</span>, <span class="affiliation">U Illinois</span>, <span class="country">USA</span></div> </div> <p>Charm++ is a C++-based parallel programming framework with a 20-year track record of delivering high performance on systems ranging from single workstations to the largest supercomputers in the world. It supports parallel execution across shared and distributed memory systems with no technological discontinuity between the two regimes.</p> <p>Using objects as the units of parallelism, Charm++ allows parallel application logic to be expressed via collections of asynchronously interacting objects. This yields composable parallel software without compromising on the efficient utilization of available hardware. During execution, the runtime system in Charm++ observes application behavior and system conditions, and adapts the mapping of objects to processors accordingly. By doing so, the runtime system can automate many of the domain-independent necessities for good performance, like load balancing, exploiting accelerators, and energy management. Thus, application developers can focus on the requirements of their applications and users.</p> <p>This presentation will introduce attendees to the principles of parallel application development in Charm++. We will explain the advantages of expressing parallel algorithms using this paradigm. Attendees will see several examples of how Charm++ has been applied to create fast, scalable software. They will learn how to express parallel logic to construct their own parallel programs using Charm++.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><strong>Professor Laxmikant Kale</strong> works on various aspects of parallel computing, with a focus on enhancing performance and productivity via adaptive runtime systems. He has led the development of the Charm++ programming system with the aim of creating tools and techniques that advance the state of the art in computing while also providing a production-quality platform for programmers to develop parallel software. He is a Fellow of IEEE, collaborated on the widely used Gordon-Bell award winning (SC'2002) biomolecular simulation program NAMD, and won the Sidney Fernbach award for contributions to high performance computing.</p> <p><strong>Phil Miller</strong> works on developing new abstractions for high-performance computing applications. He has published work on safe usage of distributed-memory arrays, parallel I/O, distributed algorithms, and optimization of parallel numerical linear algebra. He is also one of the core developers of Charm++, focusing on performance tuning, usability, and making stable releases more widely available to application programmers.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Using a VM For Effective Research and Teaching: Learn to hack a VM in 90 minutes </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Matthias Hauswirth</span>, <span class="affiliation">U Lugano</span>, <span class="country">Switzerland</span></div> <div class="participant"><span class="name">Dmitri Makarov</span>, <span class="affiliation">U Lugano</span>, <span class="country">Switzerland</span></div> <div class="participant"><span class="name">Stephen M. Blackburn</span>, <span class="affiliation">Australian National U</span>, <span class="country">Australia</span></div> </div> <p>Virtual machines are a key technology for object oriented lan-guages, and thus an important context for research and teaching. Unfortunately, they also have a reputation as being intimidating and unapproachable. The purpose of this tutorial is to show researchers and educators how a large, widely used virtual machine can be used as an effective platform for research and teaching of the virtual machine technology. The tutorial is centered on a running exam-ple that involves designing, implementing and debugging a real-istic research-motivated extension to a virtual machine. We guide the audience through the process and demonstrate how to use the available tools to make sense of the VM’s sophisticated compo-nents and we show how to debug the machine when things don’t go as planned. We do this using Jikes RVM, a very widely used research Java virtual machine.</p> <p>At the end of the tutorial, participants who had never heard of Jikes RVM will have enough information to start using it for their teaching and research. The participants already familiar with the platform will have better understanding of the system and will learn about recent development targeted to make Jikes RVM more approachable to the broader circle of researchers and students.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://sape.inf.usi.ch/rdb" target="_blank">http://sape.inf.usi.ch/rdb</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/makarov.jpg"> <strong>Dmitri Makarov</strong> is a Ph.D. student at the University of Lugano. His research interests are parallel programming, virtual machines, compiler optimizations, software performance. He aims to improve performance of inherently sequential or difficult to parallelize algorithms on multiprocessors. After spending innumerable evenings debugging his modifications of the Jikes RVM with GDB, he decided to develop a tool that he could use to debug the machine faster and more efficiently.</p> <p><img src="/getImage/splash-2013/orig/hauswirth.jpg"> <strong>Matthias Hauswirth</strong> is an Associate Professor at the University of Lugano. He has been on the program committees of PLDI, ECOOP, OOPSLA and numerous other conferences, and he is a co-organizer of the EVALUATE workshop series. Matthias received the Credit Suisse Award for Best Teaching. He is interested in performance measurement, understanding, and optimization, and he has used the Jikes RVM in his research and teaching.</p> <p><img src="/getImage/splash-2013/orig/blackburn.jpg"><strong>Stephen M. Blackburn</strong> is a Professor at the Australian National University (ANU). He has served on numerous SIGPLAN program committees, including OOPSLA, ECOOP, PLDI, VEE and ISMM and served as chair for VEE, ISMM, and VMIL. He is an organizer of the EVALUATE workshop series. His research interests include programming language implementation, architecture, and performance analysis. He is a Distinguished Scientist of the ACM. Steve is a current member of Jikes RVM team and steering committee, has used Jikes RVM in teaching, and in 2004 with Perry Cheng, ran a successful OOPSLA tutorial on Jikes RVM's memory management subsystem, MMTk.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Diving into Dalvik </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Andrea Janes</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Dainius Jocas</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Giancarlo Succi</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Alberto Sillitti</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> </div> <p>“Dalvik” is the name of the virtual machine that runs programs on Android devices. The architecture of Dalvik is designed to match the energy consumption and performance requirements of devices with limited energy and hardware capabilities. Therefore, the study of the architectural decisions behind Dalvik is relevant for researchers and practitioners interested in the capabilities and limitations of the machine executing mobile programs and the specific programming styles required for battery-powered devices.</p> <p>To understand how Dalvik works, we compare it with the Java Virtual Machine running on desktop computers using the following criteria: the objectives, the compilation process, and the format of Dalvik executables.</p> <p>This talk points out the strengths of Dalvik, and how these strengths are achieved. Researchers and practitioners involved in mobile programming or Green Computing will learn how programs are executed and which strategies Dalvik adopts to retain battery power. This knowledge can be used to optimize program execution or to adopt similar strategies in similar projects.</p> <p><strong>Prerequisite:</strong> some experience in Java programming, and a basic understanding of computer architecture</p><div class="presentation-extra"><span class="label">Audience</span><span class="">Practitioners and researchers interested in software development for the Android platform.</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/janes.jpg"> <strong>Andrea Janes</strong> is an Assistant Professor at the Free University of Bolzano-Bozen (Italy) where he teaches a course on Architectures of Digital Systems. He has experience in mobile development in Java and C#.</p> <p><img src="/getImage/splash-2013/orig/jocas.jpg"> <strong>Dainius Jocas</strong> is a masters student in Computer Science at the Free University of Bolzano-Bozen (Italy) and passionate about Android development in Java.</p> <p><img src="/getImage/splash-2013/orig/sillitti.jpg"> <strong>Alberto Sillitti</strong>, Ph.D., is an Associate Professor at the Free University of Bolzano-Bozen (Italy) where he teaches a course on Internet and Mobile Services. He has experience in Android development in Java and C/C++.</p> <p><img src="/getImage/splash-2013/orig/succi.jpg"> <strong>Giancarlo Succi</strong>, Ph.D., is Professor at the Free University of Bolzano-Bozen (Italy) where he teaches a course on Advanced Internet Technologies. He has experience in Android development in Java and C/C++.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Fundamental Practices of Software Developers </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Václav Rajlich</span>, <span class="affiliation">Wayne State U</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">Christopher Dorman</span>, <span class="affiliation">Ford Motor Company</span>, <span class="country">USA</span></div> </div> <p>The tutorial surveys developers' tasks in agile, iterative, and evolutionary software development. Among these, a particularly important task is software change where developers add a new feature, correct a bug, or add a new property to software. The tutorial then surveys recent research results and explores how the results translate into the practice and teaching of software development. Examples of developer practices include “feature location” that locates in the existing code the place where a new feature is to be implemented, “impact analysis” that assesses how much the old code is going to be impacted if a new feature is added to it, refactoring that either prepares the code for the change or cleans up the aftermath, change propagation that traces where the secondary changes are to be made, verification that confirms both the new and the old code, and so forth. These practices are summarized in a “phased model of software change.”</p> <p><strong>Prerequisite:</strong> medium knowledge of object-oriented programming (e.g. C++, Java, or C#)</p><div class="presentation-extra"><span class="label">Audience</span><span class="">developers, educators, and students</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/rajlich.jpg"> <strong>Václav Rajlich</strong> is Professor of Computer Science at Wayne State University. His research centers on agile, iterative, and evolutionary software development. He has published approximately 100 refereed papers and a recent book. He is the founder the IEEE International Conference on Program Comprehension (ICPC), and a member of Editorial Board of Journal of Software: Evolution and Process.</p> <p><strong>Christopher Dorman</strong> is a Java developer at Ford Motor Company in Dearborn, Michigan. He practices the processes presented in the tutorial on a daily basis. He also taught classes and given talks on the processes.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> How to Document the Architecture of Your Application Using UML and More </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Paulo Merson</span>, <span class="affiliation">Software Engineering Institute, Carnegie Mellon U</span>, <span class="country">USA</span></div> </div> <p>Have you ever been confused by an arrow in a box-and-line design diagram? Do you use UML in your software architecture? Have you ever wondered where is the line between architecture and detailed design? If your answer is yes to any of these questions, then this tutorial has practical and valuable information for you. The goal is to show you what information about an architecture should be captured, so that others can successfully use it, maintain it, and build a software system from it. Important takeaways from this tutorial include: architecture consists of multiple views; how can we use UML in each view and when other notations work better; what views can we use to evaluate performance, availability, modifiability and other qualities; how to complement structural diagrams with sequence diagrams, statecharts and other behavior diagrams; how to document software interfaces; guidelines and templates to make your architecture documentation more effective. To benefit the most from this tutorial, attendees should have familiarity with basic UML and an interest in software architecture.</p> <p><strong>Prerequisite:</strong> intermediate level of knowledge/experience in software development in general, and familiarity with basic UML.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://www.scribd.com/doc/179906596/How-to-Document-the-Architecture-of-Your-Application-Using-UML-and-More" target="_blank">http://www.scribd.com/doc/179906596/How-to-Document-the-Architecture-of-Your-Application-Using-UML-and-More</a></span></div> <div class="presentation-extra"><span class="label">Audience</span><span class="">Practitioners that produce or consume software architecture documentation, and educators who teach software architecture.</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/merson.jpg"> <strong>Paulo Merson</strong> has 22 years of software development experience. He is a visiting scientist at the Software Engineering Institute where one of his assignments is to teach a 2-day course in "Documenting Software Architectures". Paulo also works in industry as a software architect. His speaking experience includes tutorials at SD Best Practices, Dr. Dobb’s Architecture & Design World, JavaOne, SATURN Conference, The SOA and Cloud Symposium, lectures to graduate students at universities in the US, Europe and Brazil, and invited talks at different companies. He is co-author of <em>Documenting Software Architectures: Views and Beyond, 2nd edition</em>.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Multicore Programming using Divide-and-Conquer and Work Stealing </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">S. Tucker Taft</span>, <span class="affiliation">AdaCore</span>, <span class="country">USA</span></div> </div> <p>This tutorial will introduce attendees to the various paradigms for creating algorithms that take advantage of the growing number of multicore processors, while avoiding the overhead of excessive synchronization overhead. Many of these approaches build upon the basic divide-and-conquer approach, while others might be said to use a multiply-and-conquer paradigm. Attendees will also learn the theory and practice of "work stealing," a multicore scheduling approach which is being adopted in numerous multicore languages and frameworks, and how classic work-list algorithms can be restructured to take best advantage of the load balancing inherent in work stealing. Finally, the tutorial will investigate some of the tradeoffs associated with different multicore storage management approaches, including task-local garbage collection and region-based storage management.</p> <p><strong>Prerequisite:</strong> Intermediate to advanced knowledge of programming, with some understanding of multi-threaded/multi-tasking issues, including race conditions and synchronization.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/taft.jpg"> <strong>S. Tucker Taft</strong> is VP and Director of Language Research at AdaCore, a company focused on open-source tools to support the development of high-integrity software. Tucker joined AdaCore in 2011 as part of a merger with SofCheck, a company he had founded in 2002 to develop advanced static analysis technology. Prior to that Tucker was a Chief Scientist at Intermetrics, Inc. and its follow-ons for 22 years, where in 1990-1995 he led the design of Ada 95. Tucker received an A.B. Summa Cum Laude degree from Harvard University, where he has more recently taught compiler construction and programming language design.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Agile Studies of Agile Methods </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">James Noble</span>, <span class="affiliation">Victoria U Wellington</span>, <span class="country">New Zealand</span></div> </div> <p>Over the last ten years, Agile Methods have been adopted for many software development projects. In this talk, I'll describe the research method - Grounded Theory - that we have adopted to study Agile projects and teams, and present some of the results of that research. In particular, I'll talk about the history of Grounded Theory in the social sciences, the major stages of a Grounded Theory research project, and describe the major techniques: data gathering, coding, constant comparison. I'll describe how Grounded Theory relies upon the kind of feedback loops that are characteristic Agile methods, in particular theoretical sampling and selective coding. I'll talk about how to know when you're done: theoretical saturation, theoretical coding, and completing literature reviews. Finally I'll talk about the kind of research results discovered by Grounded Theory, their relationships to other kinds of research and publications, and hints on how to convince programme committees that they should accept your research.</p><div class="presentation-extra"><span class="label">Audience</span><span class="">Researchers, students, and practitioners interested in grounded theory research techniques and in research results about agile methods.</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><b>James Noble</b> is Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand. His research centres around software design, ranging from object-orientation, aliasing, design patterns, and agile methodology, via usability and visualisation, to postmodernism and the semiotics of programming.</p> <p><img src="/getImage/splash-2013/orig/noble.jpg"></p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Living without Pointers: Bringing Value Semantics to Object-Oriented Parallel Programming </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">S. Tucker Taft</span>, <span class="affiliation">AdaCore</span>, <span class="country">USA</span></div> </div> <p>The heavy use of pointers in modern object-oriented programming languages interferes with the ability to adapt computations to the new distributed and/or multicore architectures. This tech talk will introduce an alternative pointer-free approach to object-oriented programming, which dramatically simplifies adapting computations to the new hardware architectures. This tech talk will illustrate the pointer-free approach by demonstrating the transformation of two popular object-oriented languages, one compiled, and one scripting, into pointer-free languages, gaining easier adaptability to distributed and/or multicore architectures, while retaining power and ease of use.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/taft.jpg"> <strong>S. Tucker Taft</strong> is VP and Director of Language Research at AdaCore, a company focused on open-source tools to support the development of high-integrity software. Tucker joined AdaCore in 2011 as part of a merger with SofCheck, a company he had founded in 2002 to develop advanced static analysis technology. Prior to that Tucker was a Chief Scientist at Intermetrics, Inc. and its follow-ons for 22 years, where in 1990-1995 he led the design of Ada 95. Tucker received an A.B. Summa Cum Laude degree from Harvard University, where he has more recently taught compiler construction and programming language design.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Unlocking the benefits of the API Economy </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Israel Gat</span>, <span class="affiliation">Cutter Consortium</span></div> <div class="participant"><span class="name">Tadas Remencius</span>, <span class="affiliation">Free U Bozen-Bolzano</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Alberto Sillitti</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Jelena Vlasenko</span>, <span class="affiliation">Free U Bozen-Bolzano</span>, <span class="country">Italy</span></div> <div class="participant"><span class="name">Giancarlo Succi</span>, <span class="affiliation">Free U Bolzano-Bozen</span>, <span class="country">Italy</span></div> </div> <p>API Economy is economy where companies expose their (internal) business assets or services in the form of (web) APIs to third parties with the goal of unlocking additional business value. Triggered by the explosion of the growth of Internetenabled devices, evolution of social interactions (i.e., social networking, social commerce), and appearance of new software markets in the form of Apps, API Economy brings a different philosophy to how companies do business and how they interact with their customers and competition. The aim of this talk is to give a clear view on what API Economy is, what opportunities it offers to API producers and API consumers, and what are the general steps (methodology) to unlock those benefits.</p><div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/gat.jpg"> <strong>Dr. Israel Gat</strong> is a Cutter Consortium Fellow and Director of the Agile Product & Project Management practice, a Fellow of the Lean Systems Society, and a member of the Trident Capital SaaS advisory board.</p> <p><img src="/getImage/splash-2013/orig/remencius.jpg"> <strong>Tadas Remencius</strong> is a Researcher at the Free University of BolzanoBozen (Italy). His primary research area is knowledge and experience management.</p> <p><img src="/getImage/splash-2013/orig/sillitti.jpg"> <strong>Alberto Sillitti</strong>, Ph.D., is Associate Professor at the Free University of BolzanoBozen (Italy) where he teaches the Internet and Mobile Services course.</p> <p><img src="/getImage/splash-2013/orig/succi.jpg"> <strong>Giancarlo Succi</strong>, Ph.D., is Professor at the Free University of BolzanoBozen (Italy) where he teaches the Advanced Internet Technologies.</p> <p><img src="/getImage/splash-2013/orig/vlasenko.jpg"> <strong>Jelena Vlasenko</strong>, M.Sc., graduated from Free University of BolzanoBozen (Italy) in July 2012. Her research area is focused on Agile Software Development techniques and in particular on the effects of social aspects on team performance.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Developing Verified Programs with Dafny </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">K. Rustan M. Leino</span>, <span class="affiliation">Microsoft</span>, <span class="country">USA</span></div> </div> <p>Reasoning about programs is a fundamental skill that every software engineer needs. This tutorial provides participants an opportunity to get hands-on experience with Dafny, a tool that can help develop this skill. Dafny is a programming language and state-of-the-art program verifier. The language is type-safe and sequential, and it includes common imperative features, dynamic object allocation, and datatypes. It also includes specification constructs like pre- and postconditions, which let a programmer record the intended behavior of the program along with the executable code that is supposed to cause that behavior. What sets Dafny apart from other programming systems is that it runs its verifier continuously in the background, and thus the consistency of a program and its specifications is always enforced. This tutorial gives a taste of how to use Dafny in program development. This includes an overview of Dafny, basics of writing specifications, how to debug verification attempts, and how to formulate and prove lemmas. The tutorial is geared toward programmers who want to get their programs right, students, educators, as well as researchers in formal methods.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://research.microsoft.com/dafny" target="_blank">http://research.microsoft.com/dafny</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/leino.jpg"> <strong>Rustan Leino</strong> is a Principal Researcher at Microsoft Research. He is known for his work on programming methods and program verification tools, including Dafny, Chalice, Boogie, and ESC/Java. With Dafny, his mission is not just to provide a tool that helps teach programmers to reason about programs, but also to provide a vision for the kind of automatic reasoning support that all future programming environments may provide. Previously, Leino has been a researcher at DEC/Compaq SRC and a software developer at Microsoft. Leino collects thinking puzzles on a popular web page and hosts the Verification Corner channel on YouTube.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Grace: A new object-oriented language for novices </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Kim Bruce</span>, <span class="affiliation">Pomona College</span>, <span class="country">USA</span></div> <div class="participant"><span class="name">James Noble</span>, <span class="affiliation">Victoria U Wellington</span>, <span class="country">New Zealand</span></div> <div class="participant"><span class="name">Andrew Black</span>, <span class="affiliation">Portland State U</span>, <span class="country">USA</span></div> </div> <p>With increasing frustration with Java and its ilk, instructors are searching for an alternative language for introducing students to object-oriented programming. This alternative should have simple and clear syntax and semantics, provide good support for object-oriented programming, and yet give instructors the flexibility to introduce the material in a variety of ways, including objects-first, objects-late, and functional-first. It should also support both dynamic and static typing.</p> <p>Grace is a new language that meets these needs. Grace allows the definition of both objects and classes, provides encapsulation and inheritance, and is gradually typed, allowing instructors to start with either dynamic or static typing and to move from one to the other. Moreover, Grace provides a concise syntax for first-class functions providing great flexibility in building new language constructs from the primitive notions of the language.</p> <p>In order to support good pedagogy, Grace, like Racket, supports dialects, so that students can be introduced first to limited versions of the language, which can then be grown, in a variety of ways, to the full version. A simple, object-based module system supports the use of libraries that can be used as scaffolding for teaching. For example, a Grace version of the Java objectdraw library for graphics is available for use in teaching event-based graphical programming using Grace.</p> <p>The first 90 minutes of this tutorial will introduce participants to the features of Grace, the motivations that led to the design, and discuss how Grace might be used in introductory courses. Those wanting to experience Grace immediately may stay for a second 90-minute lab in which they can try their hand at Grace programming.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="http://gracelang.org/" target="_blank">http://gracelang.org/</a></span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p>The presenters of this tutorial are the members of the core Grace deign team: Black, Bruce and Noble. All are involved in teaching undergraduate programming, and are looking forward to teaching their introductory courses with a modern, conceptually simple, object-oriented programming language: Grace.</p> <p><strong>Kim Bruce</strong> has been Reuben C. and Eleanor Winslow Professor of Computer Science at Pomona College and the Frederick Latimer Wells Professor of Computer Science emeritus at Williams College, where he taught for 28 years. He received his B.A. from Pomona College and Ph.D. from the University of Wisconsin.</p> <p>Bruce's research is mainly in the area of programming language design and semantics, with special focus on object-oriented languages. He has also done considerable work in computer science education, including work on the ACM/IEEE CS Curricula '91 committee and on all three of the curricula put forward by the Liberal Arts Computer Science Consortium. He received the ACM SIGCSE award for Outstanding Contributions to Computer Science Education in 2005. Aside from the usual collection of research papers, he has authored two books: Foundations of Object-Oriented Languages: Types and Semantics, published in 2002 by MIT Press, and Java: An Eventful Approach (with Danyluk and Murtagh) in 2005.</p> <p><img src="/getImage/splash-2013/orig/noble.jpg"> <strong>James Noble</strong> is Professor of Computer Science and Software Engineering at Victoria University of Wellington, New Zealand. James has B.Sc(Hons) and Ph.D. degrees, both from VUW, completed in 1997. After leaving VUW, James worked in Sydney, first at the University of Technology, Sydney, and then at the Microsoft Research Institute, Macquarie University. James returned to VUW as a lecturer in late 1999, just in time to avoid the predicted end of the world.</p> <p>Noble's research centers around software design. This includes the design of the users' interface, the parts of software that users have to deal with every day, and the programmers' interface, the internal structures and organizations of software that programmers see only when they are designing, building, or modifying software. His research in both of these areas is colored by his longstanding interest in object-oriented approaches to design.</p> <p><strong>Andrew Black</strong> is Professor of Computer Science at Portland State University, and a former head of department at the Oregon Graduate Institute. He has been both teaching programming and designing programming languages since 1977, and holds a doctorate from the University of Oxford, but has also punctuated his academic career with spells in industry.</p> <p>Black's research aims at making programming easier, and encompasses programming environments and tools as well as languages. He is a co-designer of Emerald, the first object-based distributed programming language, and of the traits mechanism for software reuse, which has been adopted in various forms by several recent languages, including Fortress, Pearl and Scala. He is a co-author of <i>Squeak By Example</i> and <i>Pharo by Example</i>.</p></span></div> </div> </div> <div class="icons"> </div> </td></tr></tbody></table> <h4> Using Functional Programming Concepts in Financial Engineering </h4> <table><tbody><tr><td> <div class="session"> <div class="presentation"><div class="participants"><div class="participant"><span class="name">Roberto Salama</span>, <span class="country">USA</span></div> </div> <p>Attendees of this tutorial will gain hands-on experience using functional programming for solving financial engineering problems. In this tutorial, we will acquaint ourselves with Kx’s KDB/Q language, a dynamically-typed vector-oriented language with roots in APL, while comparing and contrasting some of the programming concepts with equivalent ones in Scala. The tutorial consists of three parts:</p> <ol> <li><p>Overview of KDB/Q, its data types and functional constructs.</p></li> <li><p>Financial engineering concepts, returns, volatility, discount factors, binomial lattice models, and term structures, the basic building blocks of many financial engineering problems.</p></li> <li><p>Building a real-time mock market tick by tick system that feeds real-time calculation engine based on some of the concepts introduced in Section 2.</p></li> </ol> <p>The goal of this tutorial is two-fold. First, it is to introduce both financial engineering concepts and the computational resources required to model and solve problems in this discipline. Second, it is to explore the use of a functional programming language to build solutions for problems in this area.</p> <p><strong>Prerequisites:</strong> This tutorial will be presenting KDB/Q from the ground up. So while there are no prerequisites for this tutorial, some prior experience with Scheme/Lisp, Scala, Clojure would make it easier to grasp some of the concepts presented.</p><div class="presentation-extra"><span class="label">Url</span><span class=""><a href="https://drive.google.com/folderview?id=0B3SJfYZV0AaKdXZ4VnJibDlpRFk&usp=sharing" target="_blank">https://drive.google.com/folderview?id=0B3SJfYZV0AaKdXZ4VnJibDlpRFk&usp=sharing</a></span></div> <div class="presentation-extra"><span class="label">Audience</span><span class="">People interested in the application of functional programming to the area of financial engineering.</span></div> <div class="presentation-extra"><span class="label">Resume</span><span class=""><p><img src="/getImage/splash-2013/orig/salama.jpg"> <strong>Roberto Salama</strong> has an MS in Electrical and Computer Engineering from North Carolina State University. He worked in the area of circuit simulation for a number of years before heading on to financial engineering. Over the last twenty years, he has worked at Goldman Sachs and Morgan Stanley building systems ranging from Fixed Income trading systems to financial analysis interactive platforms to time series systems. His area of interest is the application of emerging technologies, especially in the areas of language and distributed processing, to financial engineering.</p></span></div> </div> </div> </td></tr></tbody></table> </div> <div class="blog_more"> </div> </p><h2>Call for Contributions</h2><p><p>The SPLASH tutorial program complements the technical material from OOPSLA, Onward!, and Wavefront with 80-minute tech talks and 1/2-day in-depth tutorials taught by experts that provide participants with in-depth or hands-on background in the area of focus. We invite tech talks and tutorials covering any topic related to SPLASH and its constituent events, including programming languages, programming, and software engineering. Tutorials and talks should target one or more significant segments of SPLASH's audience, which includes researchers, educators, students, and leading-edge practitioners. Successful tutorial models include describing an important piece of research infrastructure, introducing an educational technique or tool, or educating the community on an emerging topic. <i>Note the different tutorial model this year, with free tutorials and the short tech talk option, and the first-come first-served review process.</i></p> <table cellspacing="0" class="view cfp-submission-summary"> <tbody><tr> <th colspan="2">Submission Summary</th> </tr> <tr> <td>Due on:</td> <td>April 10, 2013</td> </tr> <tr> <td>Accepted until:</td> <td>May 20, 2013</td> </tr> <tr> <td>Notifications:</td> <td>May 25, 2013</td> </tr> <tr> <td>Camera-ready copy due:</td> <td>(Tentative) August 05, 2013</td> </tr> <tr> <td>Format:</td> <td><a href="http://www.acm.org/sigs/sigplan/authorInformation.htm" target="_blank">ACM Proceedings format</a></td> </tr> <tr> <td>Contact:</td> <td> (chair)</td> </tr> </tbody></table> <p>The ACM International Conference on Systems, Programming, Languages and Applications: Software for Humanity (SPLASH) is sponsored by ACM SIGPLAN.</p> <p>SPLASH is the home of OOPSLA Research Papers, Onward!, and the Dynamic Languages Symposium, among other events.</p><h3>Tutorial Changes from Previous Years</h3> <p>This year's tutorial track re-introduces half-day tutorials in addition to shorter tech talks. In a change from the OOPSLA tutorial model of a few years back, the tutorial track will focus on fewer tutorials and talks that are of interest to a broad set of attendees. Tutorials will be free for all conference participants to attend, which should increase tutorial audiences but, given the desire to keep registration costs low, precludes offering significant compensation to presenters. The tradeoff benefit to presenters is a larger audience for their tutorials.</p> <p>Note that after April 10th proposals are evaluated on a first-come first-serve basis, until the final deadline which is May 20th.</p> <h3>Submission</h3> <p>A tutorial submission should be emailed to <b>tutorials@splashcon.org</b>, and should include the following information:</p> <ul> <li>Tutorial or talk title</li> <li>Category: 80-minute tech talk or 3-hour tutorial.</li> <li>Abstract: a description of the tutorial in under 200 words, to appear in the SPLASH advance program. Take care to write an accurate and compelling abstract, as this is your primary way of "selling" your tutorial to potential attendees.</li> <li>Advertising biography: a biography of the presenters, in under 100 words, for the advance program.</li> <li>Presenters and contact person: For each presenter, include name, e-mail address, and affiliation. You may optionally expand on the brief "advertising" biography given above, to more completely describe the presenters' expertise and experience with the subject. If there are multiple presenters, indicate the contact person for the tutorial.</li> <li>1-3 page tutorial or talk description. Include the objectives of the tutorial, the topics to be covered, the presentation approach (which may include slides, hands-on or laptop exercises, games, etc.). It is suggested that 3-hour tutorials include exercises or interactive elements, not just lecture slides. Tech talk speakers should plan an 80-minute presentation with 10 additional minutes available for questions. Describe the target audience and their prerequisite knowledge. If the tutorial has been offered before, describe in what venue (e.g. which conference), the date, and the number of attendees. Describe any special requirements, beyond a room and standard A/V equipment.</li> </ul> <p>Evaluation of submitted proposals starts after April 10th, 2013. Proposals submitted after that date may be selected based on their quality and provided there is space available.</p><div class=""><h3>For More Information</h3> <p>For additional information, clarification, or answers to questions please contact the Tutorials Chair, Jonathan Aldrich.</p></div> <hr style="margin:45px 0 35px"> </p></div><div class="col-sm-4 sidebar"><div class="panel panel-primary"><div class="panel-heading clearfix"><div class="panel-title"><a href="https://2013.splashcon.org/committee/splash-2013-tutorials-committee" class="navigate">Committee</a></div></div><ul class="list-group"><li class="list-group-item"><a href="https://2013.splashcon.org/profile/jonathanaldrich" class="navigate"><div class="media"><span class="pull-left"><img alt="Jonathan Aldrich" src="https://2013.splashcon.org/getProfileImage/jonathanaldrich/acd988d9-fcba-4bc9-87e1-7db3a8b9928e/micro-avatar.jpg?1711456124000" class="outputimage media-object thumbnail no-bottom-margin"/></span><div class="media-body"><h5 class="media-heading">Jonathan Aldrich<span class="pull-right"><small>Chair</small></span></h5><h5 class="media-heading"><span class="text-black">Carnegie Mellon University</span></h5><h5 class="media-heading"><small>United States</small></h5></div></div></a></li></ul></div></div></div><div id="messages-placeholder" class="alert alert-warning" style="display:none;"><a data-dismiss="alert" class="close">x</a><em>Mon 25 Nov 00:03</em></div></div><div id="notifications-ph" class="webdsl-placeholder"></div><div id="event-modal-loader" class="webdsl-placeholder"><form name="form_131600131703c411e65b13378d08eb1f6672b5a0259" id="form_131600131703c411e65b13378d08eb1f6672b5a0259" action="https://2013.splashcon.org/eventDetailsModalByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_131600131703c411e65b13378d08eb1f6672b5a0259" value="1" /><input type="hidden" name="context" value="splash-2013" /><input name="ae03f7f6f951d515a297b161e922205d" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2013.splashcon.org/eventDetailsModalByAjaxConferenceEdition","eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259", [{"name":"context", "value":"splash-2013"},],"form_131600131703c411e65b13378d08eb1f6672b5a0259", this.nextSibling, false,"event-modal-loader"); return false;'></button><a submitid="eventDetailsModalByAjaxConferenceEdition_ia0_3c411e65b13378d08eb1f6672b5a0259" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="load-modal-action"></a></form></div><div id="event-star-form" class="webdsl-placeholder"><form name="form_509860938088b48fd14544d4239b498a2cf339e02b" id="form_509860938088b48fd14544d4239b498a2cf339e02b" action="https://2013.splashcon.org/eventStarByAjaxConferenceEdition" accept-charset="UTF-8" method="POST" class="hidden"><input type="hidden" name="form_509860938088b48fd14544d4239b498a2cf339e02b" value="1" /><input type="hidden" name="context" value="splash-2013" /><input name="a0b55aa29cf9431a9461b359872014e3" type="text" value="" class="inputString form-control event-id-input"/><button style="position: absolute; left: -9999px; width: 1px; height: 1px;" onclick='javascript:serverInvoke("https://2013.splashcon.org/eventStarByAjaxConferenceEdition","eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b", [{"name":"context", "value":"splash-2013"},],"form_509860938088b48fd14544d4239b498a2cf339e02b", this.nextSibling, false,"event-star-form"); return false;'></button><a submitid="eventStarByAjaxConferenceEdition_ia0_88b48fd14544d4239b498a2cf339e02b" href="javascript:void(0)" onclick="javascript:loadImageElem=this;$(this.previousSibling).click()" id="star-event-action"></a></form></div><div id="event-modals" class="webdsl-placeholder"></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; addEventModalLoadOnClick(node); addStarredEventOnClick(node); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><footer class="footer"><div class="container"><div class="footer-box"><div class="row"><div class="col-sm-3"><h3><a href="https://2013.splashcon.org" class="navigate"><span class="glyphicon glyphicon-home"></span> SPLASH 2013</a></h3><div><a href="https://2013.splashcon.org/contact" class="navigate"><span class="glyphicon glyphicon-envelope"></span> contact form</a></div><hr/>using <a href="https://conf.researchr.org" class="navigate">conf.researchr.org</a> (<a href="http://yellowgrass.org/roadmap/conf.researchr.org" class="navigate">v1.67.1</a>)<br/><small><a href="https://2013.splashcon.org/support" target="_blank" class="navigate"><span class="glyphicon glyphicon-question-sign"></span> Support page</a></small><br/><small></small></div><div class="col-sm-5"><div class="row"><div class="col-sm-6"><h4>Tracks</h4><a href="https://2013.splashcon.org/track/splash-2013-ACM-SRC" class="navigate">ACM SRC</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Demonstrations" class="navigate">Demonstrations</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Doctoral-Symposium" class="navigate">Doctoral Symposium</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Keynotes" class="navigate">Keynotes</a><br/><a href="https://2013.splashcon.org/track/oopsla-2013-papers" class="navigate">OOPSLA</a><br/><a href="https://2013.splashcon.org/track/splash-2013-OOPSLA-Artifacts" class="navigate">OOPSLA Artifacts</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Panels" class="navigate">Panels</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Posters" class="navigate">Posters</a><br/><a href="https://2013.splashcon.org/track/splash-2013-SPLASH-E" class="navigate">SPLASH-E</a><br/><a href="https://2013.splashcon.org/track/splash-2013-SPLASH-I" class="navigate">SPLASH-I</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Student-Volunteers" class="navigate">Student Volunteers</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Tutorials" class="navigate">Tutorials</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Wavefront" class="navigate">Wavefront</a><br/><a href="https://2013.splashcon.org/track/splash-2013-Wavefront-Experience" class="navigate">Wavefront Experience</a></div><div class="col-sm-6"><h4>Co-hosted Conferences</h4><a href="https://2013.splashcon.org/track/dls-2013-papers" class="navigate">DLS 2013</a><br/><a href="https://2013.splashcon.org/track/gpce-2013-papers" class="navigate">GPCE 2013</a><br/><a href="https://2013.splashcon.org/track/onward-2013-papers" class="navigate">Onward! 2013</a><br/><a href="https://2013.splashcon.org/track/sle-2013-papers" class="navigate">SLE 2013</a></div></div></div><div class="col-sm-2"><h4>Attending</h4><a href="https://2013.splashcon.org/venue/splash-2013-venue" class="navigate">Hotel: Hyatt Regency</a><br><a href="https://2013.splashcon.org/attending/awards" class="navigate">Awards</a><br><a href="https://2013.splashcon.org/attending/splash%2713-general-chairs%27-welcome" class="navigate">General Chairs' Welcome</a><br><a href="https://2013.splashcon.org/attending/oopsla%E2%80%9913-chair%E2%80%99s-welcome" class="navigate">OOPSLA PC Chair’s Welcome</a></div><div class="col-sm-2"><a href="https://2013.splashcon.org/signup" class="navigate">Sign Up</a></div></div></div></div></footer></div><script type="text/javascript">(function(){ var post_process_function = function(n){ var node=(n&&n.nodeType === 1)?n:document; var defaultplacement = $(document).scrollLeft() > 100 ? 'auto left' : 'auto top'; $(node).find('[title]').tooltip({placement: function(tt, elem){ var attval = elem.getAttribute('data-placement'); return attval ? attval : defaultplacement; }, container: false, sanitize: false}); $('.tooltip.fade.in, .ui-tooltip-content').remove(); }; var original_post_process_func = ajax_post_process; ajax_post_process = function(){ original_post_process_func.apply(this,arguments); post_process_function.apply(this,arguments); }; $(document).ready( post_process_function ); })(); </script><script type="text/javascript">jQuery(document).ready(function($) { $(".clickable-row").click(function() { var href = $(this).attr("href"); if( window.location.href.indexOf( href ) < 0 ){ if ($(this).hasClass('new-window') ){ window.open( href ); } else { window.document.location = href; } } }); }); </script></body></html>