The Programming Languages Group of Ghent University (UGent) invites applicants for a PhD position on the project Reasoning about Coroutines under the direction of Tom Schrijvers. The project concerns reasoning techniques (like type systems and program analysis) for coroutines in its many forms (like delimited continuations and effect handlers). It is conducted in collaboration with the declarative languages group of KU Leuven university and our international partners.
We seek applicants at an international level of excellence. As a successful applicant, you have a master degree in Computer Science or equivalent. Ideally, you also have a strong, documented interest in doing research. Strong problem-solving and programming skills are essential. Prior knowledge of functional programming, logic programming, type systems or program analysis are an advantage.
The PhD position is for 4 years and starts between January and October 2014. The position is fully funded by the Fund for Scientific Research Flanders (FWO). The salary is compatible with other Belgian PhD rates and among the better ones in Europe and abroad.
You will become part of UGent's dynamic and growing Programming Languages Group. UGent is one of the major universities in the Dutch-speaking region of Europe. It distinguishes itself as a socially committed and pluralistic university in a broad international perspective. Our university is located in the beautiful city of Ghent, which is one of Europe’s greatest discoveries, according to Lonely Planet. For more information on life as a PhD researcher at UGent see here.
Please direct your inquiries and applications by e-mail to Tom Schrijvers, principal investigator on this project.
To apply, send as soon as possible:
Coroutines are a core programming languages concept that dates back at least as far as the early 1960's. In essence, a coroutine is a special kind of routine that can, in addition to terminating normally, also suspend its execution temporarily and later resume again. The interaction between coroutines differs significantly from that of conventional procedures. There is no hierarchical organization like that of caller and callee; both reside at the same level. Hence, we speak of side-ways information passing (SIP).
In the last 10-15 years, the programming language community has become more and more convinced of the advantages of coroutines. Nowadays they are pervasive in all high level programming languages and libraries: language-level iterators in Python and Ruby, the fundamental lazy evaluation strategy of Haskell, shell pipes and streaming libraries, the event-driven programming paradigm, futures in Java and many other languages, etc.
The great flexibility of coroutines is also the key problem when reasoning about them. Traditional reasoning approaches simply ignore the SIP that is the main purpose of coroutines. As a consequence, programmers get uselessly weak analysis feedback and no compiler optimizations. This creates an undeserved aversion for coroutines in favor of the conventional and less flexible top-down programming style. Better analysis techniques for coroutines are urgently needed. This is the main purpose of this project.