International Summer School on Metaprogramming
About
Metaprogramming is an approach to improving programs by treating program fragments (such as expressions or types) as values that the program can manipulate. Metaprogramming comes in various forms, including
-
staged programming: treating expressions as program values.
The execution of a staged program is spread over several phases, with each stage using the available data to generate specialized code.
Staged programming has a wide variety of applications — numeric computations, parsing, database queries, generic programming, domain specific languages, and many more. Precompiling the staged code can have dramatic performance improvements, in some cases an order of magnitude or more.
-
generic programming: treating types as program values.
Generic programming can improve code flexibility, allowing to give a single definition of a function that operates in a predictable (but not uniform) way on many different types.
Generic programming techniques can be used to define a wide variety of functions, including traversals, comparisons, pretty printers, serialization functions, and many more.
The goal of the summer school is to explore the state-of-the art in metaprogramming and its applications, covering both theory and practice.
Registration
See the application page for details.
Application timetable
- 30 June: Application and reference letters deadline.
- 10 July: Notification of acceptance.
- 24 July: Registration deadline.
- 8 August: Summer school.
Lecturers
Philip Wadler is Professor of Theoretical Computer Science at the University of Edinburgh. He is an ACM Fellow and a Fellow of the Royal Society of Edinburgh, past chair of ACM SIGPLAN, past holder of a Royal Society-Wolfson Research Merit Fellowship, and a winner of the POPL Most Influential Paper Award. Previously, he worked or studied at Stanford, Xerox Parc, CMU, Oxford, Chalmers, Glasgow, Bell Labs, and Avaya Labs, and visited as a guest professor in Copenhagen, Sydney, and Paris. He has an h-index of 60, with more than 20,000 citations to his work according to Google Scholar. He contributed to the designs of Haskell, Java, and XQuery, and is a co-author of Introduction to Functional Programming (Prentice Hall, 1988), XQuery from the Experts (Addison Wesley, 2004) and Generics and Collections in Java (O'Reilly, 2006). He has delivered invited talks in locations ranging from Aizu to Zurich.
Sam Lindley is a senior research fellow at the University of Edinburgh. He designs and implements abstractions for functional programming. His current research centres on session types, handlers for algebraic effects, and techniques for embedding domain-specific languages.
Shayan Najd is a Google Fellow, and a member of the Laboratory for Foundations of Computer Science (LFCS), at the University of Edinburgh. He is currently writing up his PhD thesis on formal characterisation of techniques for embedding domain-specific languages. As his PhD research, he has developed, with his supervisors, the notion of Quoted Domain-Specific Languages and Embedding-by-Normalisation, topics he presented and lectured in various events, from Imperial College in London to DSLDI Summer School in Lausanne. He has been an active member of the programming language research community at least since 2010, where he is sometimes referred to as "the purity priest" (or, "functional fundamentalist" depending on the point of view).
Simon Peyton Jones, MA, FACM, FBCS, CEng, graduated from Trinity College Cambridge in 1980. After two years in industry, he spent seven years as a lecturer at University College London, and nine years as a professor at Glasgow University, before moving to Microsoft Research (Cambridge) in 1998.
Simon's main research interest is in functional programming languages, their implementation, and their application. He was a key contributor to the design of the now-standard functional language Haskell, and is the lead designer of the widely-used Glasgow Haskell Compiler (GHC). He has written two textbooks about the implementation of functional languages.
More generally, Simon is interested in language design, rich type systems, compiler technology, code generation, runtime systems, virtual machines, and garbage collection. He is particularly motivated by direct use of principled theory to practical language design and implementation -- that is one reason he loves functional programming so much.
Simon is also chair of Computing at School, the grass-roots organisation that was at the epicentre of the 2014 reform of the English computing curriculum.
Simon's home page is at http://research.microsoft.com/~simonpj.
Oleg Kiselyov is an Assistant Professor at the Graduate School of Information Sciences at Tohoku University, Japan. More information is on the web site http://okmij.org/ftp/
Laurence Tratt is a Reader at King's College London, where he leads the Software Development Team, and an EPSRC Fellow. He designed the Converge programming language. More details at http://tratt.net/laurie/.
Jeremy Yallop is a member of technical staff at Docker. He has interests in functional and multi-stage programming, and teaches a course on Advanced Functional Programming at the University of Cambridge.
Martin Berger is a lecturer in Informatics at the University of Sussex. His research focuses on typing systems and program logics for concurrent programming. He is also interested in compilers, meta-programming and models of timed computation. He graduated from Technical University Berlin. Martin worked in industry, developing network management software before completing his PhD at Imperial College London.
José Pedro Magalhães is currently a developer at Standard Chartered Bank. He is also co-founder at Chordify, responsible for the functional back-end.
Before joining Standard Chartered, José Pedro was a postdoctoral research assistant in the Programming Languages group at the Department of Computer Science of the University of Oxford, working on the Unifying Theories of Generic Programming project.
Chris is a Research Manager at the Virtual Machine Group in Oracle Labs, where he leads the work to implement Ruby using the next generation of Java Virtual Machine technology, and other projects.
Before this he completed a PhD at the University of Manchester under the supervision of Doctor Mikel Luján, where he researched programming languages and irregular parallelism. Before that, he completed an MEng at the University of Bristol on languages with mutable syntax and semantics.
In his spare time he used to develop an award winning medical app that is the first app regulated as a medical device in the UK, and ran a consultancy to help clients such as the NHS to develop revolutionary medical software.
Dates and venues
School: 8th to 12th August 2015, Robinson College, Cambridge
Banquet: 11th August 2016. (Details to follow)
Prerequisites
The school is aimed at graduate students in programming languages and related areas, but is open to researchers, practitioners and strong masters students with the support of a supervisor. Some experience of typed functional programming in Haskell, OCaml, Scala, or a similar language will be assumed.Costs
Thanks to generous industrial sponsorship, we are able to offer places with significantly reduced fees. There are three categories of fees, all of which cover registration, accommodation in Robinson College from Monday to Friday, and all meals and refreshments.
Participants who can pay the full fees will help allocate more fully-subsidised slots to less financially-able students. Your category of fees will not have any direct bearing on your acceptance into the school, but could affect how many slots we can offer.
- The full fee is £800.
- The standard (partly-subsidised) fee is £295.
- We also have a limited number of fully-subsidised places available for a nominal registration fee of £50.
We will notify you of your fee upon acceptance.
Further information
For questions relating to the material of the school, please contact Jeremy Yallop and Ohad Kammar.
For administrative questions, please contact Gemma Gordon.