Interviews of PhD Student Applicants

Preliminary schedule for Feb. 22nd:


Talks will be given in the EDIT room. Each talk will last 20 minutes, and will be followed by 5 minutes of questions from the interviewing committee and the general audience.

9.00 "A Domain Specific Language as a campaign tool for large online retailers", Magnus Kronqvist

As dependency on software is rising, and errors can have disastrous consequences, it is increasingly important to be able to analyze the correctness of software. There is a dilemma in the reality that the individuals who can make those judgements, the domain experts, are not the same people writing the code. When logic is expressed in a general-purpose programming language, it is easily burrowed in details not relevant to the application domain.

A DSL, or Domain Specific Language, if well-designed, can on the other hand capture precisely the application domain, no more and no less, and thus provide a better abstraction model for the domain expert to verify the behavioral characteristic of the software.

In my presentation, I will discuss such a DSL, created as a campaign management tool for the fictitious large scale website, Tailorama. This language offers a marketer the ability to run and manipulate online campaigns, perhaps as observed from shopping habits, and to freely express their intentions directly in the application domain. This can be done through general campaigns discounting all swimwear as the end of summer approaches, or specifically through discounting all running clothes to New Yorkers prior to the annual marathon.

9.25 "Syngen the new way to generate source code", Evgeny Kotelnikov

Source code generation is an essential part of wide range of applications, including transcompilers, parser generators and preprocessors. The common technology based on code templates is often cumbersome and error-prone. This talk presents Syngen, an automatic tool, written in Scheme, designed to produce frameworks for building syntactically correct fragments of source code.

9.50 Break

10.00 "Generalizing Semantic Bidirectionalization and Tracking Generated Expressions", Shayan Najd Javadipour

I am going to present the research that I have done as a part of my Master's thesis. The thesis was done in collaboration with Dr. Wang (the thesis supervisor), Prof. Sheeran (the thesis examiner) and Dr. Axelsson. The main focus of this talk would be on the practical aspects of bidirectionalization.

Thesis Abstract: In programming, there are often pairs of functions running in opposite directions: the domain of one is the codomain of the other. Zipping and unzipping, compressing and decompressing, serializing and deserializing, parsing and pretty printing are all instances of such pairs. Their functionalities are so closely related that it is usually possible to derive one from the implementation of the other. Bidirectionalization techniques address this concern. They have applications in a wide range of areas including software engineering, databases and programming languages. This thesis studies some of the theoretical and practical aspects of bidirectionalization.

As the theoretical part of this thesis, we generalize semantic bidirectionalization, an existing bidirectionalization technique . Our generalized algorithm scales well and lifts some of the restrictions set by the original algorithm.

As the practical part of this thesis, we focus on the problem of tracking expressions in the low-level generated code to their origin at the high-level code. Feldspar is a relatively complex domain-specific language embedded inside Haskell which is translated into C code. We apply the semantic bidirectionalization technique to enhance Feldspar with the ability to track the expressions in the low-level generated C code all the way back to their origins at the high-level Haskell code.

10.25 "Fixing the Web: A Solution Made in Haste", Anton Ekblad

Owing to its platform independence, ubiquity and ease of deployment, the web browser is quickly becoming not only a platform for large-scale application development, but the platform for mainstream application development. Unfortunately the lingua franca of the web, Javascript, suffers from poor modularity and composability. In addition, its complete absence of type safety and its overly verbose programming model are also problematic. Meanwhile, the Haskell language has been successfully applied to complex problems in a wide range of fields, from hardware verification to high performance financial applications and large-scale server side web development. In my talk I propose Haskell as an alternative to Javascript for the development of web applications by introducing Haste, a Haskell compiler with Javascript and the web browser as its target platform. Combined with its associated FRP-influenced standard library, Haste allows developers to create interactive web applications using a simple, declarative syntax. By using the GHC compiler as its base, Haste supports the full range of GHC extensions to the Haskell language, enabling developers to reuse their previously written Haskell code, and manages to produce code that is both lean and efficient, even compared to hand-written Javascript.

10.50 Break

11.00 "Resuscitating Research Packs", Bryan Richter

I once worked on a system called "research pack generation" at a company called Starmine. When I came on to the system, there were three research packs being generated, and that number was going to triple. Unfortunately, the system was implemented in Starmine's "dark ages", held together with duct tape and positive thinking. It quickly became apparent that it would not scale to the new requirements.

What I'm going to talk about is the journey through understanding the system and its environment, finding answers to why it couldn't scale, and implementing solutions. I'll hit three main problems: (1) the system was unnecessarily burdensome to QA, (2) it was just too darn slow, and (3) adding research packs was a mystical process that did not inspire confidence. I'll also give a little background to motivate the system's existence.

On the face of it, the system is relatively straightforward, so it was interesting (once it was all done) to look back and see all the hidden complexity. I'll try to share some of that experience.

11.25 "A Statically Typed Non-Strict Functional Language for Erlang-like Distributed Programming", David Castro

There are few practical approaches for distributed programming in Haskell. Glasgow Distributed Haskell (GdH), the Eden parallel functional language and the more recent Cloud Haskell are some of the available alternatives. Arguably, a more successful alternative to Haskell for implementing distributed systems is the Erlang programming language. However, Erlang lacks some desirable characteristics of Haskell, like type safety, purity and non-strict semantics.

In this talk, a compiler and virtual machine for a statically typed non-strict distributed functional programming language will be presented. The main idea behind this work is to implement a model of distributed computing inspired by Erlang (the Actor Model) in a Haskell-like language. Unlike Cloud Haskell, which also draws inspiration from Erlang, we provide built in support for serialization of closures, fault tolerance (supervision trees) and other distributed primitives.


12.00 to 13.30


There will be two groups of interviewers. Group A (Sheeran, ...) will be in Mary's room; group B (TBD) will be in either of the group rooms 5128 or 4128. Room 5128 is booked up to 16.00 and room 4128 is booked from 15.00.

Group A:

  • 13.30 Magnus Kronqvist
  • 14.00 Evgeny Kotelnikov
  • 14.30 Shayan Najd Javadipour
  • 15.00 Anton Ekblad
  • 15.30 Bryan Richter
  • 16.00 David Castro

Group B:

  • 13.30 Anton Ekblad
  • 14.00 Bryan Richter
  • 14.30 David Castro
  • 15.00 Magnus Kronqvist
  • 15.30 Evgeny Kotelnikov
  • 16.00 Shayan Najd Javadipour

Fika and Deliberation

At 16.30 applicants are invited to the lunch room (7th floor) for fika with PhD students of the FP group.

In parallel, the interviewers will deliberate. Group A is invited to move to 4128 when they are ready to share their views with the other group.

Room 4128 is booked until 18.00.