Programming Languages
and Tools Lab

Since its foundation in 2012 by Dmitri Boulytchev, the laboratory has been carrying out scientific research in the area of programming language theory, with the main focus on the following topics:

  • Relational and logic programming
  • Weak memory models and concurrency
  • Meta-programming, meta-computations, and partial evaluation
  • Programming language semantics and types
  • Certified programming and mechanized proofs
  • Functional programming
  • Formal languages theory

The other important focus of the laboratory is education. The laboratory, which is open to both undergraduates and graduate students, gets students involved in research projects and provides an opportunity to join related PhD programs. Also, the laboratory members have been designing, lecturing, and assisting courses on the following themes:

  • Compiler engineering
  • Meta-computations
  • Formal languages
  • Programming language semantics
  • Introduction to mechanized proof engineering in Coq

Additionally, the laboratory carries out the following activities:

  • A weekly seminar on programming language theory and practice.
  • Open free courses on topics relevant to the lab’s research interests.
  • Summer internships at JetBrains — they provide an opportunity for students to work at the company for 1-3 months.
  • An annual mini-conference. At this event, laboratory students present the results of their term papers, bachelor’s and master’s theses, and summer internships.
  • A seminar on reading and writing papers, where participants develop specific skills required for reading, analyzing, and writing research papers.

New members are always welcome at the laboratory. The best way to join the group is to attend either our weekly seminar or our open courses and then choose one of the available research topics to pursue.



Daniil Berezun

Patching OCaml and ML-like languages

This project aims to bring new features to ML-like languages and produce patches fixing ad-hoc or poorly designed language features, such as polymorphic variants, active patterns, and modules.

Daniil Berezun


The aim of this project is to research and practically apply metacomputation techniques, such as partial evaluation, supercompilation, and distillation.


Daniil Berezun

Semi-local Algorithms

The aim of this project is to develop and practically apply semi-local LCS and SA algorithms.


The lab seminars take place every week and they are open to everyone. We talk about classic and recent research results of programming languages and language tools in the seminars.

Please join our meetup group to stay informed about upcoming sessions.

We recommend our seminars to curators, graduate students and all students of laboratories.

Announcements Archives

Seasonal schools

The idea behind the summer/winter school program is to bring together motivated students, post-graduates, and software developers with prominent world-class researchers. One particular topic is studied at each school, which allows the participants to immerse in intensive study and complete an extensive course, which could easily be a semester-long, in just five days. The topics are selected to be on a cutting-edge in the area of programming languages, compilers, development of language tools.

Group Members

Anton Podkopaev
Head of Research Lab
Daniil Berezun
Head of Research Group
Evgenii Moiseenko
Ekaterina Verbitskaia

Past Members

Dmitry Boulytchev
Semyon Grigorev
Dmitry Mordvinov
Ekaterina Shemetova