The tutorial program enhances the technical program by providing a day of half-day tutorials offered in parallel tracks.
In 2013, tutorials will be held on Sunday June 16, 2013 (the day before the main conference). We expect half-day tutorials (3 hours plus a break).
The aim of this tutorial is to equip attendees with the knowledge and tools to develop high-performance DSLs and code generators. Lightweight Modular Staging (LMS) is a pragmatic approach to runtime code generation in Scala, and Delite is a compiler framework for embedded DSLs that simplifies the process of implementing DSLs for parallel computation and heterogeneous targets. This tutorial provides an overview of the technology stack, demonstrates use-cases where it has been successfully applied and guides the attendees step-by-step through creation of simple generators and DSLs.
We are experiencing a technology shift: Powerful and easy-to-use mobile devices like smartphones and tablets are becoming more prevalent than traditional PCs and laptops. TouchDevelop is a novel programming environment and language that makes it possible to write applications directly on mobile devices, taking full advantage of touchscreens, and without the need for a separate PC.
TouchDevelop is freely available as a web app on PC, Mac, iOS, Android, and as a native app on Windows Phone. Since the first release in April 2011, TouchDevelop for Windows Phone has been downloaded more than 260,000 times, and over 70,000 registered users have published 20,000 scripts. All artefacts created by TouchDevelop users are publicly available for research purposes via REST-based APIs, enabling external researchers to analyze the massive number of mobile applications developed with TouchDevelop. TouchDevelop can be used in the classroom to teach programming concepts, and TouchDevelop is also ideal for classes on Mobile Computing, as it cuts the time required to write apps.
In this tutorial, participants will learn about developing software directly on their mobile devices. TouchDevelop comes with typed, structured programming language that built around the idea of only using a touchscreen as the input device to author code. Sensors such as accelerometer and GPS are available as a first-class citizens in the programming language. The programming model is based on the mostly-connected nature of mobile devices, with seamless transitions between online and offline modes.
Modern networks provide a wide variety of services including routing, load-balancing, traffic monitoring, authentication, and access control. These services are logically distinct, but they must be implemented on top of low-level networking hardware, which offers no support for modular programming. Network programs are thus written in a monolithic style, which complicates programs, makes reasoning difficult, and frequently leads to failures.
In recent years, several research groups have applied ideas from programming languages and formal methods to help make network programs safer and easier to write. The catalyst has been the emergence of software defined networking (SDN) and OpenFlow as a simple and open platform for developing network applications.
This tutorial will provide an introduction to languages and abstractions for programming networks, focusing both on the low-level OpenFlow protocol and the high-level Frenetic language. Participants will spend most of the tutorial engaged in programming exercises. We will assume proficiency with basic functional programming in OCaml and some familiarity with undergraduate-level networking concepts. The tutorial will cover all other background material.