<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://mw.hh.se/wg211/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin</id>
	<title>WG 2.11 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://mw.hh.se/wg211/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Admin"/>
	<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=Special:Contributions/Admin"/>
	<updated>2026-04-05T21:01:33Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=572</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=572"/>
		<updated>2012-01-27T06:25:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:WG211 | WG211]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=571</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=571"/>
		<updated>2012-01-26T14:50:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:WG211 | WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;htmlet nocache=&amp;quot;yes&amp;quot;&amp;gt;peotest&amp;lt;/htmlet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=570</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=570"/>
		<updated>2012-01-26T14:34:01Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:WG211 | WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;htmlet nocache=&amp;quot;yes&amp;quot;&amp;gt;wg211reg&amp;lt;/htmlet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=569</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=Main_Page&amp;diff=569"/>
		<updated>2012-01-26T14:31:48Z</updated>

		<summary type="html">&lt;p&gt;Admin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[:Category:WG211 | WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;htmlet nocache=&amp;quot;yes&amp;quot;&amp;gt;wg211reg.html&amp;lt;/htmlet&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/WG211-Aims-2011-02-25&amp;diff=373</id>
		<title>WG211/WG211-Aims-2011-02-25</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/WG211-Aims-2011-02-25&amp;diff=373"/>
		<updated>2011-12-12T10:06:31Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt; &#039;&#039;&#039;IFIP WG 2.11 on Program Generation&#039;&#039;&#039; &amp;lt;/p&amp;gt; &amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt; &#039;&#039;&#039;Mission Statement&#039;&#039;&#039; &amp;lt;/p&amp;gt; &amp;lt;p align=&amp;quot;center&amp;quot;&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aim&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Raising the level of abstraction in software specification has been a fundamental goal of the computing community for several decades. In particular, the pervasive need for software in modern engineering creates both the need for and the opportunity of a style of programming at a level of abstraction farther from the execution platform and nearer to the problem domain. This approach has been termed _program generation_ or _generative programming_, since the target programs generated are at the level of abstraction at which, traditionally, programming has been done by hand.&lt;br /&gt;
&lt;br /&gt;
The goal of IFIP WG 2.11 is to investigate a wide range of techniques to make this approach to programming practical for a wide range of software development tasks. This includes technology for:&lt;br /&gt;
* enabling application programmers to write programs more conveniently and without the need of expert knowledge in computer science&lt;br /&gt;
* enabling domain experts to design a domain-specific programming language and to generate a language processor (a compiler or interpreter) and an integrated development environment (IDE) for it&lt;br /&gt;
* specifying a generic program, which can be specialized conveniently to diverse programs in a fixed application domain, and providing automatic tools for generating the specialized programs and navigating between them&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scope&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The working group covers the following research areas (and maybe others):&lt;br /&gt;
* programming language design, semantics and implementation&lt;br /&gt;
* program analysis and verification&lt;br /&gt;
* program synthesis&lt;br /&gt;
* type systems and type theory&lt;br /&gt;
* programming models and programming methodology&lt;br /&gt;
* software engineering&lt;br /&gt;
* software product lines&lt;br /&gt;
* programming paradigms (object-oriented, aspect-oriented, feature-oriented, functional, logic)&lt;br /&gt;
* software-oriented architectures, model-oriented design&lt;br /&gt;
* program optimization&lt;br /&gt;
* program parallelization&lt;br /&gt;
* program libraries&lt;br /&gt;
* code generation and optimization&lt;br /&gt;
* program analysis and composition tools and IDEs&lt;br /&gt;
&lt;br /&gt;
Targeted execution platforms may be of any kind and include, in particular:&lt;br /&gt;
* software architectures and virtual machines&lt;br /&gt;
* the Cloud&lt;br /&gt;
* multicores, manycores and GPGPUs&lt;br /&gt;
* mobile devices and embedded systems&lt;br /&gt;
* FPGAs and other malleable hardware&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Objectives&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The objectives of the working group are:&lt;br /&gt;
* to foster collaboration and interaction between researchers in the areas listed above and to make them aware of the common goal of generative programming&lt;br /&gt;
* to demonstrate concrete benefits in specific application domains&lt;br /&gt;
* to develop techniques for assessing productivity, reliability and usability&lt;br /&gt;
* to determine the potential of a common platform and infrastructure for program generation and transformation&lt;br /&gt;
* to examine and further the adoption of program generation and transformation features in mainstream programming languages and environments(&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(Posted by Ulrik P Schultz, WG 2.11 Vice Chair - 25 Feb 2011)&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/TeachingProgramGeneration&amp;diff=347</id>
		<title>WG211/TeachingProgramGeneration</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/TeachingProgramGeneration&amp;diff=347"/>
		<updated>2011-12-12T10:06:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
----&lt;br /&gt;
+ Teaching Program Generation=&lt;br /&gt;
&lt;br /&gt;
Getting program generation accepted and used starts with teaching our students.&lt;br /&gt;
&lt;br /&gt;
* How should we incorporate program generation in the computer science curriculum?&lt;br /&gt;
&lt;br /&gt;
This session gives room for expressing views and reflecting on experience.&lt;br /&gt;
&lt;br /&gt;
Issues include:&lt;br /&gt;
&lt;br /&gt;
* experience with teaching courses on/involving program generation&lt;br /&gt;
* place in the curriculum (wrt other material)&lt;br /&gt;
* theoretical and conceptual framework&lt;br /&gt;
* tools&lt;br /&gt;
* course organization&lt;br /&gt;
* topics and their relative priority (what is important)&lt;br /&gt;
* suitable example domains&lt;br /&gt;
* books&lt;br /&gt;
* meta languages&lt;br /&gt;
** typing&lt;br /&gt;
** other guarantees&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
-++ Existing Courses==&lt;br /&gt;
&lt;br /&gt;
* Martin Erwig&lt;br /&gt;
* Program Synthesis - Berkeley&lt;br /&gt;
* Julia Lawall - DSLs&lt;br /&gt;
* Walid Taha - MSP&lt;br /&gt;
&lt;br /&gt;
* Crista Lopes - Irvine&lt;br /&gt;
** Programming Languages 2 (PL2)&lt;br /&gt;
** http://www.ics.uci.edu/~lopes/teaching/inf102W06/index.html&lt;br /&gt;
** Reflection&lt;br /&gt;
** Ruby&lt;br /&gt;
&lt;br /&gt;
* Peter Sestoft&lt;br /&gt;
** run-time code generation&lt;br /&gt;
** ML as meta-language (difficult to learn)&lt;br /&gt;
** future: scheme as meta-language&lt;br /&gt;
&lt;br /&gt;
* Paul Kelly&lt;br /&gt;
** Compiler Construction&lt;br /&gt;
** Advanced Computer Architecture&lt;br /&gt;
&lt;br /&gt;
* Eelco Visser&lt;br /&gt;
** Program transformation&lt;br /&gt;
*** http://swerl.tudelft.nl/bin/view/Pt&lt;br /&gt;
** Software generation and configuration&lt;br /&gt;
*** http://www.cs.uu.nl/wiki/Sgc/WebHome&lt;br /&gt;
&lt;br /&gt;
* Tim Sheard&lt;br /&gt;
** staged programming&lt;br /&gt;
** http://web.cecs.pdx.edu/~sheard/course/stagedcomp/index.html&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
-++ Domains==&lt;br /&gt;
&lt;br /&gt;
* Compilers&lt;br /&gt;
* J2EE&lt;br /&gt;
* Linear Transforms (FFTW, Spiral)&lt;br /&gt;
* Web programming&lt;br /&gt;
* Language processing&lt;br /&gt;
** regular expressions&lt;br /&gt;
** grammars&lt;br /&gt;
* Databases&lt;br /&gt;
** SQL&lt;br /&gt;
** database binding&lt;br /&gt;
* Functional reactive programming&lt;br /&gt;
** Pan (Conal Elliot)&lt;br /&gt;
** Haskore&lt;br /&gt;
* User interface generators&lt;br /&gt;
* Hardware synthesis&lt;br /&gt;
** Lava&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
--++ Issues==&lt;br /&gt;
&lt;br /&gt;
* Binding&lt;br /&gt;
* Variable capture&lt;br /&gt;
* Hygienic macros&lt;br /&gt;
* Concrete syntax&lt;br /&gt;
* Staged computation&lt;br /&gt;
* Partial evaluation&lt;br /&gt;
* Binding time&lt;br /&gt;
** binding time analysis&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
++ Techniques==&lt;br /&gt;
&lt;br /&gt;
* Reflection&lt;br /&gt;
* Introspection&lt;br /&gt;
* Parsing&lt;br /&gt;
* Template languages&lt;br /&gt;
** String Template&lt;br /&gt;
* Wizards&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
++ Technologies==&lt;br /&gt;
&lt;br /&gt;
* Dynamic (scripting) languages&lt;br /&gt;
** Ruby&lt;br /&gt;
** Scheme&lt;br /&gt;
* Staged languages&lt;br /&gt;
** Template Haskell&lt;br /&gt;
&lt;br /&gt;
* Google web toolkit&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--+ Course Outlines=&lt;br /&gt;
&lt;br /&gt;
Here are some actual, proposed, or imagined outlines for courses involving elements of program generation.&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
--++ Eelco Visser - Software Engineering 2==&lt;br /&gt;
&lt;br /&gt;
Goal: learn students how to abstract programming patterns into domain-specific languages.&lt;br /&gt;
&lt;br /&gt;
* Part I : Using DSLs&lt;br /&gt;
** Discuss examples of DSLs in real life&lt;br /&gt;
*** regular expressions&lt;br /&gt;
*** context-free grammars&lt;br /&gt;
*** rewrite rules&lt;br /&gt;
*** web DSLs&lt;br /&gt;
*** database DSLs (SQL)&lt;br /&gt;
*** workflow&lt;br /&gt;
** Considerations&lt;br /&gt;
*** explanation of domains should not take over the course&lt;br /&gt;
** Lab&lt;br /&gt;
*** Experiment with some of these in practical exercises&lt;br /&gt;
&lt;br /&gt;
* Part II : Developing DSLs (DSL Engineering)&lt;br /&gt;
** Syntax and semantics&lt;br /&gt;
*** an intro into language definition&lt;br /&gt;
** DSL design&lt;br /&gt;
*** domain engineering&lt;br /&gt;
*** what goes into the DSL?&lt;br /&gt;
*** language design issues&lt;br /&gt;
** Implementation techniques&lt;br /&gt;
*** term rewriting&lt;br /&gt;
*** graph rewriting&lt;br /&gt;
*** model transformation&lt;br /&gt;
*** attribute grammars&lt;br /&gt;
*** XML, XSLT&lt;br /&gt;
*** syntax embedding&lt;br /&gt;
*** reflection (Ruby, Python)&lt;br /&gt;
*** DSL definitions as modules&lt;br /&gt;
** Lab&lt;br /&gt;
*** Implement a (couple of) (simple) DSL(s)&lt;br /&gt;
&lt;br /&gt;
* Part III : Limitations of DSLs&lt;br /&gt;
** flexibility / adaptability of generated code&lt;br /&gt;
** hygienic code generation / variable capture&lt;br /&gt;
** modularity / separate compilation&lt;br /&gt;
** retargetability of generators&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
--++ Sam Kamin - Program Generation==&lt;br /&gt;
&lt;br /&gt;
Proposed (and extremely tentative) course on program generation,&lt;br /&gt;
upper-level undergrad level&lt;br /&gt;
&lt;br /&gt;
* I. Uses of program generation and transformation&lt;br /&gt;
** A. Textual abstraction as a kind of program abstraction&lt;br /&gt;
*** 1. Programs as collections of fragments&lt;br /&gt;
*** 2. Product-line architectures; components&lt;br /&gt;
*** 3. Synthesis of programs from specifications&lt;br /&gt;
** B. The cost of abstraction&lt;br /&gt;
*** 1. The cost of generality in libraries&lt;br /&gt;
** C. Overcoming the cost of abstraction&lt;br /&gt;
*** 1. Gaining efficiency through program generation/transformation&lt;br /&gt;
*** 2. The importance of domain knowledge&lt;br /&gt;
** D. Domain-specific languages&lt;br /&gt;
&lt;br /&gt;
* II. Example domains (need to be accompanied by concrete examples)&lt;br /&gt;
** A. Generating ADT code (catamorphism-type stuff)&lt;br /&gt;
** B. Building database programs (generating classes for db schemas)&lt;br /&gt;
** C. Scientific computing - FFT, matrix operations, simulation&lt;br /&gt;
** D. Language-based examples - lexical analysis, parsing, interpreters, compilers&lt;br /&gt;
** E. Building DSL&#039;s&lt;br /&gt;
&lt;br /&gt;
* III. Tools (need to be accompanied by programming exercises)&lt;br /&gt;
** A. Static, &amp;quot;ad hoc&amp;quot; program generation (e.g. using Ruby)&lt;br /&gt;
*** i. Static reflection&lt;br /&gt;
** B. Dynamic program generation (e.g. using Jumbo)&lt;br /&gt;
** C. Program transformation tools (e.g. Stratego)&lt;br /&gt;
** D. Safe program generators (e.g. MetaOCaml)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
++ Crista Lopes - Programming Language 2==&lt;br /&gt;
&lt;br /&gt;
I&#039;m redesigning the course to have less stuff, but more of the things that stay in. It will be something like this:&lt;br /&gt;
&lt;br /&gt;
* Meta-circular interpreter (in Scheme)&lt;br /&gt;
* Declarative programming&lt;br /&gt;
** SQL&lt;br /&gt;
** logic programming (in Scheme)&lt;br /&gt;
* AOP (maybe?) (in Scheme)&lt;br /&gt;
* OOP inside (Ruby)&lt;br /&gt;
* Reflection (Ruby) -- this is the part that is more related to program generation&lt;br /&gt;
* Markup languages&lt;br /&gt;
&lt;br /&gt;
This is a programming languages course, hence the focus on PLs.&lt;br /&gt;
For a software engineering, enabler tools kind of course, I would do something different. I would have to think a lot more...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
++ Paul Kelly==&lt;br /&gt;
&lt;br /&gt;
Proposal: Course in&lt;br /&gt;
&lt;br /&gt;
* Software Synthesis and Metaprogramming&lt;br /&gt;
* Students: Master&#039;s level, with some industrial experience&lt;br /&gt;
* Objectives: Students should gain an understanding of key principles in the application and design of software that generates and manipulates programs.&lt;br /&gt;
&lt;br /&gt;
This outline presents a large picture; the challenge is to identify from these topics the taxonomy, central theoretical ideas, and software engineering principles.&lt;br /&gt;
&lt;br /&gt;
* Introduction:&lt;br /&gt;
** Motivation via a small variety of compelling examples.&lt;br /&gt;
** Some large &amp;quot;industrial scale&amp;quot;, others open-source and available for hands-on experience and understanding.&lt;br /&gt;
* Analysis:&lt;br /&gt;
** Reflection (eg in Java, Ruby),&lt;br /&gt;
** Code query languages (Codequest etc).&lt;br /&gt;
* Aspects and aspect weavers:&lt;br /&gt;
** Pointcuts (as reflection, as queries),&lt;br /&gt;
** advice (as generation),&lt;br /&gt;
** safety; safety holes in AspectJ.&lt;br /&gt;
** Aspects as features.&lt;br /&gt;
** Aspect composition.&lt;br /&gt;
* Generators:&lt;br /&gt;
** Macros,&lt;br /&gt;
** name capture.&lt;br /&gt;
** Static, dynamic: quoting and binding times&lt;br /&gt;
** Runtime generation.&lt;br /&gt;
** Type-safe program generation.&lt;br /&gt;
** Partial evaluation; on-line versus offline.&lt;br /&gt;
** Binding time analysis, binding-time improvement.&lt;br /&gt;
** Jones optimality?&lt;br /&gt;
* Domain-specific generators, domain-specific languages:&lt;br /&gt;
** Language embedding;&lt;br /&gt;
** syntactic issues, types and binding issues.&lt;br /&gt;
** Single source, multiple interpretation.&lt;br /&gt;
* Features, product lines, architectures and components:&lt;br /&gt;
** Feature mapping and refactoring.&lt;br /&gt;
** Feature interaction.&lt;br /&gt;
** Architecture description languages.&lt;br /&gt;
** Adaptive component architectures, reflective middleware.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
++ Peter Sestoft==&lt;br /&gt;
&lt;br /&gt;
Outline of a course fragment on program generation&lt;br /&gt;
Peter Sestoft 2006-10-27&lt;br /&gt;
&lt;br /&gt;
Course prerequisites: Prior to the course, students are assumed to&lt;br /&gt;
know Java (or C#) and reflection.&lt;br /&gt;
&lt;br /&gt;
Some prerequisites filled by earlier modules of the course itself:&lt;br /&gt;
&lt;br /&gt;
* Abstract machines, including the JVM and/or .NET bytecode&lt;br /&gt;
* Introductory Scheme&lt;br /&gt;
&lt;br /&gt;
Plan&lt;br /&gt;
&lt;br /&gt;
* Explain that program generation is used a lot (J2EE interfaces, Java Server Pages, PHP, object-relational mappers, ...).&lt;br /&gt;
* Explain the main purposes:&lt;br /&gt;
** Avoid writing boilerplate code, and obtain performance (space, time) by generating specialized code.&lt;br /&gt;
* Using small two-parameter examples (see below),&lt;br /&gt;
** introduce the concept of binding time (static and dynamic),&lt;br /&gt;
** where static computations can be performed early, in a generator,&lt;br /&gt;
** and dynamic operations are to be performed late, in the generated code.&lt;br /&gt;
** Mention the concept of a partial evaluator and generating extension,&lt;br /&gt;
** and that the generating extension of an interpreter is a compiler.&lt;br /&gt;
** Etc.&lt;br /&gt;
* Show textual source code generation using print-statements, to demystify the concept.&lt;br /&gt;
** Explain that this is impractical.&lt;br /&gt;
* Show code generation in Scheme using backquote and comma.&lt;br /&gt;
** Point out the challenges of always generating syntactically well-formed code and using only variables that are in scope.&lt;br /&gt;
** (Correct static typing of the generated code does not enter the picture in Scheme, only when generating bytecode below).&lt;br /&gt;
* Show runtime code generation in Scheme using the above and eval.&lt;br /&gt;
* Show runtime code generation in Java (or C#) using BCEL or .NET&#039;s System.Reflection.Emit.&lt;br /&gt;
** Point out that this is exactly analogous to runtime code generation in Scheme,&lt;br /&gt;
** only it looks far more complicated and is more difficult to debug.&lt;br /&gt;
* Point out that there is a general idea in the above: Staged computation or two-level languages, and that there are many research prototypes of such languages: MetaOCaml, Jumbo, DynJava, Metaphor, ...&lt;br /&gt;
&lt;br /&gt;
Some simple motivating examples&lt;br /&gt;
&lt;br /&gt;
Polynomial evaluation c_0 + c_1 x + c_2 x^2 + ...&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  double PolyEval(double[] cs, double x)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The power function x^n&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  double Power(int n, double x)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generating terms of the Taylor series for exp(x)&lt;br /&gt;
&lt;br /&gt;
AES (Rijndael) encryption algorithm&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  byte[] Encrypt(Key key, byte[] block)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sparse matrix multiplication&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
==&lt;br /&gt;
----&lt;br /&gt;
++ Martin Bravenboer==&lt;br /&gt;
&lt;br /&gt;
Program Generation&lt;br /&gt;
&lt;br /&gt;
I like the idea of modules provided by different people in the&lt;br /&gt;
community. It probably won&#039;t happen, but it would be a good thing.&lt;br /&gt;
&lt;br /&gt;
* Introducing: motivating examples&lt;br /&gt;
** Lack of abstraction (Enterprise, boilerplate stuff)&lt;br /&gt;
** Lack of performance (creepy numerical stuff etc)&lt;br /&gt;
** Cross-cutting concerns&lt;br /&gt;
** Variability (Conditional code)&lt;br /&gt;
* Design issues&lt;br /&gt;
** Patterns, when and how to develop DSLs&lt;br /&gt;
** Domain knowledge&lt;br /&gt;
* Concepts and principles&lt;br /&gt;
** Static and dynamic reflection&lt;br /&gt;
** Code as input of program generation&lt;br /&gt;
** Attribute-oriented techniques&lt;br /&gt;
** Probably illustrated by Ruby&lt;br /&gt;
** Mirrors&lt;br /&gt;
* Programming language concepts:&lt;br /&gt;
** Binding time&lt;br /&gt;
** Hygiene, scope, shadowing, etc&lt;br /&gt;
** Partial evaluation and multi-staging techniques&lt;br /&gt;
* Syntax for abstractions: what&#039;s the input of a code generator?&lt;br /&gt;
** Domain-specific languages&lt;br /&gt;
** Models, meta-models&lt;br /&gt;
** Text, grammars&lt;br /&gt;
** Code: reflection&lt;br /&gt;
* Solutions&lt;br /&gt;
** Unfortunately, there are far too many solutions, Ideally, the various angles of attack should be illustrated in a single language/environment to make comparision and comprehension easier. However, that will be difficult to realize.&lt;br /&gt;
** Macros, templates, C++, Scheme etc.&lt;br /&gt;
** Software transformation systems: rewriting rules&lt;br /&gt;
** Extensible compilers, Silver, Forwarding&lt;br /&gt;
** Template systems&lt;br /&gt;
** Embedded DSLs: Converge, Haskell, MetaBorg, etc&lt;br /&gt;
** Writing interpreters, compilers&lt;br /&gt;
** Run-time code generators, such as Jumbo, .NET compiler API, Java stuff etc.&lt;br /&gt;
** From Ruby to Jumbo to type-safe code generators&lt;br /&gt;
** Reflective systems, such as Ruby, Smalltalk, Reflex&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-&lt;br /&gt;
&lt;br /&gt;
=&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
-+ Notes from the Meeting=&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Crista Lopes&lt;br /&gt;
&lt;br /&gt;
* Teaches course on Reflection&lt;br /&gt;
** Scheme for interpreters&lt;br /&gt;
** Ruby is highly recommended&lt;br /&gt;
*** very cute&lt;br /&gt;
*** meta-object architecture&lt;br /&gt;
*** no environment&lt;br /&gt;
*** untyped programming language&lt;br /&gt;
* based on Ruby for reflection&lt;br /&gt;
* assignment based on Ruby on Rails&lt;br /&gt;
* Reflection versus AST&lt;br /&gt;
** Easier to teach then reflection&lt;br /&gt;
** Dynamic reflection (beyond static reflection)&lt;br /&gt;
** Mirrors paper based on OOPSLA based on Smalltalk (Bracha)&lt;br /&gt;
* Using search engines for finding code&lt;br /&gt;
** Lopes: teach how to use other components/tools/libraries rather than learning all the details of how to do it yourself&lt;br /&gt;
* Fit together&lt;br /&gt;
* Paul: Let them play&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Peter Sestoft&lt;br /&gt;
&lt;br /&gt;
* Teaches course on Programming Language Concepts&lt;br /&gt;
** Standard ML&lt;br /&gt;
** Scheme&lt;br /&gt;
*** easier for students&lt;br /&gt;
*** more versatile&lt;br /&gt;
* Interpreters&lt;br /&gt;
* Compilers&lt;br /&gt;
* Code generation&lt;br /&gt;
** printf&lt;br /&gt;
** Scheme&lt;br /&gt;
* Run-time code generation&lt;br /&gt;
** .NET&lt;br /&gt;
** JVM&lt;br /&gt;
* Principles:&lt;br /&gt;
** Binding time&lt;br /&gt;
* show in generator example&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Paul Kelly&lt;br /&gt;
&lt;br /&gt;
* Teaches course on Compilers&lt;br /&gt;
** Compulsary with some motivation issues&lt;br /&gt;
** Based on Haskell&lt;br /&gt;
** Simple imperative language&lt;br /&gt;
** Optimization, back-end&lt;br /&gt;
* Teaches course on Advanced Computer Architecture&lt;br /&gt;
** Numerical algorithms&lt;br /&gt;
** Optimization based on computer architure&lt;br /&gt;
* Opinions:&lt;br /&gt;
** Program generation not necessarily difficult&lt;br /&gt;
** It&#039;s a means of learning students about programming languages&lt;br /&gt;
* Principles:&lt;br /&gt;
** Variable capture, hygienic mcacros&lt;br /&gt;
** How are object-oriented languages implemented?&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Sam Kamin&lt;br /&gt;
&lt;br /&gt;
* Teaches course on Programming Languages: Concepts and Implementation&lt;br /&gt;
** ML as meta-language&lt;br /&gt;
** Programming paradigms&lt;br /&gt;
* Ideas for a course&lt;br /&gt;
** General concepts and motivation&lt;br /&gt;
** Examples from different domains&lt;br /&gt;
* Tools: from Ruby, to Jumbo, to type-safe code generators&lt;br /&gt;
** Teach students about abstractions&lt;br /&gt;
** Programming patterns motivate DSLs&lt;br /&gt;
** ADTs&lt;br /&gt;
** Templates&lt;br /&gt;
** DSLs&lt;br /&gt;
* Principles:&lt;br /&gt;
** Partial evaluation&lt;br /&gt;
* Let students crash first, then: how to do it right.&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Visser&lt;br /&gt;
&lt;br /&gt;
* Teaches course on Program Transformation&lt;br /&gt;
** Stratego&lt;br /&gt;
** Study various transformations&lt;br /&gt;
** Problem: not enough time for the concepts&lt;br /&gt;
* Present examples of existing DSLs&lt;br /&gt;
** Sam: presenting polished DSLs does not illustrate the problems&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Martin Bravenboer&lt;br /&gt;
&lt;br /&gt;
* Opinions&lt;br /&gt;
** Where do we actually produce code from?&lt;br /&gt;
* Front-end:&lt;br /&gt;
** reflection&lt;br /&gt;
** modelling&lt;br /&gt;
** text, parsing, grammars&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Czarnecki&lt;br /&gt;
&lt;br /&gt;
* When to develop a DSL?&lt;br /&gt;
* Design issues is more important&lt;br /&gt;
* Doing the actual program generation is a small task&lt;br /&gt;
* Techniques and tools less important&lt;br /&gt;
* Design patterns for DSLs&lt;br /&gt;
* &amp;quot;this could use some DSL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==================================================&lt;br /&gt;
Walid&lt;br /&gt;
&lt;br /&gt;
* Suggestion&lt;br /&gt;
** Reuse modules created by experts&lt;br /&gt;
* Should we teach crazy wacky ideas?&lt;br /&gt;
** Don&#039;t know if it is a good thing or bad thing&lt;br /&gt;
** Might be good&lt;br /&gt;
* Courses on Program generation&lt;br /&gt;
** Martin Erwik (?)&lt;br /&gt;
** Program synthesis at Berkley&lt;br /&gt;
* Julia Lawall&lt;br /&gt;
** Domain-specific languages&lt;br /&gt;
* MSP course:&lt;br /&gt;
** Walid could contribute a module&lt;br /&gt;
** Don Batory&lt;br /&gt;
** Tim Sheard - staged computation&lt;br /&gt;
* Courses Aspect-Oriented Programming:&lt;br /&gt;
** Probably too many&lt;br /&gt;
** Personal statement by Lopes: AspectJ sucks, so I don&#039;t want to give a course about it ;)&lt;br /&gt;
* Principles:&lt;br /&gt;
** Kolmorov Complexity&lt;br /&gt;
** Binding time is an important concept to teach&lt;br /&gt;
&lt;br /&gt;
==============================================&lt;br /&gt;
Example domains&lt;br /&gt;
&lt;br /&gt;
* Spiral&lt;br /&gt;
*  Web programming (Ruby)&lt;br /&gt;
* Performance things like loop unrolling, matrix multiplication, sorting&lt;br /&gt;
* Enterprise, database, EJB&lt;br /&gt;
** e.g. Ruby on Rails&lt;br /&gt;
* Interpreters and parsers&lt;br /&gt;
** regular expressions?&lt;br /&gt;
* Funtional reatice programming: hascore / Pan / Fran / Lava, hardware synthesis&lt;br /&gt;
* Javascript stuff: Google Web Toolkit / JSAN&lt;br /&gt;
* ASP .NET, JSP, PHP&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/PdfVersions&amp;diff=341</id>
		<title>WG211/PdfVersions</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/PdfVersions&amp;diff=341"/>
		<updated>2011-12-12T10:06:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- Main.EmirPasalic - 15 Jun 2008&lt;br /&gt;
&lt;br /&gt;
* [[Media:CFP_DSL.pdf | CFP_DSL.pdf ]]: CFP_DSL.pdf&lt;br /&gt;
&lt;br /&gt;
* [[Media:cfp.pdf | cfp.pdf ]]: cfp.pdf&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:CFP_DSL.pdf | CFP_DSL.pdf]]&lt;br /&gt;
*[[Media:cfp.pdf | cfp.pdf]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/MustRead&amp;diff=335</id>
		<title>WG211/MustRead</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/MustRead&amp;diff=335"/>
		<updated>2011-12-12T10:06:30Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Must-read Papers=&lt;br /&gt;
&lt;br /&gt;
Dear all,&lt;br /&gt;
&lt;br /&gt;
Please enter below titles of papers (and, ideally, links to their source) of papers that you view as seminal or highly influential in the fields of program generation, domain-specific languages, and model-driven computation.&lt;br /&gt;
&lt;br /&gt;
Please:&lt;br /&gt;
&lt;br /&gt;
* Note the seperate headings for &#039;&#039;&#039;program generation&#039;&#039;&#039;, &#039;&#039;&#039;DSLs&#039;&#039;&#039;, and &#039;&#039;&#039;Model-driven computation&#039;&#039;&#039;.&lt;br /&gt;
* Before you add a paper, please check that it is not there.&lt;br /&gt;
* Use one bullet per paper that you add.&lt;br /&gt;
&lt;br /&gt;
Walid.&lt;br /&gt;
&lt;br /&gt;
==Key Papers in Program Generation==&lt;br /&gt;
&lt;br /&gt;
* Eelco Visser: Program Transformation with Stratego/XT: Rules, Strategies, Tools, and Systems in Stratego/XT 0.9. Domain-Specific Program Generation 2003: 216-238&lt;br /&gt;
* E. Kohlbecker, D. P. Friedman, M. Felleisen, and B. Duba. Hygienic macro expansion. In Proceedings of the 1986 ACM conference on LISP and functional programming, pages 151{161. ACM Press, 1986.&lt;br /&gt;
* D.R. Smith, KIDS: a semiautomatic program development system, IEEE Trans. Softw. Eng., 16(9): 1024-1043, September 1990.&lt;br /&gt;
* T.W. Reps and T. Teitelbaum, The Synthesizer Generator: A System for Constructing Language-Based Editors, Springer-Verlag, New York, 1988.&lt;br /&gt;
* D. Zook, S. S. Huang, and Y. Smaragdakis. Generating AspectJ programs with Meta-AspectJ. In Proceedings of the 2004 Generative Progamming and Component Engineering (GPCE) Conference.&lt;br /&gt;
* W. Taha and T. Sheard. Multi-stage programming with explicit annotations. In Partial Evaluation and Semantics-Based Program Manipulation, Amsterdam, The Netherlands, June 1997, pages 203{217. New York: ACM, 1997.&lt;br /&gt;
* N. D. Jones and A. J. Glenstrup. Program generation, termination, and binding-time analysis. In Generative Programming and Component Engineering (GPCE) Conference, LNCS 2487, pages 1{31. Springer, 2002.&lt;br /&gt;
* Walid Taha. A Gentle Introduction to Multi-stage Programming. In C. Lengauer et al. Domain-Specific Program Generation, LNCS 3016, pp.30-50, Springer-Verlag, 2004. Survey paper; [[http://www.springerlink.com/(fz4uci45ex0m0t2sqtxxwn45)/app/home/contribution.asp?referrer=parent&amp;amp;backto=issue,3,18;journal,906,3807;linkingpublicationresults,1:105633,1 Springer-Link]]&lt;br /&gt;
* K. Czarnecki and U. Eisenecker.  Generative Programming: Methods, Techniques and Applications.  Addison-Wesley Longman, 1999. (not a paper of course)&lt;br /&gt;
* &amp;quot;Aspect-Oriented Programming&amp;quot;.  Gregor Kiczales, John Lamping, Anurag, Mendhekar, Chris Maeda, Cristina Lopes, Jean-Marc Loingtier and John Irwin, ECOOP97. [[http://link.springer-ny.com/link/service/series/0558/bibs/1241/12410220.htm Springer Link]]&lt;br /&gt;
* K. Czarnecki, U. W. Eisenecker, R. Gl&amp;amp;uuml;ck, D. Vandevoorde, and T. Veldhuizen.  Generative programming and active libraries (extended abstract). In M. Jazayeri, D. Musser, and R. Loos, editors, Generic Programming. Proceedings, LNCS 1766, Springer-Verlag, 2000, pages 25&amp;amp;#8211;39.&lt;br /&gt;
* Todd L. Veldhuizen. Template metaprograms. C++ Report, 7(4):36&amp;amp;#8211;43, 1995.&lt;br /&gt;
* Template metaprogramming for Haskell, by Tim Sheard and Simon Peyton Jones, May 2002.  CM SIGPLAN Haskell Workshop 02 (http://www.haskell.org/th/) (is there a better reference?)&lt;br /&gt;
* Y. Futamura. Partial evaluation of computation process - an approach to a compiler-compiler. Systems, Computers, Controls, 2(5):45-50, 1971.&lt;br /&gt;
* C. Bastoul. Efficient code generation for automatic parallelization and optimization. ISPDC&#039;2 IEEE International Symposium on Parallel and Distributed Computing, October 2003, Ljubjana, Slovenia.&lt;br /&gt;
* R. Gl&amp;amp;uuml;ck, J. J&amp;amp;oslash;rgensen, An automatic program generator for multi-level specialization. In: Lisp and Symbolic Computation, 10(2): 113-158, 1997.&lt;br /&gt;
* Smith, D.R., Constructing Specification Morphisms, Journal of Symbolic Computation, Special Issue on Automatic Programming, Vol 16, No 5-6, 1993, 571-606.&lt;br /&gt;
* Douglas R. Smith, Eduardo A. Parra, and Stephen J. Westfold, Synthesis of Planning and Scheduling Software, in &#039;&#039;&#039;Advanced Planning Technology&#039;&#039;&#039;, (Ed. A. Tate), AAAI Press, Menlo Park, California, 1996, 226-234.&lt;br /&gt;
* Emic Pasalic and Nathan Linger, Meta-Programming with Typed Object-Language Representations. Presented at [[http://www.program-transformation.org/Gpce GPCE]], Vacouver B.C. Oct 2004.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Key Papers in Domain-specific Languages==&lt;br /&gt;
&lt;br /&gt;
* Don Batory. The Road to Utopia. In Christian Lengauer et al. Domain-Specific Program Generation, LNCS 3016, pp.1-18, Springer-Verlag, 2004. Survey paper; [[http://www.springerlink.com/(fz4uci45ex0m0t2sqtxxwn45)/app/home/contribution.asp?referrer=parent&amp;amp;backto=issue,1,18;journal,906,3807;linkingpublicationresults,1:105633,1 Springer Link]]&lt;br /&gt;
* C. Consel and R. Marlet. Architecturing software using a methodology for language development. In C. Palamidessi, H. Glaser, and K. Meinke, editors, Proceedings of the 10th International Symposium on Programming Language Implementation and Logic Programming, volume 1490 of Lecture Notes in Computer Science, Pisa, Italy, pages 170--194, September 1998 [[http://phoenix.labri.fr/publications/papers/plilp98.ps.gz pdf]]&lt;br /&gt;
* R. Kieburtz, L. McKinney, J. Bell, J. Hook, A. Kotov, J. Lewis, D. Oliva, T. Sheard, I. Smith and L. Walton, A software engineering experiment in software component generation, Int. Conf. on Softw. Eng. (ICSE), 1996.&lt;br /&gt;
* M. Pueschel and B. Singer and J. Xiong and J. Moura and J. Johnson and D. Padua and M. Veloso and R. W. Johnson. SPIRAL: A Generator for Platform-Adapted Libraries of Signal Processing Algorithms. Journal of High Performance Computing and Applications, special issue on Automatic Performance Tuning, 18 (1), pp. 21--45, 2004.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==Key Papers in Model-driven Computation==&lt;br /&gt;
&lt;br /&gt;
* D. Batory and S. O&amp;amp;#8217;Malley, &amp;amp;#8220;The Design and Implementation of Hierarchical Software Systems with Reusable Components&amp;amp;#8221;, ACM TOSEM, October 1992.&lt;br /&gt;
* Y. Smaragdakis and D. Batory, &amp;quot;Implementing Layered Designs with Mixin Layers&amp;quot;, ECOOP 1998.&lt;br /&gt;
* T. Biggerstaff, &amp;amp;#8220;The Library Scaling Problem and the Limits of Concrete Component Reuse&amp;amp;#8221;, International Conference on Software Reuse, 1994.&lt;br /&gt;
* J. Neighbors, Draco: a method for engineering reusable software components. In T.J. Biggerstaff and A. Perlis (eds.), Software Reusability, Addison-Wesley/ACM Press, 1989.&lt;br /&gt;
* D. HAREL, H. LACHOVER, A. NAAMAD, A. PNUELI, M. POLITI, R. SHERMAN, A. SHTULL-TRAURING, AND M. TRAKHTENBROT, &amp;amp;#8220;STATEMATE: A Working Environment for the Development of Complex Reactive Systems,&amp;amp;#8221; IEEE Transactions on Software Engineering 16 (April 1990), pp. 403&amp;amp;#8211;14&lt;br /&gt;
* D. HAREL, &amp;amp;#8220;Biting the Silver Bullet,&amp;amp;#8221; IEEE Computer 25 (January 1992), pp. 8&amp;amp;#8211;20.&lt;br /&gt;
* David Harel, Bernhard Rumpe: Meaningful Modeling: What&#039;s the Semantics of &amp;quot;Semantics&amp;quot;?. IEEE Computer 37(10): 64-72 (2004)&lt;br /&gt;
* Rumpe, B.: &amp;amp;#8220;A Note on Semantics (with an Emphasis on UML)&amp;amp;#8221;; Second ECOOP Workshop on Precise Behavioral Semantics (with an Emphasis on OO Business Specifications) (1998).&lt;br /&gt;
* Mosterman, P., Sztipanovits, J., Engell, S.: &amp;amp;#8220;Computer-Automated Multi-Paradigm Modeling in Control Systems technology,&amp;amp;#8221; IEEE Transactions on  Control System Technology, Vol. 12, No. 2, pp. 223-234, March  2004&lt;br /&gt;
* Horowitz, B.; Liebman, J.; Ma, C.; Koo, T.J.; Sangiovanni-Vincentelli, A.; Sastry, S.S.: &amp;amp;#8220;Platform-based embedded software design and system integration for autonomous vehicles,&amp;amp;#8221; Proceedings of the IEEE, Vol. 91, No.1., pp. 198-211, January, 2003&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/MeetingTwo&amp;diff=333</id>
		<title>WG211/MeetingTwo</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/MeetingTwo&amp;diff=333"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
=IFIP [[http://www.smart-generators.org/ Working Group 2.11]] Second Meeting=&lt;br /&gt;
&lt;br /&gt;
==Schedule==&lt;br /&gt;
&lt;br /&gt;
March 6-9, 2005, Houston, Texas&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Talks will be 20 minutes in length, with 10 minutes for questions.&lt;br /&gt;
There is information about getting [[http://www.smart-generators.org/MeetingTwo#FromAirports from the airport to the hotel]] and [[http://www.smart-generators.org/MeetingTwo#FromHotels from the hotel to the meeting location]] at the end of this page.&lt;br /&gt;
&lt;br /&gt;
====Sunday 9:00-10:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Doug Smith&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Visser Towards Extensible Program Transformation Systems]] [[http://pub.smart-generators.org/MeetingTwo/Visser-WG211-2005.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Eelco Visser, Utrecht University&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Taha Regenerative Programming: A New Approach to Data Mining for Software Design]] [[http://pub.smart-generators.org/MeetingTwo/taha.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Walid Taha, Rice University&lt;br /&gt;
&lt;br /&gt;
====Sunday 10:30-12:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Laurent Reveillere&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Smith Policy Enforcement]] [[http://pub.smart-generators.org/MeetingTwo/Policies%20050305.ppt [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Doug Smith, Kestrel Institute &amp;lt;!--Sunday or Monday--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Smaragdakis Statically Safe Meta-Programming]] [[http://pub.smart-generators.org/MeetingTwo/ifipwg-mar05-formatted.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Yannis Smaragdakis, Georgia Tech&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--a href=&amp;quot;&amp;quot;--&amp;gt;Maintaining Static Invariants using Generalized Algebraic Datatypes in Omega&amp;lt;!--/a--&amp;gt;[[http://pub.smart-generators.org/MeetingTwo/OmegaWG211March2005.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Tim Sheard, Portland State University&lt;br /&gt;
&lt;br /&gt;
====Sunday 12:00-13:15====&lt;br /&gt;
&lt;br /&gt;
Lunch: Goode Company BBQ, 5109 Kirby Dr, phone: 713.522.2530&lt;br /&gt;
&lt;br /&gt;
====Sunday 13:30-15:30====&lt;br /&gt;
&lt;br /&gt;
Session chair: Cristina Videira Lopes&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Reveillere Generative Programming from a DSL Viewpoint]] [[http://pub.smart-generators.org/MeetingTwo/Reveillere.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Laurent Reveillere, INRIA Futurs&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Pouzet Synchronizing Periodic Clocks in Kahn Networks]] [[http://pub.smart-generators.org/MeetingTwo/Pouzet.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Marc Pouzet, Universite Pierre et Marie Curie&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Ossher Concepts for Describing Composition of Software Artifacts]] [[http://pub.smart-generators.org/MeetingTwo/ossher.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Harold Ossher, IBM T.J. Watson Research Center&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Moggi Program Generation by Linking]]&lt;br /&gt;
----&lt;br /&gt;
 Eugenio Moggi, DISI, University of Genoa&lt;br /&gt;
&lt;br /&gt;
====Sunday 16:00-17:30====&lt;br /&gt;
&lt;br /&gt;
Session chair: Paul H J Kelly&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Lopes1 Aspect-Specific Languages]] [[http://pub.smart-generators.org/MeetingTwo/lopes1.pdf [Presentation]]] and [[http://www.smart-generators.org/M2Lopes2 An Economics-Based Model for Assessing Program Modularity]] [[http://pub.smart-generators.org/MeetingTwo/lopes2.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Cristina Videira Lopes, University of California&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Lawall Tarantula: Killing Driver Bugs Before They Hatch]] [[http://pub.smart-generators.org/MeetingTwo/lawallslides.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Julia Lawall, University of Copenhagen&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Kamin Using Partial Evaluation to Optimize Run-Time Program Generation]] [[http://pub.smart-generators.org/MeetingTwo/Kamin.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Sam Kamin, University of Illinois&lt;br /&gt;
&lt;br /&gt;
====Sunday 19:00-21:00====&lt;br /&gt;
&lt;br /&gt;
Dinner: Benjy&#039;s, 2424 Dunstan, phone: 713.522.7602.&lt;br /&gt;
&lt;br /&gt;
Bus to pick up at Best Western at 7:00 p.m. Bus to return to Best Western at 9:00 p.m.&lt;br /&gt;
&lt;br /&gt;
====Monday 9:00-10:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Sam Kamin&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Kennedy Generation of High-Performance Domain-Specific Languages from Component Libraries]] [[http://pub.smart-generators.org/MeetingTwo/Kennedy.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Ken Kennedy, Rice University &amp;lt;!--Sunday or Monday morning--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Kelly Composition metaprogramming and component metadata]] [[http://pub.smart-generators.org/MeetingTwo/PaulKelly-CompositionMetaprogramming-2005-03.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Paul H J Kelly, Imperial College London&lt;br /&gt;
&lt;br /&gt;
====Monday 10:30-12:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Kevin Hammond&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Cohen Persistent Intermediate Representations for Adaptive Global Optimization]] [[http://pub.smart-generators.org/MeetingTwo/ifip_cohen.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Albert Cohen, INRIA Futurs&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Herrmann Combining Abstraction and Performance by Metaprogramming]] [[http://pub.smart-generators.org/MeetingTwo/IFIP-2.11-Herrmann.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Christoph Armin Herrmann, University of Passau&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Lengauer The New EU Network of Excellence CoreGrid]] [[http://pub.smart-generators.org/MeetingTwo/Lengauer-wg2005.ps.gz [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Christian Lengauer, University of Passau&lt;br /&gt;
&lt;br /&gt;
====Monday 12:00-13:15====&lt;br /&gt;
&lt;br /&gt;
Lunch: Amazon Grill, 5114 Kirby Dr., phone: 713.522.5888&lt;br /&gt;
&lt;br /&gt;
Bus Pick-up at 12:00 p.m. outside Duncan Hall. Board bus at 13:15 p.m. to return to Duncan Hall.&lt;br /&gt;
&lt;br /&gt;
====Monday 13:30-15:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Krzysztof Czarnecki&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Hammond Hume: a Domain-Specific Language for Real-Time Embedded Systems]] [[http://pub.smart-generators.org/MeetingTwo/Hammond-Hume-WG2.11-2005.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Kevin Hammond, University of St. Andrews&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Fischer Certifying Automatically Generated Code]] [[http://pub.smart-generators.org/MeetingTwo/WG-2.11%20Fischer.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Bernd Fischer, NASA Ames (demo?)&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Demoor Adding tracecuts to AspectJ]]&lt;br /&gt;
----&lt;br /&gt;
 Oege de Moor, Oxford University&lt;br /&gt;
&lt;br /&gt;
====Monday 15:30-17:30====&lt;br /&gt;
&lt;br /&gt;
Discussion&lt;br /&gt;
&lt;br /&gt;
====Monday 19:30====&lt;br /&gt;
&lt;br /&gt;
Dinner: Julia&#039;s Bistro, 3722 Main Street, phone: 713.807.0090.&lt;br /&gt;
&lt;br /&gt;
Take the light rail (boarding station is across the street from Best Western) and exit at the HCC/Ensemble station stop. Walk one block south on West Alabama. Use the light rail to return to Best Western&lt;br /&gt;
&lt;br /&gt;
====Tuesday 9:00-10:30====&lt;br /&gt;
&lt;br /&gt;
Session chair: Don Batory&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Vardi A Game-Theoretic Approach to Automated Program Generation]] [[http://pub.smart-generators.org/MeetingTwo/vardi.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Moshe Vardi, Rice University&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Czarnecki Feature Modeling in Generative Software Development]] [[http://pub.smart-generators.org/MeetingTwo/czarnecki.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Krzysztof Czarnecki, University of Waterloo&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Consel A Domain-Specific Language for Telephony Services - A Progress Report]] [[http://pub.smart-generators.org/MeetingTwo/consel.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Charles Consel, INRIA Futurs&lt;br /&gt;
&lt;br /&gt;
====Tuesday 11:00-12:00====&lt;br /&gt;
&lt;br /&gt;
Session chair: Eelco Visser&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Batory Improving Incremental Development in AspectJ by Bounding Quantification]] [[http://pub.smart-generators.org/MeetingTwo/batory.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Don Batory, University of Texas&lt;br /&gt;
&lt;br /&gt;
[[http://www.smart-generators.org/M2Ball  A Theory of Predicate-Complete Test Coverage and Generation]] [[http://pub.smart-generators.org/MeetingTwo/ball.pdf [Presentation]]]&lt;br /&gt;
----&lt;br /&gt;
 Thomas Ball, Microsoft Research&lt;br /&gt;
&lt;br /&gt;
====Tuesday 12:00-13:15====&lt;br /&gt;
&lt;br /&gt;
Lunch: Kubo&#039;s Japanese Grill at 2414 University Dr., phone: 713.528.7878&lt;br /&gt;
&lt;br /&gt;
Bus Pick-up at 12:00 p.m. outside Duncan Hall. Board bus at 13:15 p.m. to go to the Museum of Natural Science at One Hermann Circle Drive. Bus Pick up outside Museum at 5:00 p.m. to go to the Best Western.&lt;br /&gt;
&lt;br /&gt;
====Tuesday 13:15-17:00====&lt;br /&gt;
&lt;br /&gt;
Excursion&lt;br /&gt;
&lt;br /&gt;
====Tuesday 19:30====&lt;br /&gt;
&lt;br /&gt;
Dinner: T&#039;afia, 3701 Travis Street, phone: 713.524.6922.&lt;br /&gt;
&lt;br /&gt;
Take the light rail (boarding station is across the street from Best Western) and exit at the HCC/Ensemble station stop. Walk south towards West Alabama. Take a right on Winbern and head towards Travis Street. T&#039;afia is between Winbern and West Alabama. Use the light rail to return to the Best Western.&lt;br /&gt;
&lt;br /&gt;
====Wednesday 9:00-10:00====&lt;br /&gt;
&lt;br /&gt;
Discussion&lt;br /&gt;
&lt;br /&gt;
====Wednesday 10:30-12:00====&lt;br /&gt;
&lt;br /&gt;
Discussion&lt;br /&gt;
&lt;br /&gt;
====Wednesday 12:00-13:15====&lt;br /&gt;
&lt;br /&gt;
Lunch: Jalapenos Restaurant, 2702 Kirby Drive, phone: 713.524.1668&lt;br /&gt;
&lt;br /&gt;
Bus Pick-up at 12:00 p.m. outside Hermann Brown Hall. Board bus at 13:15 p.m. to return to Hermann Brown Hall.&lt;br /&gt;
&lt;br /&gt;
#FromAirports&lt;br /&gt;
===From Houston airports to the hotels===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;Medical Center Area&amp;quot; is where Rice is and where the hotels are. If you arrive at either of the two main airports (Bush IAH or Houston Hobby), you can get into this area by either the &amp;quot;Express Shuttle&amp;quot; (713) 523-8888 or a taxi. If you are traveling alone, the Express Shuttle is the best way to get here. From Bush IAH it will cost $20 (instead of $50+ for a taxi), and from Hobby it will cost $15. You can find out the most recent prices [[http://www.airportexpresshouston.com/fares.html here]].&lt;br /&gt;
&lt;br /&gt;
If you take the shuttle, ask them to drop you off either at your hotel (Hilton/Holiday Inn/Warwick/Best Western/etc.) or at the Medical Center. Please make sure that you say &amp;quot;Medical Center&amp;quot;, as that is the name of the area! From Bush IAH it should be about a 35-45 minute ride. From Houston Hobby it should be about a 20 minute ride.&lt;br /&gt;
&lt;br /&gt;
If you are coming directly to Rice, you can also ask the shuttle to drop you off at Entrance 16 to Rice. Once you are there, you pretty much walk straight into the university until you get to Duncan Hall. This is the computer science building.&lt;br /&gt;
&lt;br /&gt;
#FromHotels&lt;br /&gt;
===From the hotels to the meeting location===&lt;br /&gt;
&lt;br /&gt;
All meetings will take place in DH 3076 except on Wednesday, when all meetings will take place in conference room 223 in Herman Brown.&lt;br /&gt;
&lt;br /&gt;
The Medical Center Best Western (6700 South Main Street) has a shuttle that can bring visitors to Duncan Hall at Rice. It&#039;s only a 15 passenger van, but they are happy to make two trips. Rice is about five minutes away so groups of guests should count on staggering the trip by about 15 minutes.&lt;br /&gt;
&lt;br /&gt;
A printable map is available [[http://www.rice.edu/maps/ here]] and an interactive map is available [[http://www.rice.edu/maps/buildings.html here]].&lt;br /&gt;
&lt;br /&gt;
===Meeting coordinator===&lt;br /&gt;
&lt;br /&gt;
Emir Pasalic: e-mail: [[mailto:pasalic@cs.rice.edu pasalic@cs.rice.edu]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/MeetingOne&amp;diff=331</id>
		<title>WG211/MeetingOne</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/MeetingOne&amp;diff=331"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
=IFIP [[http://www.smart-generators.org/ Working Group 2.11]] Kickoff Meeting=&lt;br /&gt;
&lt;br /&gt;
==Preliminary Schedule==&lt;br /&gt;
&lt;br /&gt;
May 16-18, 2004, St. Emilion, France&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
====Sunday 10:00====&lt;br /&gt;
&lt;br /&gt;
Departure from Bordeaux. Departure from the bus stop on allees de Munich aux Quinconces (2 minutes walk from the hotel). Bus company &amp;quot;VOYAGES ARRIVE&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Sunday 1:30-3:45====&lt;br /&gt;
&lt;br /&gt;
Feature interactions in feature oriented programming &lt;br /&gt;
----&lt;br /&gt;
 Don Batory&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/cohen.html  Revisiting optimization for compute-intensive codes in the context of program generation and adaptive libraries.]]&lt;br /&gt;
----&lt;br /&gt;
 Albert Cohen, INRIA Futurs&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/consel.html  A DSL for telephony services ]]&lt;br /&gt;
----&lt;br /&gt;
 Charles Consel, INRIA Futurs&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/~taha/wg2.11/m-1/schedule/hammond.html  Analyzing Stack and Heap Bounds for Primitive Recursive Programs in PR-Hume ]]&lt;br /&gt;
----&lt;br /&gt;
 Kevin Hammond, University of St Andrews&lt;br /&gt;
&lt;br /&gt;
====Sunday 4:15-6:45====&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/beckmann.html  TaskGraph Library: A Metaprogramming Tool for Specifying Optimisation as a Separate Concern]]&lt;br /&gt;
----&lt;br /&gt;
 Olav Beckmann, Imperial College of Science&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/~taha/wg2.11/m-1/schedule/kamin.html Jumbo: Run-time Program Generation for Java]]&lt;br /&gt;
----&lt;br /&gt;
 Samuel Kamin, University of Illinois&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/kelly.html  Veneer: a dynamic domain-specific optimisation framework for Java ]]&lt;br /&gt;
----&lt;br /&gt;
 Paul H J Kelly, Imperial College London&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/~taha/wg2.11/m-1/schedule/lawall.html  A language-based approach to the development of safe operating system extensions ]]&lt;br /&gt;
----&lt;br /&gt;
 Julia Lawall, University of Copenhagen (demo)&lt;br /&gt;
&lt;br /&gt;
====Sunday 8:00====&lt;br /&gt;
&lt;br /&gt;
Dinner.&lt;br /&gt;
&lt;br /&gt;
====Monday 8:45-10:30====&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/lengauer.html WG 2.11 Activities at the University of Passau]]&lt;br /&gt;
----&lt;br /&gt;
 Christian Lengauer, Universit&#039;t of Passau&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/lopes.html Aspects and Beyond]]&lt;br /&gt;
----&lt;br /&gt;
 Cristina Lopes, University of California&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/moggi.html Monadic Metalanguages for Staging and Name Management]]&lt;br /&gt;
----&lt;br /&gt;
 Eugenio Moggi, DISI, Univ. di Genova&lt;br /&gt;
&lt;br /&gt;
====Monday 11-12:15====&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/odonnell.html Tools for Equational Reasoning in Haskell]]&lt;br /&gt;
----&lt;br /&gt;
 John O&#039;Donnell, University of Glasgow&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/ossher.html The Concern Manipulation Environment]]&lt;br /&gt;
----&lt;br /&gt;
 Harold Ossher, IBM T.J. Watson Research Center (demo)&lt;br /&gt;
&lt;br /&gt;
====Monday 1:45-3:45====&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/~taha/wg2.11/m-1/schedule/paulin.html Generation of programs with proofs]]&lt;br /&gt;
----&lt;br /&gt;
 Christine Paulin, Universit&#039; Paris Sud&lt;br /&gt;
&lt;br /&gt;
TBA &lt;br /&gt;
----&lt;br /&gt;
 Marc Pouzet&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/sheard.html Towards combining Programming Languages and Logics ]]&lt;br /&gt;
----&lt;br /&gt;
 Tim Sheard, OGI /OHSU (demo)&lt;br /&gt;
&lt;br /&gt;
====Monday 4:15-6:00====&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/%7Etaha/wg2.11/m-1/schedule/smaragdakis.html Generating AspectJ Programs with Meta-AspectJ]]&lt;br /&gt;
----&lt;br /&gt;
 Yannis Smaragdakis, Georgia Tech&lt;br /&gt;
&lt;br /&gt;
[[http://www.cs.rice.edu/~taha/wg2.11/m-1/schedule/taha.html MetaOCaml: Putting multi-stage annotations to work]]&lt;br /&gt;
----&lt;br /&gt;
 Walid Taha, Rice University&lt;br /&gt;
&lt;br /&gt;
Compilers for active libraries &lt;br /&gt;
----&lt;br /&gt;
 Todd Veldhuizen, Chalmers University&lt;br /&gt;
&lt;br /&gt;
====Monday 6:30====&lt;br /&gt;
&lt;br /&gt;
Tour of St. Emilion.&lt;br /&gt;
&lt;br /&gt;
====Monday 8:00====&lt;br /&gt;
&lt;br /&gt;
Dinner.&lt;br /&gt;
&lt;br /&gt;
====Tuesday 9-11:30====&lt;br /&gt;
&lt;br /&gt;
Discussion&lt;br /&gt;
&lt;br /&gt;
====Tuesday 12:00====&lt;br /&gt;
&lt;br /&gt;
Lunch will begin at 12:00 sharp.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Westbrook&amp;diff=327</id>
		<title>WG211/M9Westbrook</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Westbrook&amp;diff=327"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Towards a Generalization of Specialization=&lt;br /&gt;
==Edwin Westbrook==&lt;br /&gt;
&lt;br /&gt;
Code specialization is a powerful technique for optimizing programs in general-purpose languages. Unfortunately, specialization faces many challenges when applied to domain-specific languages (DSLs). Automatic specialization (AS) techniques, such as partial evaluation and supercompilation, require monolithic implementations that are difficult to understand and modify, making it hard for domain experts &lt;br /&gt;
----&lt;br /&gt;
 who often are not AS experts &lt;br /&gt;
----&lt;br /&gt;
 to use them effectively and to add support for domain-specific optimizations. Existing techniques in manual specialization, that is, techniques that apply multi-stage programming (MSP), are often ad-hoc, making them difficult to apply to new domain-specific optimizations and difficult to prove correct.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;In this talk, we describe ongoing work on a generalized theory of code specialization, called staging functors, which we believe can overcome these difficulties. A staging functor gives a disciplined way to transform dynamic code fragments into partially static data that captures semantic information about the code. Further, any valid staging functor is guaranteed to be correct. Staging functors can be given with a small set of rules that can then be applied automatically, thus yielding user-customizable AS. Staging functors can also be applied manually, giving a new, disciplined, provably correct approach technique for MSP. Finally, we believe staging functors can be used for many useful domain-specific optimizations. As an example, we show how load elimination, an optimization for pointer programs, can be implemented as a staging functor.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Taha&amp;diff=325</id>
		<title>WG211/M9Taha</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Taha&amp;diff=325"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Globally Parallel, Locally Sequential=&lt;br /&gt;
==Walid Taha==&lt;br /&gt;
&lt;br /&gt;
A broad and important and resource-intensive class of computations codes are simulators for physical (or &amp;quot;natural&#039;&#039;) systems. Too often, such&amp;lt;br /&amp;gt;simulation codes are written in general purpose languages that promote a programming style that is too centered on the details of how the computation is performed, rather than the model itself. In addition, general purpose programming languages do not generally encourage the programmer (or engineer) to pay attention to programming choices that can lead to high resource costs at runtime.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This report presents our preliminary results with the design of Acumen, a physical modeling language that we are designing with a specific goal of promoting writing codes that can easily be mapped to highly parallel execution platforms. The key features underlying the language&#039;s design are promoting a programming style that supports a &amp;quot;globally parallel, locally imperative&#039;&#039; view of the world, as well as preserving deterministic execution even when the underlying computation is performed on a highly parallel platform. The approach appears to be promising, although it is still too early to say whether or not it can be useful in practice.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Sloane&amp;diff=323</id>
		<title>WG211/M9Sloane</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Sloane&amp;diff=323"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Profile-based analysis of attribute evaluation patterns=&lt;br /&gt;
==Anthony M. Sloane==&lt;br /&gt;
&lt;br /&gt;
Attribute grammars enable complex algorithms to be defined on tree structures using simple local equations, but a full understanding of the algorithms can be hard to discern from the individual equations. We present a method of analysing attribute equations where patterns are automatically derived from a profile of attribute evaluation. The patterns can be used to aid comprehension, abstraction and refactoring of the equations. In particular, they can form the basis of higher-order reusable attribute decorators that simplify the equations.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Schedule&amp;diff=321</id>
		<title>WG211/M9Schedule</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Schedule&amp;diff=321"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=IFIP Working Group 2.11, Ninth Meeting=&lt;br /&gt;
==December 1-3, 2010, Waterloo, Canada==&lt;br /&gt;
===Venue===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;The meeting will be held in the Davis Center (DC) Building on the campus of the University of Waterloo (see the DC Building on the [[http://www.uwaterloo.ca/map/index.php campus map]]). The registration will be in the Fishbowl room in the DC Building. The room has a circular glass wall&lt;br /&gt;
----&lt;br /&gt;
you cannot miss it when you enter the building. The closest visitor parking in Lot N; the fee is $3 per day. See http://www.uwaterloo.ca/map/index.php#parking for more information. If parking Lot N is full, then you can try parking Lot M, which is nearby and always has spaces. Note however that parking Lot M costs a dollar more ($4 instead of $3), and accepts only coin payments (by contrast, Lot N also takes credit cards).&lt;br /&gt;
===Travel===&lt;br /&gt;
&lt;br /&gt;
Arriving by air, you will fly into the [[http://www.gtaa.com/en/home/ Toronto Pearson International Airport]] (YYZ). Waterloo is about one hour drive from the airport. The most convenient way to get from the airport to the hotel is to take the Airways Transit Shuttle. You should pre-book the door-to-door service by visiting their [[http://www.airwaystransit.com/ website]]. The website has directions for the shuttle registration desk at the airport terminal; you should report at the desk after arrival for pick-up. One-way fare for the shuttle is $83 for a single person. You can save money if you book for a party of two or more. For example, one-way fare for two adults is $118; see their [[http://www.airwaystransit.com/fare.shtml fare calculator]]. [[http://www.waterlootaxi.ca/ Waterloo Taxi]] has a flat fee of $90 per cab (not per person) with no other guests picked up.&lt;br /&gt;
===Ride Sharing===&lt;br /&gt;
&lt;br /&gt;
Chris Lengauer will arrive on Tuesday, November 30, at 21:15 on Air Canada from Montreal&lt;br /&gt;
&lt;br /&gt;
Bernd Fischer will arrive on Tuesday, November 30, 15:05, with Air Canada from London Heathrow. He may rent a car.&lt;br /&gt;
&lt;br /&gt;
Yannis Smaragdakis will arrive on Tuesday, November 30, at 8pm from NY-JFK (Delta flight 4068), and leaves on Dec. 4 at 11:40am.&lt;br /&gt;
&lt;br /&gt;
Eddy Westbrook will arrive on Tuesday, November 30, at 8:34 pm from Chicago (Continental flight 6972), and leaves on Dec. 3 at 6:20pm.&lt;br /&gt;
&lt;br /&gt;
Christian K�stner will arrive on Tuesday, November 30, at 12:30 on Air Canada AC873 from Frankfurt&lt;br /&gt;
===Registration===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The registration deadline is November 15.&#039;&#039;&#039; The registration fee is CAD $238. In order to register for the meeting, please fill out and sign the registration form below and fax it or e-mail a scanned version (the fax number and e-mail address are specified on the form). We accept major credit cards or cheque payments.&lt;br /&gt;
&lt;br /&gt;
* [[Media:IFIPRegistration.pdf | IFIPRegistration.pdf ]]: Registration form (pdf)&lt;br /&gt;
* [[Media:IFIPRegistration.doc | IFIPRegistration.doc ]]: Registration form (word)&lt;br /&gt;
&lt;br /&gt;
The fee covers all meals during the meetings (breakfasts, morning coffee breaks, lunches, afternoon snacks and two dinners&lt;br /&gt;
----&lt;br /&gt;
one on Wednesday at [[http://www.sole.ca Sole]] and the other on Thursday at [[http://www.charcoalgroup.ca Wildcraft]]. We will organize a group dinner for those who will stay in Waterloo on Friday (not included in the registration).&lt;br /&gt;
&lt;br /&gt;
The recommended hotel is the [[http://www.waterlooinn.com Waterloo Inn]]. Please make your own reservation by calling the hotel at +1 (519) 884-0220 or toll-free at 1-800-361-4708. We reserved a block of rooms at the special rate of CAD $143 plus applicable taxes per night. To receive this room rate, please mention that you are with the University of Waterloo attending the IFIP meeting. The block of hotel rooms is on hold until November 1, 2010. Please make sure to make the reservation before then. It is possible to stay in the hotel at the given rate until Sunday, December 5.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;The Waterloo Inn has a free shuttle to the University running every 30 minutes. A taxi drive is about $10.&lt;br /&gt;
===Attendees===&lt;br /&gt;
&lt;br /&gt;
Baris Aktemur, Jo Atlee, Kacper Bak, Emilie Balland, Thiago Bartolomei, Jacques Carette, Charles Consel, Derek Drayside, Bernd Fischer, Christian Kaestner, Oleg Kiselyov, Ralf Laemmel, Chris Lengauer, Ken Shan, Tony Sloane, Yannis Smaragdakis, Walid Taha, Eddy Westbrook&lt;br /&gt;
===Talks===&lt;br /&gt;
&lt;br /&gt;
Talk slots are 45 minutes. Although the slots are fairly long, the goal is to provide time for discussion. Thus you should limit your speaking time to 25 or at most 30 minutes.&lt;br /&gt;
&lt;br /&gt;
Breakfast will be provided, starting at 8:00. Dinner will begin at 6:30 on Wednesday and Thursday.&lt;br /&gt;
=====Wednesday=====&lt;br /&gt;
&lt;br /&gt;
9:00-9:45: [[http://resource-aware.org/do/view/WG211/M9Smaragdakis* What Can the GC Compute Efficiently? A Language for Heap Assertions at GC Time]] Yannis Smaragdakis&lt;br /&gt;
&lt;br /&gt;
9:45-10:45: [[http://resource-aware.org/do/view/WG211/M9Taha* Globally Parallel, Locally Sequential]] Walid Taha&lt;br /&gt;
&lt;br /&gt;
11:15-12:00: [[http://resource-aware.org/do/view/WG211/M9Rayside* Synthesizing executable code from declarative abstraction functions]] Derek Rayside&lt;br /&gt;
&lt;br /&gt;
1:30-2:15: [[http://resource-aware.org/do/view/WG211/M9Balland* Open Platforms: New Challenges for Software Engineering]] Emilie Balland&lt;br /&gt;
&lt;br /&gt;
2:15-3:00: [[http://resource-aware.org/do/view/WG211/M9Bartolomei* Migration of Applications across Object-Oriented APIs]] Thiago Bartolomei&lt;br /&gt;
&lt;br /&gt;
3:30-5:00: Discussion&lt;br /&gt;
&lt;br /&gt;
6:30: Dinner&lt;br /&gt;
=====Thursday=====&lt;br /&gt;
&lt;br /&gt;
9:00-9:45: [[http://resource-aware.org/do/view/WG211/M9Kaestner* Variability Analysis of Legacy C Code: Parsing and Type-Checking Millions of Product Line Variants]] Christian Kaestner&lt;br /&gt;
&lt;br /&gt;
9:45-10:30: [[http://resource-aware.org/do/view/WG211/M9Bak* Software Product Lines in Clafer]] Kacper Bak&lt;br /&gt;
&lt;br /&gt;
11:00-11:45: [[http://resource-aware.org/do/view/WG211/M9Consel* DiaSuite: Paradigm-Oriented Software Development Approach]] Charles Consel&lt;br /&gt;
&lt;br /&gt;
1:00-1:45: [[http://resource-aware.org/do/view/WG211/M9Kiselyov* Ask-by-need: generating multiple-answer RPC/web requests]] Oleg Kiselyov&lt;br /&gt;
&lt;br /&gt;
1:45-2:30: [[http://resource-aware.org/do/view/WG211/M9Carette* The structure of typed generic code generators]] Jacques Carette&lt;br /&gt;
&lt;br /&gt;
3:00-3:45: Motivations for working on open-source software, Michael Terry&lt;br /&gt;
&lt;br /&gt;
3:45-4:30: Discussion&lt;br /&gt;
&lt;br /&gt;
4:30-5:30: Business meeting (members only)&lt;br /&gt;
&lt;br /&gt;
6:30: Dinner&lt;br /&gt;
=====Friday=====&lt;br /&gt;
&lt;br /&gt;
9:00-9:45: [[http://resource-aware.org/do/view/WG211/M9Sloane* Language Processing in Kiama]] Tony Sloane&lt;br /&gt;
&lt;br /&gt;
9:45-10:30: [[http://resource-aware.org/do/view/WG211/M9Westbrook* Towards a Generalization of Specialization]] Eddy Westbrook&lt;br /&gt;
&lt;br /&gt;
11:00-11:45 [[http://resource-aware.org/do/view/WG211/M9KiselyovShan* The MetaOCaml files: Status report and research proposal]] Oleg Kiselyov and Chung-Chieh Shan&lt;br /&gt;
&lt;br /&gt;
1:15-2:00: [[http://resource-aware.org/do/view/WG211/M9Fischer* Extending code generators by transforming generated code]] Bernd Fischer&lt;br /&gt;
&lt;br /&gt;
2:00-2:30: [[http://resource-aware.org/do/view/WG211/M9Laemmel* Modeling Programming Technologies]] Ralf L�mmel&lt;br /&gt;
&lt;br /&gt;
3:00-3:30: Towards Combining Runtime Program Generation with Empirical Optimization, Baris Aktemur&lt;br /&gt;
&lt;br /&gt;
3:30-5:00: Discussion&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:IFIPRegistration.pdf | IFIPRegistration.pdf]]&lt;br /&gt;
*[[Media:IFIPRegistration.doc | IFIPRegistration.doc]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Rayside&amp;diff=319</id>
		<title>WG211/M9Rayside</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Rayside&amp;diff=319"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Synthesizing executable code from declarative abstraction functions=&lt;br /&gt;
==Derek Rayside==&lt;br /&gt;
&lt;br /&gt;
Data abstraction has been the dominant structuring paradigm for programs for decades. The essence of a data abstraction is the abstraction function, which relates the concrete program representation to its abstract meaning. However, abstraction functions are not generally considered to be a part of the executing program. We propose that making abstraction functions an executable part of the program can enable programmers to write clearer and more concise programs with fewer errors. &amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;In particular, we show that the object equality and hashing operations (which programmers are required to write), can often be expressed more clearly and more concisely in terms of the abstract state of the object. Getting these methods right has proven to be difficult for programmers at all skill levels, from novice through expert. In a case study of the standard Java libraries we show that rewriting the code with explicit declarative abstraction functions (and generating equality and hashing methods automatically) removed object-contract compliance faults previously found by Pacheco et al.&amp;lt;br /&amp;gt; &amp;lt;br /&amp;gt;To make abstraction functions part of the executing program we develop four techniques for the dynamic evaluation of abstraction functions written in a declarative first-order logic with relations and transitive closure. We observe that the abstraction functions programmers write in practice may often be viewed as navigation queries on the heap, and two of our techniques exploit this insight to synthesize executable code from declarative abstraction functions. The performance of our research prototype is within striking distance of hand-written code.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Laemmel&amp;diff=317</id>
		<title>WG211/M9Laemmel</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Laemmel&amp;diff=317"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Modeling Programming Technologies=&lt;br /&gt;
==Ralf L�mmel==&lt;br /&gt;
&lt;br /&gt;
I will present preliminary results of an effort on understanding programming technologies at an ontological and megamodeling level. The idea is to capture technologies at a high level of abstraction so that their architecture, the potential intentions for their use, and the characteristics of their actual use in projects are comprehensible without detailed knowledge of the technologies--also in a manner that comparisons across technologies are meaningful and approachable.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This is joint work with&amp;lt;br /&amp;gt;Jean-Marie Favre (OneTree Technologies, Luxembourg) and Dragan Gasevic (Athabasca University, Canada).&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9KiselyovShan&amp;diff=315</id>
		<title>WG211/M9KiselyovShan</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9KiselyovShan&amp;diff=315"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==The MetaOCaml files==&lt;br /&gt;
==Oleg Kiselyov, Chung-chieh Shan==&lt;br /&gt;
&lt;br /&gt;
MetaOCaml, a dialect of OCaml, is the best-developed way today to write custom code generators and assure them type-safe across multiple stages of computation. We report on the status of the ongoing MetaOCaml project, focusing on the gap between theory and practice and the difficulties that arise in a full-featured staged language rather than an idealized calculus. It is not clear, even in theory, how staging interacts with effects, polymorphism, user-defined data types, and the module system. We highlight foundational problems in type soundness and cross-stage persistence that demand investigation.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Kiselyov&amp;diff=313</id>
		<title>WG211/M9Kiselyov</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Kiselyov&amp;diff=313"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Ask-by-need: generating multiple-answer RPC/web requests==&lt;br /&gt;
===Oleg Kiselyov===&lt;br /&gt;
&lt;br /&gt;
At the 2009 meeting of WG2.11, William Cook presented a new remote procedure call (RPC) mechanism, relying on packaging several calls into one RPC request to minimize the communication overhead. We report an earlier and independent development of request bundling, taking advantage of (simulated) lazy evaluation to automatically discover the RPC calls to bundle. Delaying and bundling input requests becomes especially beneficial when communicating with a user through a web browser. The difference is then between asking for several pieces of data on separate web forms, or on one form. We describe the implementation in a strict language, as an OCaml library for Web programming.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Kaestner&amp;diff=311</id>
		<title>WG211/M9Kaestner</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Kaestner&amp;diff=311"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variability Analysis of Legacy C Code: Parsing and Type-Checking Millions of Product Line Variants==&lt;br /&gt;
==Christian Kaestner==&lt;br /&gt;
&lt;br /&gt;
Despite much research on sophisticated programming languages and generators to implement software product lines, practitioners still implement variability in most industrial product lines with the C preprocessor. The ad-hoc nature and undisciplined use of file inclusion, macro substitution and conditional compilation on text level makes analysis difficult. While product-line-aware type systems and safe generators have been developed for novel languages, product lines implemented with the C preprocessor must still be checked by checking the (potentially millions of) generated variants instead of checking the generator. We present an approach to parse, analyze, and type check unpreprocessed C code including all #ifdef variability. To that end, we are developing a partial preprocessor, a specialized feature-aware parser, and a product-line-aware type system for C. Our long term goal is to type check all variants of the Linux kernel with its over 8000 features.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Fischer&amp;diff=309</id>
		<title>WG211/M9Fischer</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Fischer&amp;diff=309"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Extending code generators by transforming generated code=&lt;br /&gt;
==Bernd Fischer==&lt;br /&gt;
&lt;br /&gt;
Code generated from high-level specifications often requires modification before deployment, but no approach exists that allows an application programmer to make these modifications in a safe, reliable, and systematic way. Hence, incomplete or incorrect generators cannot be changed easily, domain evolution is not supported, and experimenting with new features is not possible. In this talk, I&#039;ll show how to modify and extend code generators indirectly, by automatically transforming the generated code. Two related techniques to enable automatic code customizations are explored: i) syntactic customization patches, whose implementation required Stratego to be extended to allow the embedding of concrete syntax in concrete syntax and ii) semantic join points, implemented as Java annotations and weaved into the generated code using AspectJ. Both approaches are based on ideas from aspect-oriented programming, but have opposite characteristics. Customization patches do not require changes to the underlying code generator, but can suffer from the fragile point-cut problem, while semantic join points are stable but require support from the generator. I will describe and evaluate the application of these techniques in the customization of WebDSL, a domain-specific language for modeling dynamic, data-rich web applications.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Carette&amp;diff=307</id>
		<title>WG211/M9Carette</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Carette&amp;diff=307"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=The structure of typed generic code generators=&lt;br /&gt;
==Jacques Carette==&lt;br /&gt;
&lt;br /&gt;
Now that the feasibility of writing complex typed code generators has been established, along with the creation of a toolset for writing typed code generators, we need to understand how to structure and modularize these new programs. Through the investigation of several program families (generally arising from mathematical software), we have built up a methodology for this task. This methodology will be outlined, as well as several of the key ingredients which make this feasible: abstract interpretation, abstract algebra, partial evaluation, and compile-time symbolic computation. One important feature of our approach is that it relies on (carefully) mixing existing techniques rather than on ``new&#039;&#039; tools.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Bartolomei&amp;diff=305</id>
		<title>WG211/M9Bartolomei</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Bartolomei&amp;diff=305"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Migration of Applications across Object-Oriented APIs=&lt;br /&gt;
==Thiago Tonelli Bartolomei==&lt;br /&gt;
&lt;br /&gt;
Evolving requirements may necessitate API migration: re-engineering an application to replace its dependence on one API with dependencies on another API for the same domain. In this talk we give an overview of our efforts towards mastering API migration for object-oriented APIs. We start with the results of case studies we conducted on applying a wrapping approach to API migration in practice. We show that wrappers around realistic object-oriented APIs must account for their deep inheritance hierarchies, various multiplicities of type mappings and other non-trivial API mismatches. We follow with our current work on Pitta, a domain specific language for API migration. Pitta&#039;s main goals are to support developers in uncovering and managing API mismatches, to free developers from error-prone boilerplate wrapping code, and to enable client application analyses to be derived from the specifications. All that while still looking familiar to regular developers (Pitta constructs are implemented on top of Java). Finally, we describe our plans for applying Pitta as a transformation specification and skim through the challenges that lie ahead.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Balland&amp;diff=303</id>
		<title>WG211/M9Balland</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Balland&amp;diff=303"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Open Platforms: New Challenges for Software Engineering==&lt;br /&gt;
===Emilie Balland===&lt;br /&gt;
&lt;br /&gt;
Recently, platforms running third-party applications have become very popular, in particular due to the explosion of the smartphone market. These open platforms propose a rich stream of applications, targeting general-purpose as well as customized user needs. Developing applications for such target platforms introduces new requirements and raises new challenges. After an overview of the existing approaches, we identify the challenges for the next generation of open platforms.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M9Bak&amp;diff=301</id>
		<title>WG211/M9Bak</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M9Bak&amp;diff=301"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Software product lines in Clafer=&lt;br /&gt;
==Kacper Bak==&lt;br /&gt;
&lt;br /&gt;
Clafer is a meta-modeling language with first-class support for feature modeling. It can model various aspects of software product lines and allows for performing non-trivial analyses on them. We designed Clafer as a concise notation for meta-models, feature models, mixtures of meta- and feature models (such as components with options), and models that couple feature models and meta-models via constraints (such as mapping feature configurations to component configurations or model templates). Clafer also allows arranging models into multiple specialization and extension layers via constraints and inheritance. We identify four key mechanisms allowing a meta-modeling language to express feature models concisely and show that Clafer meets its design objectives using a sample product line. We evaluated Clafer and how it lends itself to analysis on sample feature models, meta-models, and model templates of an E-Commerce platform.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Westbrook&amp;diff=299</id>
		<title>WG211/M8Westbrook</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Westbrook&amp;diff=299"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Mint: Java Multi-stage Programming Using Weak Separability=&lt;br /&gt;
==Ed Westbrook==&lt;br /&gt;
&lt;br /&gt;
Multi-stage programming (MSP) provides a disciplined approach to run-time code generation. In the purely functional setting, it has been shown how MSP can be used to reduce the overhead of abstractions, allowing clean, maintainable code without paying performance penalties. Unfortunately, MSP is difficult to combine with imperative features, which are prevalent in mainstream languages. The central difficulty is scope extrusion, wherein free variables can inadvertently be moved outside the scopes of their binders. This paper proposes a new approach to combining MSP with imperative features that occupies a &amp;quot;sweet spot&amp;quot; in the design space in terms of how well useful MSP applications can be expressed and how easy it is for programmers to understand. The key insight is that escapes (or &amp;quot;anti-quotes&amp;quot;) must be weakly separable from the rest of the code, i.e. the computational effects occurring inside an escape that are visible outside the escape are guaranteed to not contain code. To demonstrate the feasibility of this approach, we formalize a type system based on Lightweight Java which we prove sound, and we also provide an implementation, called Mint, to validate both the expressivity of the type system and the effect of staging on the performance of Java programs.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Visser&amp;diff=297</id>
		<title>WG211/M8Visser</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Visser&amp;diff=297"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Building IDEs for Domain-Specific Languages with Spoofax/IMP&lt;br /&gt;
&lt;br /&gt;
Eelco Visser&lt;br /&gt;
&lt;br /&gt;
Domain-specific languages are a key component of program generation. While we have ample experience building code generators and compilers, modern software developers expect integrated development environments such as Eclipse and Visual Studio to boost their productivity. To achieve the productivity gain promised by domain-specific languages, it is required that they come with strong IDE support. Since the production of DSLs cannot afford the effort that is put into IDEs for general-purpose languages, better tools are needed.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;In this talk I present Spoofax/IMP, an Eclipse plugin for creating Eclipse plugins for custom (domain-specific) languages. Spoofax integrates several domain-specific languages for language definition. SDF supports modular, declarative definition of syntax with arbitrary context-free grammars integrating lexical syntax. A new implementation of the SGLR parser for SDF supports sophisticated error recovery. Stratego supports model transformation, code generation, static analysis, and refactoring with rewrite rules and programmable strategies. Editor service DSLs support declaration and customization of syntactic editor services such as syntax highlighting, folding, outline views, and semantic editor services such as error checking, cross references, content completion, and refactorings.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;I&#039;ll introduce Spoofax by discussing a definition for a subset of the WebDSL web programming language. The talk will be partly slides and&amp;lt;br /&amp;gt;partly demonstration.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8VanWyk&amp;diff=295</id>
		<title>WG211/M8VanWyk</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8VanWyk&amp;diff=295"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Bidirectional Attribute Grammars and their use in Extensible Languages=&lt;br /&gt;
==Eric Van Wyk==&lt;br /&gt;
&lt;br /&gt;
We discuss how bidirectional transformations can be realized in higher order attribute grammars. In this approach, as in other means for realizing bidirectional transformations, a mapping from a source language to a target language (called the &amp;quot;get&amp;quot; function in bidirectional parlance) is used to generate a function from the target back to the source (called the &amp;quot;put&amp;quot; function). When possible the put function uses the original source language phrase to map the generated target language phrase back to the same source language phrase. When the source phrase is not available the put function should generate source phrases that exhibit desirable properties; for example, expressions that have the minimal number of required parenthesis. Such transformations are useful in extensible languages; for example in generating a host language program from one containing domain specific language extensions, non-transformed source constructs should be recognizable to the programmer. This is joint work with Jo\~ao Saraiva.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Schultz&amp;diff=293</id>
		<title>WG211/M8Schultz</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Schultz&amp;diff=293"/>
		<updated>2011-12-12T10:06:29Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Language Support for Robust and Reversible Self-Reconfiguration=&lt;br /&gt;
==Ulrik Schultz==&lt;br /&gt;
&lt;br /&gt;
Modular, self-reconfigurable robots are robots that can change their own shape by physically rearranging the modules from which they are built. Self-reconfiguration can be controlled by e.g. an off-line planner, but numerous implementation issues hamper the actual self-reconfiguration process: the continuous evolution of the communication topology increases the risk of communications failure, generating code that correctly controls the self-reconfiguration process is non-trivial, and hand-tuning the self-reconfiguration process is tedious and error-prone.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;To address these issues, we have developed a distributed scripting language that controls self-reconfiguration of the ATRON robot using a robust communication scheme that relies on local broadcast of shared state. This language can be used as the target of a planner, offers direct support for parallelization of independent operations while maintaining correct sequentiality of dependent operations, and compiles to a robust and efficient implementation. Moreover, a novel feature of this language is its reversibility: once a self-reconfiguration sequence is described the reverse sequence is automatically available to the programmer, significantly reducing the amount of work needed to deploy self-reconfiguration in larger scenarios.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;In this talk I will give an overview of our approach and discuss issues related to the continued development of a general-purpose&amp;lt;br /&amp;gt;scripting language for embedded systems and the role of reversible sequences in a general-purpose language.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Schedule&amp;diff=291</id>
		<title>WG211/M8Schedule</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Schedule&amp;diff=291"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=IFIP Working Group 2.11, Eighth Meeting=&lt;br /&gt;
==March 1-3, 2010, St. Andrews Scotland==&lt;br /&gt;
&lt;br /&gt;
=Organizers=&lt;br /&gt;
&lt;br /&gt;
{kh,ch} at cs dot st hyphen andrews dot ac dot uk&lt;br /&gt;
&lt;br /&gt;
=Registration=&lt;br /&gt;
&lt;br /&gt;
[[https://onlineshop.st-andrews.ac.uk/browse/product.asp?catid=18&amp;amp;modid=2&amp;amp;compid=1 Register here]]&lt;br /&gt;
&lt;br /&gt;
=Meeting location=&lt;br /&gt;
&lt;br /&gt;
The meeting will take place in the center of town, in the Parliament Hall, which is on South Street.&lt;br /&gt;
&lt;br /&gt;
More information about the meeting location is available [[http://www-fp.cs.st-andrews.ac.uk/wg211-meeting/ here]].&lt;br /&gt;
&lt;br /&gt;
=Meeting schedule=&lt;br /&gt;
&lt;br /&gt;
The meeting will take place over three full days. Plan on leaving on the night of March 3, or on March 4.&lt;br /&gt;
&lt;br /&gt;
=Accomodations=&lt;br /&gt;
&lt;br /&gt;
Here are some links for bed and breakfasts:&lt;br /&gt;
&lt;br /&gt;
[[http://www.thealbanystandrews.co.uk/]]&lt;br /&gt;
&lt;br /&gt;
[[http://www.aboutscotland.co.uk/fife/queensterrace.html]]&lt;br /&gt;
&lt;br /&gt;
[[http://www.deveronhouse.com/1.html]]&lt;br /&gt;
&lt;br /&gt;
[[http://www.5pilmourplace.com/]]&lt;br /&gt;
&lt;br /&gt;
[[http://www.nethan-standrews.com/Nethan_Guest_House/Welcome.html]]&lt;br /&gt;
&lt;br /&gt;
[[http://www.brownlees.co.uk/]]&lt;br /&gt;
&lt;br /&gt;
More information about accomodations is available [[http://www-fp.cs.st-andrews.ac.uk/wg211-meeting/ here]].&lt;br /&gt;
&lt;br /&gt;
The price range is roughly 50-70 pounds per person per night based on two sharing. Single occupancy of double/twin rooms might be possible with some extra charge. Special offers might be possible for several days, e.g. named &amp;quot;Winter Breaks&amp;quot; at the Albany Hotel based on two people sharing.&lt;br /&gt;
&lt;br /&gt;
More bed and breakfasts are available &amp;lt;a &amp;quot;href=http://www.stayinstandrews.co.uk/&amp;quot;&amp;gt;here&amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The nearest airport is Edinburgh, another convenient alternative is Glasgow International. Glasgow Prestwick might be an alternative if you travel Ryanair, but the train journey can take roughly 4 hours and you need to switch train stations in Glasgow, so it is recommended only if you arrive on Sunday afternoon not too late. You can find train connections [[http://www.scotrail.co.uk/ here]]&lt;br /&gt;
&lt;br /&gt;
St Andrews train station is in a small town &amp;quot;Leuchars&amp;quot; a few miles outside St Andrews. From there you can take a scheduled bus until about 10pm. Taxis are available as well for roughly 12-15. If you arrive at Edinburgh Airport, there is a bus into Edinburgh city centre where you get access to the train line via Haymarket (best) or Waverley station. If you need to arrive late on Sunday, please contact the organizers so they can arrange a shuttle bus.&lt;br /&gt;
&lt;br /&gt;
=Ride sharing=&lt;br /&gt;
&lt;br /&gt;
A taxi from the Edinburgh airport to St Andrews would cost roughly 50 to 70 pounds if booked in advance. The organizers will collect travel dates in February and then negotiate shuttle transport or taxi with the University&#039;s travel service.&lt;br /&gt;
&lt;br /&gt;
More information about ride sharing is available [[http://www-fp.cs.st-andrews.ac.uk/wg211-meeting/ here]].&lt;br /&gt;
&lt;br /&gt;
=Attendees=&lt;br /&gt;
&lt;br /&gt;
Baris Aktemur, Sven Apel, Edwin Brady, William Cook, Ewen Denney, Simon Dobson, Bernd Fischer, Robert Gl�ck, Kevin Hammond, Christoph Herrmann, Chris Jefferson, Steffen Jost, Christian K�stner, Paul Kelly, Ralf L�mmel, Julia Lawall, Anne Fran�oise Le Meur, Christian Lengauer, Graham Markall, Greg Michaelson, Ian Miguel, John O&#039;Donnell, Ina Schaefer, Ulrik Schultz, Eric Van Wyk, Eelco Visser, Stephanie Weirich, Ed Westbrook&lt;br /&gt;
=Program=&lt;br /&gt;
&lt;br /&gt;
To enter your title and abstract, instantiate a copy of the code below, removing the &amp;quot;-&amp;quot;s between the [ [ and ] ], and filling in your name and the talk title. If you click on the link, it should give you the option to create a page on which you can enter your abstract.&lt;br /&gt;
&lt;br /&gt;
[-[http://resource-aware.org/do/view/WG211/M8Name*][Talk title]-] Name&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Kaestner* Virtual separation of concerns - Toward preprocessors 2.0]] [[Media:Kaestner_M8_slides.pdf | (slides) ]] Christian Kaestner&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Glueck* An experiment with the fourth Futamura projection]] Robert Glueck&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Apel* Safe Generation in Feature-Oriented Software Development]] [[Media:Apel_M8_slides.pdf | (slides) ]] Sven Apel&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Michaelson* Costing by Construction for Box-based System Development]] [[Media:Michaelson_M8_slides.ppt | (slides) ]] Greg Michaelson&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Dobson* Programming for adaptive sensor networks: back to the future]] [[Media:Dobson_M8_slides.pdf | (slides) ]] Simon Dobson&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Cook* Online Partial Evaluation of Model Interpreters in Java]] William Cook&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Aktemur* Relating Staged Computation to the Record Calculus]] [[Media:Aktemur_M8_slides.pdf | (slides) ]] Baris Aktemur&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Schaeffer* Software Product Lines]] [[Media:Schaefer_M8_slides.pdf | (slides) ]] Ina Schaefer&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8ODonnell* Datapath and control correspond to language and program]] John O&#039;Donnell&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Hack* AnySL: Efficient and Portable Multi-Language Shading]] Sebastian Hack&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Hermann* An embedded DSL for the parameterised specification, resource analysis and scheduling of systems composed of functional building blocks]] [[Media:Hermann_M8_slides.pdf | (slides) ]] Christoph Hermann&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Visser* Building IDEs for Domain-Specific Languages with Spoofax/IMP]] Eelco Visser&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Weirich* Generic programming with dependent types]] [[Media:Weirich_M8_slides.pptx | (slides) ]] Stephanie Weirich&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8VanWyk* Bidirectional Attribute Grammars and their use in Extensible Languages]] [[Media:VanWyk_M8_slides.pdf | (slides) ]] Eric Van Wyk&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Jefferson* DoMinion : Generating Efficient Constraint Programming Solvers]] Christopher Jefferson&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Markall* Generating optimised multiplatform finite element solvers from high-level representations]] [[Media:Markhall_M8_slides.pdf | (slides) ]] Graham Markall&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Westbrook* Mint: Java Multi-stage Programming Using Weak Separability]] [[Media:Westbrook_M8_slides.pdf | (slides) ]] Ed Westbrook&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Schultz* Language Support for Robust and Reversible Self-Reconfiguration]] Ulrik Schultz&lt;br /&gt;
&lt;br /&gt;
[[http://resource-aware.org/do/view/WG211/M8Brady* Implementing Domain Specific Languages using Dependent Types and Partial Evaluation]] Ed Brady&lt;br /&gt;
&lt;br /&gt;
Discussion on teaching DSLs/program generation: Ulrik Schultz&lt;br /&gt;
&lt;br /&gt;
Presentation of the German Research Priority Programme Proposal &amp;quot;Manycore&amp;quot;: Chris Lengauer&lt;br /&gt;
&lt;br /&gt;
Presentation of [[http://researchr.org/ researchr.org]]: Eelco Visser&lt;br /&gt;
&lt;br /&gt;
=Schedule=&lt;br /&gt;
&amp;lt;table align=&amp;quot;left&amp;quot; style=&amp;quot;width: 850px; height: 244px;&amp;quot; border=&amp;quot;0&amp;quot;&amp;gt; &amp;lt;tbody&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Monday&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Tuesday&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Wednesday&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;9:00&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Kaestner&#039;&#039;&#039; Kaestner]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Weirich&#039;&#039;&#039; Weirich]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Dobson&#039;&#039;&#039; Dobson]]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;9:45&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Apel&#039;&#039;&#039; Apel]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Brady&#039;&#039;&#039; Brady]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Jefferson&#039;&#039;&#039; Jefferson]]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;10:30&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Break&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Break&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Break&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;11:00&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Schaeffer&#039;&#039;&#039; Schaefer]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Michaelson&#039;&#039;&#039; Michaelson]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8ODonnell&#039;&#039;&#039; O&#039;Donnell]]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;11:45&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Markall&#039;&#039;&#039; Markall]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Aktemur&#039;&#039;&#039; Aktemur]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Short presentations by Lengauer and Cook&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;12:30&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Lunch&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Lunch&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Lunch&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;14:00&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Glueck&#039;&#039;&#039; Glueck]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Excursion&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Discuss&#039;&#039;&#039; Discussion on teaching program generation and DSLs]]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;14:45&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Cook&#039;&#039;&#039; Cook]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Excursion&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Hermann&#039;&#039;&#039; Hermann]]&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;15:30&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Break&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Short presentation by Visser&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Break&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;16:00&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Laemmel&#039;&#039;&#039; Laemmel]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Schultz&#039;&#039;&#039; Schultz]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8VanWyk&#039;&#039;&#039; Van Wyk]]&amp;lt;br /&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;16:45&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Westbrook&#039;&#039;&#039; Westbrook]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;[[http://resource-aware.org/do/view/WG211/M8Visser&#039;&#039;&#039; Visser]]&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;17:00 Departure&amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;17:30&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Business Meeting&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;19:00&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Departure&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Departure&amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/tbody&amp;gt; &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:Weirich_M8_slides.pptx | Weirich_M8_slides.pptx]]&lt;br /&gt;
*[[Media:Dobson_M8_slides.pdf | Dobson_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Aktemur_M8_slides.pdf | Aktemur_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Michaelson_M8_slides.ppt | Michaelson_M8_slides.ppt]]&lt;br /&gt;
*[[Media:Hermann_M8_slides.pdf | Hermann_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Markhall_M8_slides.pdf | Markhall_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Schaefer_M8_slides.pdf | Schaefer_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Kaestner_M8_slides.pdf | Kaestner_M8_slides.pdf]]&lt;br /&gt;
*[[Media:Westbrook_M8_slides.ppt | Westbrook_M8_slides.ppt]]&lt;br /&gt;
*[[Media:Apel_M8_slides.pdf | Apel_M8_slides.pdf]]&lt;br /&gt;
*[[Media:VanWyk_M8_slides.pdf | VanWyk_M8_slides.pdf]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Schaeffer&amp;diff=289</id>
		<title>WG211/M8Schaeffer</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Schaeffer&amp;diff=289"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Software Product Lines=&lt;br /&gt;
==Ina Schaeffer==&lt;br /&gt;
&lt;br /&gt;
A software product line is a set of systems with well-defined commonalities and variabilities. Because of the huge number of possible configurations, it is crucial to guarantee critical system requirements. However, it is infeasible to formally verify each system in isolation. Instead, verification artifacts, i.e., properties and their proofs, should be reused in same way as other development artifacts.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;In this talk, I present the concept of proof reuse for the efficient verification of software product lines. The presented approach is based on delta-modeling, a general technique to capture feature-based variability of software product lines. A set of systems is represented by a core system and a set of system deltas modifying the core to create other systems. The delta-modeling structure can be exploited to determine the reuse potential for proofs of system properties. This will be illustrated using the KeY verification system for Java.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8ODonnell&amp;diff=287</id>
		<title>WG211/M8ODonnell</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8ODonnell&amp;diff=287"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Datapath and control correspond to language and program=&lt;br /&gt;
==John O&#039;Donnell==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Complex digital circuits are usually organised in two sections: datapath and control. Traditional circuit design methodology views these sections as just hardware systems, but they can also be understood using language terminology: the datapath provides a set of constructs, while the control expresses an algorithm in terms of those constructs. Thus a datapath defines a domain specific language, while the control is a program in that language. This correspondence can be exploited to clarify the design of processors.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Markall&amp;diff=285</id>
		<title>WG211/M8Markall</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Markall&amp;diff=285"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Generating optimised multiplatform finite element solvers from high-level representations=&lt;br /&gt;
==Graham Markall==&lt;br /&gt;
&lt;br /&gt;
High-performance implementations of finite element methods on different targets typically are implemented using different algorithms that provide the best fit for the target architecture. This presents a problem for application developers, as it complicates the task of maintaining multiple implementations for different targets. The Unified Form Language (UFL) from the FEniCS project can be used to address this issue as it permits a high-level, platform-independent specification of a method to be given. We show that optimal implementations of a finite element solver written for a Graphics Processing Unit and a multicore CPU require the use of different algorithms and data formats that are embodied by the UFL representation.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;UFL sources are converted to low-level implementations by a UFL compiler. We outline the operation of two implementations of prototype compilers for UFL that generate CUDA code. The first, a proof-of-concept, demonstrates the feasibility of generating low-level implementations for multiple targets. The second implementation, a work in progress, generates optimised code by making problem-dependent implementation choices. Future work involves targeting OpenCL and x86/SSE, as well as exploring algorithmic choices that depend upon problem parameters.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Laemmel&amp;diff=283</id>
		<title>WG211/M8Laemmel</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Laemmel&amp;diff=283"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Recovering Grammar Relationships for the Java Language Specification=&lt;br /&gt;
==Ralf L�mmel==&lt;br /&gt;
&lt;br /&gt;
We describe a refined method for grammar convergence, and we use it in a major study, where we recover the relationships between all the grammars that occur in the different versions of the Java Language Specification (JLS). The relationships are represented as grammar transformation chains that capture all accidental or intended differences between the JLS grammars. This method is mechanized and driven by nominal and structural differences between pairs of grammars that are subject to asymmetric, binary convergence steps. We present the underlying operator suite for grammar transformation in detail, and we illustrate the suite with many examples of transformations on the JLS grammars. We also describe the extraction effort, which was needed to make the JLS grammars amenable to automated processing. We include substantial metadata about the convergence process for the JLS so that the effort becomes reproducible and transparent.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Kaestner&amp;diff=281</id>
		<title>WG211/M8Kaestner</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Kaestner&amp;diff=281"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Virtual separation of concerns - Toward preprocessors 2.0=&lt;br /&gt;
==Christian Kaestner==&lt;br /&gt;
&lt;br /&gt;
Conditional compilation with preprocessors like cpp is a simple but effective means to implement variability. By annotating code fragments with emph #ifdef and emph #endif directives, different program variants with or without these fragments can be created, which can be used (among others) to implement software product lines. Although, preprocessors are frequently used in practice, they are often criticized for their negative effect on code quality and maintainability. In contrast to modularized implementations, for example using components or aspects, preprocessors neglect separation of concerns, are prone to introduce subtle errors, can entirely obfuscate the source code, and limit reuse. Our aim is to rehabilitate the preprocessor by showing how simple tool support can address these problems and emulate some benefits of modularized implementations. At the same time we emphasize unique benefits of preprocessors, like simplicity and language independence. Although we do not have a definitive answer on how to implement variability, we want highlight opportunities to improve preprocessors and encourage research toward novel preprocessor-based approaches.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Jefferson&amp;diff=279</id>
		<title>WG211/M8Jefferson</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Jefferson&amp;diff=279"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DoMinion : Generating Efficient Constraint Programming Solvers=&lt;br /&gt;
==Christopher Jefferson==&lt;br /&gt;
&lt;br /&gt;
Constraint Programming is a field where the efficiency of software tools is paramount. The Minion constraint solver was developed at St. Andrews and has been carefully tuned to have high performance over as many problems as possible.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;This talk will present preliminary research in our new solver, DoMinion, which aims to generate a custom-solver for a given problem, using a large range of component parts. Our aim is to allow as generic a system as possible, while ensuring the resulting solvers are as fast as custom-written ones.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Hermann&amp;diff=277</id>
		<title>WG211/M8Hermann</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Hermann&amp;diff=277"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=An embedded DSL for the parameterised specification, resource analysis and scheduling of systems composed of functional building blocks=&lt;br /&gt;
==Christoph Hermann==&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Hack&amp;diff=275</id>
		<title>WG211/M8Hack</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Hack&amp;diff=275"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=AnySL: Efficient and Portable Multi-Language Shading=&lt;br /&gt;
==Sebastian Hack==&lt;br /&gt;
&lt;br /&gt;
In graphics, shaders have become a key part of 3D scene descriptions -- especially since programmable GPUs also made them available for realtime graphics. While a number of different shading languages have been developed, none of them is broadly supported across the variety of rendering systems, making it hard, if not impossible, to create portable scene descriptions.&lt;br /&gt;
&lt;br /&gt;
AnySL attacks the issue from multiple directions: We compile shaders from different languages into a common, portable representation, which uses subroutine threaded code consisting of calls to a virtual shader interpreter. We further simplify the implementation of this virtual interpreter for a specific renderer by providing a generic shading library that implements common shading functionality in terms of abstract data types.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Glueck&amp;diff=273</id>
		<title>WG211/M8Glueck</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Glueck&amp;diff=273"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=An experiment with the fourth Futamura projection=&lt;br /&gt;
==Robert Glueck==&lt;br /&gt;
&lt;br /&gt;
We have experimentally validated the theoretical insight, that a compiler generator is a generating extension of a program specializer, by showing that an existing offline partial evaluator can perform the fourth Futamura projection. Specifically, an online and an offline partial evaluator for an imperative flowchart language were transformed into two new compiler generators by Romanenko&#039;s classical partial evaluator Unmix. The two partial evaluators are described, as is a novel recursive method for polyvariant specialization. These results strongly indicate that existing partial evaluation techniques can be put to work on several new applications.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Dobson&amp;diff=271</id>
		<title>WG211/M8Dobson</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Dobson&amp;diff=271"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Programming for adaptive sensor networks: back to the future=&lt;br /&gt;
==Simon Dobson==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;Programming for sensor networks sometimes seems to combine the entire history of computer science into one single challenge: fitting a modern, advanced, robust, adaptive distributed system onto platforms with the computational power of a mid-1980&#039;s home computer. If we&#039;re to make such networks behave correctly in the face of changing environments and tasks, we need radically to re-think how we develop code for them. Treating the network as a whole, and generating as much of the code as possible according to a higher-level description of its behaviour, seems like the only way forward.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Discuss&amp;diff=269</id>
		<title>WG211/M8Discuss</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Discuss&amp;diff=269"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Discussion on teaching program generation and DSLs=&lt;br /&gt;
==Ulrik Schultz==&lt;br /&gt;
&lt;br /&gt;
The goal of this discussion is to share experience regarding teaching program generation and domain-specific languages. The goal is to establish a shared repository of knowledge e.g. stored on the wiki. We will split into a number of smaller groups that will discuss specific topics, at the end each group will summarize their results and provide a complete account on the&amp;lt;br /&amp;gt;wiki. Suggested topics are&lt;br /&gt;
* successful approaches to teaching program generation or domain-specific languages (prepare a 5-minute account of what works well, or alternatively 1-minute account of what not to do if it did not work so well)&lt;br /&gt;
* motivating examples, both perspectives and exercises (e.g., code generation for Airbus is a perspective whereas GUI generation could be an exercise)&lt;br /&gt;
* literature list: seminal papers, useful textbooks, exciting papers&lt;br /&gt;
&lt;br /&gt;
Please email Ulrik (ups@mmmi.sdu.dk) if you have more suggestions.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Cook&amp;diff=267</id>
		<title>WG211/M8Cook</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Cook&amp;diff=267"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Online Partial Evaluation of Model Interpreters in Java=&lt;br /&gt;
==William Cook==&lt;br /&gt;
&lt;br /&gt;
I&#039;ll about my ongoing work to implement model compilers by partial evaluation of model interpreters. My team is now building a new online partial evaluator for Java. It is implemented in JastAdd and support supercompilation. I will discuss our current status and experiments applying the system to the ModelTalk and WebDSL modeling languages.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Brady&amp;diff=265</id>
		<title>WG211/M8Brady</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Brady&amp;diff=265"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Implementing Domain Specific Languages using Dependent Types and Partial Evaluation=&lt;br /&gt;
==Ed Brady==&lt;br /&gt;
&lt;br /&gt;
In this talk, I will describe the efficient implementation of domain specific languages (DSLs) in Idris, a dependently typed functional&amp;lt;br /&amp;gt;programming language. I will show how Idris can be used to implement a verified network transport protocol, as a DSL. I will present experimental evidence that partial evaluation of such programs yields efficient residual programs whose performance is competitive with their Java and C equivalents and which are also, through the use of dependent types, verifiably type- and resource-safe.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Apel&amp;diff=263</id>
		<title>WG211/M8Apel</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Apel&amp;diff=263"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Safe Generation in Feature-Oriented Software Development=&lt;br /&gt;
==Sven Apel==&lt;br /&gt;
&lt;br /&gt;
Feature-oriented software development (FOSD) is an emerging paradigm that provides a multitude of formalisms, methods, languages, and tools for building well-structured, customizable, and extensible software systems. The idea is to decompose software along its end-user visible features and to generate tailored software systems based on feature selections of users. The set of valid feature combinations of a domain is called a software product line.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;In this talk, I will give an overview of some recent developments in this field. Especially, I will concentrate on recent attempts to ensure correctness properties throughout the FOSD process. This includes work on type checking, formal verification, and feature interaction analysis of feature-oriented software product lines.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M8Aktemur&amp;diff=261</id>
		<title>WG211/M8Aktemur</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M8Aktemur&amp;diff=261"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Relating Staged Computation to the Record Calculus=&lt;br /&gt;
==Baris Aktemur==&lt;br /&gt;
&lt;br /&gt;
It has been previously shown that there is a close relation between record calculus and program generation (e.g. Lisp-like quasiquotations): A translation has been defined to convert staged expressions to record calculus expressions, and it has been shown that the call-by-value semantics of the staged and the record calculi are equivalent, modulo the translation and admin reductions. This relation has led to the result that a record calculus type system can be used to type-check staged expressions. In this work-in-progess, we investigate the relation further. The contributions are twofold: &amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;(1) We fine-tune the previously found relation between the two operational semantics, and obtain more precise results. In particular, we show that three kinds of admin reductions suffice, and these reductions can be applied exhaustively.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;(2) We define a reverse translation that converts record calculus expressions back to the staged calculus, allowing us to go back and forth between the two calculi. As a result, taking a step of evaluation in the staged calculus is equal to first translating the staged expression to a record expression, then taking a step of evaluation in the record calculus followed by exhaustive admin reductions, and finally translating the resulting record expression back to the staged calculus.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;We believe that this result is an important step towards reusing already-existing record calculus static analyses &lt;br /&gt;
----&lt;br /&gt;
 not only type checking &lt;br /&gt;
----&lt;br /&gt;
 to reason about staged expressions.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7Weirich2&amp;diff=259</id>
		<title>WG211/M7Weirich2</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7Weirich2&amp;diff=259"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;LNgen: Tool Support for Locally Nameless Representations&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Stephanie Weirich and Brian Aydemir&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abstract: Given the complexity of the metatheoretic reasoning involved&lt;br /&gt;
with current programming languages and their type systems, techniques&lt;br /&gt;
for mechanical formalization and checking of the metatheory have&lt;br /&gt;
received much recent attention.  In previous work [1], we advocated a&lt;br /&gt;
combination of locally nameless representation and cofinite&lt;br /&gt;
quantification as a lightweight style for carrying out such&lt;br /&gt;
formalizations in the Coq proof assistant.  As part of the&lt;br /&gt;
presentation of that methodology, we described a number of operations&lt;br /&gt;
associated with variable binding and listed a number of properties,&lt;br /&gt;
called ``infrastructure lemmas,&#039;&#039; about those operations that needed&lt;br /&gt;
to be shown. The proofs of these infrastructure lemmas are generally&lt;br /&gt;
straightforward, given a specification of the binding structure of the&lt;br /&gt;
language.&lt;br /&gt;
&lt;br /&gt;
In this work, we present LNgen [2], a prototype tool for automatically&lt;br /&gt;
generating these definitions, lemmas, and proofs from Ott-like&lt;br /&gt;
language specifications [3]. Furthermore, the tool also generates a&lt;br /&gt;
recursion scheme for defining functions over syntax, which was not&lt;br /&gt;
available in our previous work. We also show the soundness and&lt;br /&gt;
completeness of our tool&#039;s output. For untyped lambda terms, we prove&lt;br /&gt;
the adequacy of our representation with respect to a fully concrete&lt;br /&gt;
representation, and we argue that the representation is complete&lt;br /&gt;
----&lt;br /&gt;
that we generate the right set of lemmas&lt;br /&gt;
----&lt;br /&gt;
with respect to Gordon and&lt;br /&gt;
Melham&#039;s ``Five Axioms of Alpha-Conversion.&#039;&#039;  Finally, we claim that&lt;br /&gt;
our recursion scheme is simpler to work with than either Gordon and&lt;br /&gt;
Melham&#039;s recursion scheme or the recursion scheme of Nominal Logic.&lt;br /&gt;
&lt;br /&gt;
[1] Engineering Formal Metatheory, POPL &#039;08.  With Arthur Chargu�raud,&lt;br /&gt;
Benjamin C. Pierce, Randy Pollack, and Stephanie Weirich.&amp;lt;br&amp;gt;&lt;br /&gt;
[2] http://www.cis.upenn.edu/~baydemir/papers/lngen/&amp;lt;br&amp;gt;&lt;br /&gt;
[3] http://www.cl.cam.ac.uk/~pes20/ott/&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7Weirich1&amp;diff=257</id>
		<title>WG211/M7Weirich1</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7Weirich1&amp;diff=257"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Adventures in Dependently-Typed Metatheory&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Stephanie Weirich with Limin Jia, Jianzhou Zhao, Vilhelm Sj&amp;quot;oberg&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Work-in-progress report&lt;br /&gt;
&lt;br /&gt;
Dependent type systems allow users to include computations in&lt;br /&gt;
types, thereby allowing arbitrary expression of program properties.&lt;br /&gt;
Because types include computations, the type system of such&lt;br /&gt;
language must include a definition of program equivalence. For example,&lt;br /&gt;
the type checker might reduce computations to some normal form to&lt;br /&gt;
determine if they are the same. However, there are many ways to define&lt;br /&gt;
equivalence for programs, and if we change our mind about what&lt;br /&gt;
sort of equivalence to use, we must do all of the metatheory of&lt;br /&gt;
the dependently-typed language over. For example, some definitions&lt;br /&gt;
of equivalence may choose to ignore computationally-irrelevant terms,&lt;br /&gt;
others may or may not be decidable if the computation language&lt;br /&gt;
includes non-termination.&lt;br /&gt;
&lt;br /&gt;
In this talk, I will report on initial progress to define a language&lt;br /&gt;
where the definition of equivalence is held abstract. Instead, we seek&lt;br /&gt;
to determine the properties of the equivalence relation that are&lt;br /&gt;
necessary to show that the language is type sound.&lt;br /&gt;
&lt;br /&gt;
* [[Media:211-deptyp.pdf | 211-deptyp.pdf ]]: Slides&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:211-deptyp.pdf | 211-deptyp.pdf]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7VanWyk&amp;diff=255</id>
		<title>WG211/M7VanWyk</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7VanWyk&amp;diff=255"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Verifiable Composition of Grammars&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;August Schwerdfeger and Eric Van Wyk&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Abstract:&lt;br /&gt;
&lt;br /&gt;
One challenge in extensible languages arises in the composition of the&lt;br /&gt;
concrete syntax specifications for a host language and a collection of&lt;br /&gt;
(domain-specific) language extensions.  For this talk, these&lt;br /&gt;
specifications consist, as is to be expected, of context-free grammars&lt;br /&gt;
with each terminal symbol mapped to a regular expression, from which a&lt;br /&gt;
slightly-modified LALR(1) parser and context-aware scanner are&lt;br /&gt;
generated.  Traditionally, conflicts are detected in the parse-table&lt;br /&gt;
of the composed grammar when it is constructed, but this comes too&lt;br /&gt;
late as it may be a non-expert programmer that directs the language&lt;br /&gt;
tools to compose an eclectic set of language extensions chosen by the&lt;br /&gt;
programmer for a particular task.&lt;br /&gt;
&lt;br /&gt;
In this talk we discuss a modular analysis that is performed&lt;br /&gt;
independently by each extension designer on her extension (composed&lt;br /&gt;
alone with the host language).  If each extension passes this modular&lt;br /&gt;
analysis, then the language composed later by the non-expert&lt;br /&gt;
programmer will compile with no conflicts or lexical ambiguities.&lt;br /&gt;
Thus, extension writers can verify that their extension will safely&lt;br /&gt;
compose with others and, if not, fix the specification so that it&lt;br /&gt;
will.  This is possible due to the context-aware scanner&#039;s lexical&lt;br /&gt;
disambiguation and a set of reasonable restrictions limiting the sort&lt;br /&gt;
of constructs that can be introduced by a language extension.  The&lt;br /&gt;
restrictions ensure that the states in the parse table can be&lt;br /&gt;
partitioned so that each state can be attributed to the host language&lt;br /&gt;
or a single language extension.&lt;br /&gt;
&lt;br /&gt;
* [[Media:vanwyk-wg09.pdf | vanwyk-wg09.pdf ]]: Slides&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:vanwyk-wg09.pdf | vanwyk-wg09.pdf]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7Taha&amp;diff=253</id>
		<title>WG211/M7Taha</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7Taha&amp;diff=253"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Java Mint&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Walid Taha&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Media:taha-wg09.ppt | taha-wg09.ppt ]]: Slides&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:taha-wg09.ppt | taha-wg09.ppt]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7Stump&amp;diff=251</id>
		<title>WG211/M7Stump</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7Stump&amp;diff=251"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Purifying Natural Deduction Using Sequent Calculus&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Aaron Stump&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Curry-Howard isomorphism has proved a very fruitful&lt;br /&gt;
connection between programming languages and logic for the past 30&lt;br /&gt;
years or so.  Proofs in intuitionistic natural deduction are&lt;br /&gt;
identified with terms in typed lambda calculus, and various notions of&lt;br /&gt;
reduction and equivalence of terms can then be exchanged between the&lt;br /&gt;
logical and computational views.  The case of disjunction (sum types)&lt;br /&gt;
and existentials has not worked out so cleanly, however, requiring&lt;br /&gt;
so-called commuting conversions.  In this talk, I show how to remove&lt;br /&gt;
the difficulties for disjunctions and existentials, by introducing new&lt;br /&gt;
lambda calculus terms.  These terms arise from a new and more direct&lt;br /&gt;
term assignment to proofs in sequent calculus.  The result is a type&lt;br /&gt;
system for which we can easily adapt Girard&#039;s reducibility candidates&lt;br /&gt;
to show strong normalization, and for which notions of extensionality&lt;br /&gt;
for sum types and existentials become natural to state and accomodate&lt;br /&gt;
in our notions of term reduction and equivalence.  Both these results&lt;br /&gt;
have been problematic with the traditional terms for disjunctions and&lt;br /&gt;
existentials.&lt;br /&gt;
&lt;br /&gt;
* [[Media:stump-wg09.pdf | stump-wg09.pdf ]]: Slides&lt;br /&gt;
&lt;br /&gt;
==File Attachments== &lt;br /&gt;
&lt;br /&gt;
*[[Media:stump-wg09.pdf | stump-wg09.pdf]]&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>http://mw.hh.se/wg211/index.php?title=WG211/M7Smith2&amp;diff=249</id>
		<title>WG211/M7Smith2</title>
		<link rel="alternate" type="text/html" href="http://mw.hh.se/wg211/index.php?title=WG211/M7Smith2&amp;diff=249"/>
		<updated>2011-12-12T10:06:28Z</updated>

		<summary type="html">&lt;p&gt;Admin: 1 revision&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:WG211]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Automated Synthesis of Propositional Satisfiability Solvers&amp;lt;/h1&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;Doug Smith&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last year we carried out automated derivations of several&lt;br /&gt;
SAT solvers using Kestrel&#039;s Specware system.  We were able to&lt;br /&gt;
recapitulate many of the key design features of modern DPLL SAT&lt;br /&gt;
solvers using abstract and reusable design concepts: the Global Search&lt;br /&gt;
and Constraint Propagation algorithm paradigms, expression&lt;br /&gt;
simplification, finite differencing, and datatype refinement.  I&#039;ll&lt;br /&gt;
survey two forms of knowledge needed to derive these SAT solvers: (1)&lt;br /&gt;
General and domain-specific laws needed to reason about the domain of&lt;br /&gt;
propositional satisfiability; (2) Design knowledge, including abstract&lt;br /&gt;
algorithmic, data structuring, and optimization concepts.  From a&lt;br /&gt;
formal specification of the SAT problem, these two forms of knowledge&lt;br /&gt;
are combined via a metaprogram (or derivation script) that specifies&lt;br /&gt;
how to calculate the code.  Specware automatically carries out the&lt;br /&gt;
derivation script, resulting in fast, correct executable code.&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>