This website is about the 2012 edition of the school. Visit this year's edition of LASER.
Access lecture slides Party Dinner pictures Speaker pictures School pictures
Hotel del Golfo

9th LASER Summer School on Software Engineering

Innovative Languages for
Software Engineering

September 2-8, 2012 - Elba Island, Italy

Read the proceedings of previous LASER schools
LASER proceedings 2013/2014 LASER proceedings 2011 LASER proceedings 2008-2010 LASER proceedings 2007/2008

Andrei Alexandrescu: C++ and D
Roberto Ierusalimschy: Lua
Ivar Jacobson: UML and Essence
Erik Meijer: C# and LINQ
Bertrand Meyer: Eiffel
Martin Odersky: Scala
Simon Peyton-Jones: Haskell
Guido van Rossum: Python


Adventures with types in Haskell

Speaker: Simon Peyton-Jones, Microsoft Research


Static typing is the world’s most widely used formal method, by several orders of magnitude. Given the phenomenal success of static typing, it makes sense to ask how far you can push it, while still preserving the properties that make types so widely used.

Haskell is world’s most exciting adventure playground for experimenting with type systems. In these lectures I’ll explore the ways in which we’ve been pushing out the boundaries: higher rank types, GADTs, type and data families, kind polymorphism, deferred type errors, contracts, and more. I’ll also discuss two aspects of the implementation: first GHC’s intermediate language, FC, which is the central component and sanity check for all this work; and second the constraint-based inference algorithm.

Short biography:
see Speakers page

Eiffel: a study in language design and evolution

Speaker: Bertrand Meyer, ETH Zurich and Eiffel Software


Eiffel, which includes not just a language but the associated methods and tools, has been both stable and constantly evolving since its inception. The stable part includes the set of concepts that presided over its design, resulting from an analysis of what it takes to produce high-quality software for large systems that evolve over many years, as well as a number of strong language design principles that the lectures will review. The evolving part has been a constant refinement of the original ideas, as well as the introduction of new ideas adapted to fit the overall framework and keep its consistency.

The lectures will present some of the challenges of both the language’s design and its evolution, and will illustrate through numerous examples Eiffel’s original solutions to problems of quality software engineering.

Short biography:
see Speakers page

Language design patterns in Python

Speaker: Guido van Rossum, Google


Python is one of the most successful dynamic programming languages. It is used to build large real-world systems like YouTube, the Dropbox client and service, the servers for Mozilla Firefox Sync, and the Apple Calendar server. It is used for scientific data processing using packages like NumPy, SciPy and Sage, as an open-source alternative to MATLAB. Python is also embedded in software systems such as Blender and several video games.

We will review several aspects of its design and evolution in detail. We will find that it is hard to draw a clear line between core language features, the standard library, the larger software ecosystem around Python (including competing language implementations), and its community of users, contributors and developers. An interesting aspect is that Python's design philosophy (the "zen of Python") remained the same while the language changed to support the needs of new generations of users.

Short biography:
see Speakers page

Systems Programming and Beyond using C++ and D

Speaker: Andrei Alexandrescu, Facebook


Maybe you're coming from a different language in search for better scalability, or just a theoryhead ready for a descend into the trenches of systems programming. Whatever it is, this is where the rubber hits the road. You want to write systems-level software, and you're willing to pay the price for it.

The price, as it were, starts with a few hours of your time (and ends at retirement time). This course covers the most interesting aspects of the two languages, with an eye for both people who want to either get into them, or just master them better.

The classes are organized in a crescendo manner and build on one another, as D at the same time owes much to C++ and makes radical departures from it. As such, we'll delve into a fair amount of close-to-the-machine topics, but will also move far beyond that.

Short biography:
see Speakers page

Real Scripting with Lua

Speaker: Roberto Ierusalimschy, PUC Rio


Scripting emphasizes the construction of software using a scripting language to glue together basic blocks written in a system language like C/C++. That mix allows the development of programs that join the efficiency of the system language with the flexibility of the scripting language.

Lua is a language designed specifically to be used as a scripting language. It is the leading scripting language in games. It is also widely used in embedded systems such as set-top boxes, routers, telecom equipment, and mobiles.

In these lectures we will cover the most distinguishing features of Lua, such as its use of tables as a unifying data structure, prototype-based object-oriented programming, coroutines, and its API with C.

Short biography:
see Speakers page

From UML to Semat

Speaker: Ivar Jacobson, Ivar Jacobson International


UML yesterday, today and tomorrow

The Unified Modeling Language, an international standard for modeling software intensive systems created in 1997. The original creators were acknowledged to be Grady Booch, Ivar Jacobson and James Rumbaugh, but in reality UML had a much longer history, having drawn from a number of then existing modeling languages and methods. UML has been widely successful, primarily for larger systems such as Enterprise System, Product Lines, SOA, and now the Cloud. UML has also been declared a failure and has received the ridicule of some famous scientists including our friend Dave Parnas, who in jest labeled it the "Undefined Modeling Language". Early leaders of the agile community also dismissed UML, considering it too "heavyweight". As a result, after great initial fanfare, interest in UML faded. Today, the outlook on UML is more balanced.

In this talk I will focus on the rationale for UML, look at where it is today and offer my views on where I think it will be tomorrow. You will all leave the seminar knowing a lot more about why you should care about UML in the future.

Re-founding Software Engineering – SEMAT at the Age of Three

Software engineering is gravely hampered by immature practices. Specific problems include: The prevalence of fads more typical of the fashion industry than an engineering discipline; a huge number of methods and method variants, with differences little understood and artificially magnified; the lack of credible experimental evaluation and validation; and the split between industry practice and academic research.

At the root of the problems we lack a sound, widely accepted theoretical basis. A prime example of such a basis is Maxwell’s equations in electrical engineering. It is difficult to fathom what electrical engineering would be today without those four concise equations. They are a great example to the statement “There is nothing so practical as a good theory”. In software engineering we have nothing similar, and there is widespread doubt whether it is needed. This talk will argue for the need of a basic theory in software engineering, a theory identifying its pure essence, its common ground or its kernel.

The Semat (Software Engineering Methods and Theory) community addresses this huge challenge. It supports a process to refound software engineering based on a kernel of widely-agreed elements, extensible for specific uses, addressing both technology and people issues. This kernel represents the essence of software engineering. This talk promises to make you see the light in the tunnel.

Short biography:
see Speakers page

Programming for the other 99%

Speaker: Mehdi Jazayeri, University of Lugano


The vast majority of Internet users are not programmers. That doesn't mean that they do not benefit from learning some programming skills. Today, these users use applications on stand-alone devices or, increasingly, on the Internet. Computing devices have become pervasive in society, most governmental and commercial services are provided through the Internet, and most disciplines, from the liberal arts to the sciences, are becoming dependent on computing for their continued progress. This situation has given rise to the "computational thinking" movement: the belief that everyone must become computer literate. A true computer literate must be able to do more than surf the Internet. They must learn "computational thinking." We interpret this to mean that they must be able to "program." Of course, we do not expect every user to become a professional programmer. Yet, they must be able to understand and apply basic skills that enable them to make intelligent use of computing technology. We believe that the advances of Internet technology have made it possible to educate Web users to learn "end-user" programming. We are exploring the use of visual programming to teach end-user programming to middle- and high-school students. I will present the AgentWeb game design environment which provides an end-user (visual) programming environment, contrast it with traditional programming environments, and present an analysis of various aspects of the system, including its engineering, usability, and performance.

Chair of Software Engineering - ETH Zurich Last update: 27.08.2012