|Time||Title / Speaker||Abstract|
|13:00||It was finally Christmas: Perl 6 is here
University of Glasgow
|Perl 6, the successor of the influential and divisive Perl programming language, has finally been released, after 15 years of development. In this talk I would like to introduce this new language focusing on some of its cutting-edge features such as gradual typing and roles, grammars and rules, advanced list operations and laziness, the meta-object protocol, multi-dispatch and promises.|
|Developing a Haskell MOOC at Glasgow
Jeremy Singer & Wim Vanderbauwhede
University of Glasgow
|The Massive Open Online Course (MOOC) is the latest trend in higher education, exposing university learning and teaching to anyone on the net. At Glasgow, we are developing a MOOC to teach Haskell to non-functional (!) programmers. Our #haskellmooc is due to launch in September 2016 on the FutureLearn platform. In this talk we will share some background motivation and let you critique our learning materials.|
|14:40||Complements Witness Consistency
University of Edinburgh
In recent years, especially in the work of Benjamin Pierce and his coworkers on
lenses, the focus of the PL community has been on extensional, state-based
formalisms to describe bidirectional transformations (bx). More recently,
attention has turned to incorporating intensional information about edits (typically
based on monoid actions), or more generally, deltas (typically based on categories),
describing how models are updated.
Pervasive in both the conceptual modelling, and the mathematics, of varieties of such bx, is the role played by the complement, which generalises the `constant complement' case of the view-update problem in databases. Complements typically reify, or correspond to, data which is abstracted away by passing from a source to a view.
In this talk, I'll present an alternative perspective, which has perhaps been implicit in the lens literature, but not, to our knowledge, previously made explicit anywhere: namely that elements of the complement are witnesses to the consistency relation maintained by the transformation. We illustrate this idea with examples drawn from the bx literature, especially that on varieties of lenses.
|Adding Profiling and Code Coverage to GAP
University of St. Andrews
GAP is a dynamically typed language designed for discrete algebra, in particular
computational group theory. GAP has several unique features, most notably the
types of variables evolve during the execution of programs.
Recently a new project, known as HPC-GAP, is working on moving GAP into a multi-core world, while still allowing the large body of code written in GAP to continue to function with no changes, and be parallelised with minimal changes. This revealed that GAP's current testing framework is insufficient.
This talk will give an overview of GAP, how we parallelised GAP, and how we needed profiling and code coverage to achieve parallelisation.
|16:20||Compositional Compilation for Sparse, Irregular Data Parallelism
University of Edinburgh
Contemporary GPU architectures are heavily biased towards the execution of
predictably regular data parallelism, while many real world application domains
are based around data structures which are naturally sparse and irregular. This
makes efficiently parallelising and executing sparse applications on GPUs
difficult, as programmers must resort to low level, domain specific
optimisations which are often non-portable, and difficult to express in current
higher level languages.
In this talk, I will discuss our efforts to enable efficient high level sparse and irregular operations by embedding them in the space of high level dense data parallel operations. As part of this, I'll discuss how we implemented a specific sparse structure and algorithm within a regular pattern based programming framework, the correlations we found between good implementation choices and input irregularity and some promising preliminary performance results.
|An Interference Controlled Language for Parallel Imperative Programming
University of Strathclyde
Programs have two conflicting roles. In a single artefact, the
programmer must simultaneously express what is to be computed, and also
how the hardware resources must be marshalled to accomplish this task.
As a gross generalisation, functional languages are well-suited to the
former, while imperative languages excel at explicit control of resources.
I will talk about a programming language that combines functional and imperative programming orthogonally to gain the benefits of both, making use of a linear type system to ensure non-interference between program phrases, enabling parallelisation.. This language is based on John Reynolds' Syntactic Control of Interference variant of Idealised Algol, extended with features for array programming.
This is ongoing work with Michel Steuwer and Christophe Dubach of the University of Edinburgh.