Contact information Research interests Education

Ilya Sergey
C URRICULUM V ITÆ
May 26, 2015
Contact information
IMDEA Software Institute
Campus Montegancedo
´ Madrid, Spain
28223 Pozuelo de Alarcon,
E-mail:
ilya.sergey@imdea.org
Homepage: http://ilyasergey.net
Office:
+34-91-101-2202 Ext. 4126
Research interests
Design and implementation of programming languages, software verification, concurrency, certified
programming, type theory, static program analysis, abstract interpretation, functional programming.
Education
KU Leuven, Leuven, Belgium. November 2008–November 2012.
Ph.D. in Computer Science, November 2012.
• Thesis title: Operational Aspects of Type Systems
• Advisor: prof. Dave Clarke
• Area of study: Programming languages and type systems
Saint Petersburg State University, Saint Petersburg, Russia. 2003–2008.
M.Sc. in mathematics and computer science, Dept. of Mathematics and Mechanics, GPA 5.0/5.0,
June 2008.
• Thesis title: Extraction of musical notation from a musical signal
• Advisor: prof. Andrey E. Barabanov
• Area of study: Signal processing
Saint Petersburg Lyceum 239, Saint Petersburg, Russia. 2001–2003.
High school degree with specialization in physics and mathematics.
Employment
IMDEA Software Institute, Madrid, Spain
Post-doctoral Researcher. Started December 2012.
• Developing models and logics for reasoning about concurrent programs;
Microsoft Research, Cambridge, UK
Research Intern, Programming Principles and Tools group. July–September 2012.
• Refactoring and formalizing the demand analyser in Glasgow Haskell Compiler;
• Developing and formalizing a modular cardinality analysis for Haskell;
JetBrains Inc., Saint Petersburg, Russia
Software Engineer, IntelliJ IDEA team. March 2007–December 2012 (off-site since November 2008).
• Front-end compiler implementation for IDE support of Scala, Groovy, Clojure;
• Implementation of program analyses and refactorings;
Intern, IntelliJ IDEA team. September 2006–March 2007.
• Scala front-end compiler implementation for IDE support;
Page 1 of 6
OpenWay, Saint Petersburg, Russia
Summer School Intern. June 2006–September 2006
• Developed a Java ME-powered client for mobile banking;
Informational Systems for Business, Saint Petersburg, Russia
Software Engineer. August 2005–June 2006.
• Developed a Java EE-powered database audit system;
• Maintained a PHP-powered web service for futures market;
• Oracle 9i PL/SQL scripting;
Publications and manuscripts
Journal articles
1. Pushdown Flow Analysis with Abstract Garbage Collection
J. Ian Johnson, Ilya Sergey, Christopher Earl, Matthew Might and David Van Horn
Journal of Functional Programming, volume 24, issue 2-3, pages 218–283, May 2014.
2. A correspondence between type checking via reduction and type checking via evaluation
Ilya Sergey and Dave Clarke
Information Processing Letters, volume 112, issue 1-2, pages 13–20, January 2012.
Conference articles
1. Mechanized Verification of Fine-grained Concurrent Programs
Ilya Sergey, Aleksandar Nanevski and Anindya Banerjee
36th ACM SIGPLAN International Conference on Programming Language Design and Implementation
(PLDI 2015), 58/303 ≈ 19% accepted.
2. Specifying and Verifying Concurrent Algorithms with Histories and Subjectivity
Ilya Sergey, Aleksandar Nanevski and Anindya Banerjee
24th European Symposium on Programming (ESOP 2015), 33/115 ≈ 29% accepted.
3. Communicating State Transition Systems for Fine-Grained Concurrent Resources
Aleksandar Nanevski, Ruy Ley-Wild, Ilya Sergey and Germ´an Andr´es Delbianco
23rd European Symposium on Programming (ESOP 2014), 27/109 ≈ 25% accepted.
4. Modular, Higher-Order Cardinality Analysis in Theory and Practice
Ilya Sergey, Dimitrios Vytiniotis and Simon Peyton Jones
41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL 2014),
51/220 ≈ 23% accepted.
5. Monadic Abstract Interpreters
Ilya Sergey, Dominique Devriese, Matthew Might, Jan Midtgaard, David Darais, Dave Clarke
and Frank Piessens
34th ACM SIGPLAN International Conference on Programming Language Design and Implementation
(PLDI 2013), 46/267 ≈ 17% accepted.
6. Introspective Pushdown Analysis of Higher-Order Programs
Chrisopher Earl, Ilya Sergey, Matthew Might and David Van Horn
17th ACM SIGPLAN International Conference on Functional Programming
(ICFP 2012), 32/88 ≈ 36% accepted.
7. Calculating Graph Algorithms for Dominance and Shortest Path
Ilya Sergey, Jan Midtgaard and Dave Clarke
11th International Conference on Mathematics of Program Construction (MPC 2012), 13/27 ≈ 48%
accepted.
Ilya Sergey
Curriculum Vitæ
Page 2 of 6
8. Gradual Ownership Types
Ilya Sergey and Dave Clarke
21st European Symposium on Programming (ESOP 2012), 28/88 ≈ 32% accepted.
Peer-reviewed workshop articles
1. Deriving Interpretations of the Gradually-Typed Lambda Calculus
´
Alvaro
Garc´ıa P´erez, Pablo Nogueira and Ilya Sergey
ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation (PEPM 2014)
2. Fixing Idioms – A recursion primitive for applicative DSLs
Dominique Devriese, Ilya Sergey, Dave Clarke and Frank Piessens
ACM SIGPLAN 2013 Workshop on Partial Evaluation and Program Manipulation (PEPM 2013)
3. Towards Gradual Ownership Types
Ilya Sergey and Dave Clarke
International Workshop on Aliasing, Confinement and Ownership (IWACO 2011)
4. From type checking by recursive descent to type checking with an abstract machine
Ilya Sergey and Dave Clarke
Eleventh Workshop on Language Descriptions, Tools and Applications (LDTA 2011)
5. Automatic refactorings for Scala programs
Ilya Sergey, Dave Clarke and Alexander Podkhalyuzin
The First Scala Workshop - Scala Days 2010
6. A semantics for context-oriented programming with layers
Dave Clarke and Ilya Sergey
International Workshop on Context-Oriented Programming (COP 2009)
Book chapters
1. Ownership Types: A Survey
¨
Dave Clarke, Johan Ostlund,
Ilya Sergey and Tobias Wrigstad.
Aliasing in Object-Oriented Programming: Types, Analysis and Verification, Springer, 2013.
Lecture notes
1. Programs and Proofs: Mechanizing Mathematics with Dependent Types
Ilya Sergey
Lecture notes with exercises, available at http://ilyasergey.net/pnp.
Technical reports
1. A correspondence between type checking via reduction and type checking via evaluation. Accompanying code overview. Ilya Sergey and Dave Clarke. CW Reports, volume CW617, KU Leuven, 2012.
2. Dominance Analysis via Ownership Types and Abstract Interpretation. Ilya Sergey and Dave
Clarke. CW Reports, volume CW615, KU Leuven, 2011.
3. Gradual Ownership Types. Ilya Sergey and Dave Clarke. CW Reports, volume CW613, KU Leuven, 2011.
4. Scripting an IDE for EDSL awareness. Ilya Sergey and Dave Clarke. CW Reports, volume CW608,
KU Leuven, 2011.
5. Automatic refactorings for Scala programs. Ilya Sergey and Dave Clarke. CW Reports, volume
CW577, KU Leuven, 2010.
Ilya Sergey
Curriculum Vitæ
Page 3 of 6
Other manuscripts
1. Implementation of Gradual Ownership Types for Java using Attribute Grammars (in Russian).
Ilya Sergey. Software Engineering, issue 6, pages 49–79, Saint Petersburg State University publishing, 2011.
2. Extraction of musical notation from musical signal (in Russian). Ilya Sergey and Andrey Barabanov. Phonetical Lyceum, issue 4, Faculty of Philology and Arts, Saint Petersburg State University
publishing, 2009.
3. Implementation of JVM-based languages support in IntelliJ IDEA. Ilya Sergey. International
Workshop on Multiparadigm Programming with Object-Oriented Languages (MPOOL 2008).
Teaching
Saint Petersburg State University, Saint Petersburg, Russia
Course Designer, Summer School Lecturer. August 2014.
Programs and Proofs: Mechanizing Mathematics with Dependent Types
• Developed and delivered a course on interactive theorem proving using the Coq proof assistant, including lecture notes and exercises.
KU Leuven, Leuven, Belgium
Teaching Assistant. October 2011–January 2012.
Comparative Programming Languages (B-KUL-H04L5A)
• Developed and delivered an assignment for programming in Racket.
• Assisted exercise sessions on C and Scala programming.
Teaching Assistant, Guest Lecturer. October 2009–January 2010 and October 2010–January 2011.
Formal systems and their applications (B-KUL-H04H8B)
(Dutch: Formele Systemen en hun Toepassingen)
• Developed lectures on functional programming in Scala.
• Developed an assignment for type theory implementation in Scala.
Academic service
Program committees:
• 25th European Symposium on Programming (ESOP 2016)
• International Workshop on Scripts to Programs (STOP 2015)
• 16th International Symposium on Principles and Practice of Declarative Programming (PPDP 2014)
• The Fifth Annual Scala Workshop (Scala 2014)
Reviewing for journals: TOPLAS (2014, 2015)
Conference/workshop refereeing: DISC 2015, ECOOP 2015, ESOP 2015, POPL 2015, GPCE 2014,
ICFP 2014, CSF 2014, PROLE 2013, SAIRP 2013, CC 2013, ESOP 2013, POPL 2013, CPP 2012, ECOOP 2012,
NFM 2012, ESOP 2012, DSL 2011, IWACO 2011, Coordination 2010, Coordination 2009.
Artifact evaluation committees: ECOOP 2014.
Invited speaker at PPDP 2013.
Ilya Sergey
Curriculum Vitæ
Page 4 of 6
Selected seminar presentations, invited and technical talks
• Anatomy of mechanized reasoning about fine-grained concurrency
May 2015, Dagstuhl Seminar 15191 on Compositional Verification Methods for Next-Generation Concurrency, Schloss Dagstuhl, Germany
• Programming and Proving with Concurrent Resources
- April 2015, University College London, UK
- March 2015, Microsoft Research, Cambridge, UK
• Programming with Proofs
April 2015, Google, London, UK
• Towards Structured Mechanized Verification of Fine-Grained Concurrent Programs
January 2015, The First International Workshop on Coq for PL at POPL 2015, Mumbai, India
• Formal Mathematics as a Branch of Computer Science
August 2014, Sociological Institute of the Russian Academy of Sciences, Saint Petersburg, Russia
• State Transition System alternative to Linearizability
January 2014, Concurrency Yak at POPL 2014, San Diego, CA, USA
• Monadic Abstract Interpreters (Invited Talk)
September 2013, 15th International Symposium on Principles and Practice of Declarative Programming
(PPDP 2013), Madrid, Spain
• Communicating State Transition Systems for Fine-Grained Concurrent Resources
- April 2014, 1st Microsoft Research and IMDEA Software Institute Collaboration Workshop (MICW
2014), Madrid, Spain
- September 2013, 2nd ACM SIGPLAN Workshop on Higher-Order Programming with Effects (HOPE
2013), Boston, MA, USA
• Static Analysis and Code Optimizations in Glasgow Haskell Compiler
December 2012, SPb Functional Programming meetup, Saint Petersburg, Russia
• Gradual Ownership Types
December 2011, Entropy Meeting, PL Group, Aarhus University. Aarhus, Denmark.
• Scripting an IDE for DSL awareness,
November 2009, Devoxx 2009, Antwerp, Belgium
• Clojure support in IntelliJ IDEA,
June 2009, The Bay Area Clojure User Group meetup. San Francisco, CA, USA.
• Cross-Language Development in IntelliJ IDEA,
April 2009, JAX 2009, Mainz, Germany
• Cross-Language Development Experience on the JVM,
December 2008, Devoxx 2008, Antwerp, Belgium
Awards and scholarships
• Vladimir Potanin Federal Scholarship Program winner (2004, 2005, 2007)
Visiting fellowship
Aarhus University, Aarhus, Denmark
Visiting PhD student. September–October 2010 and November–December 2011.
Host: prof. Olivier Danvy.
´
Ecole
Polytechnique F´ed´erale de Lausanne, Lausanne, Switzerland
Visiting PhD student. August 2009. Host: prof. Martin Odersky.
Ilya Sergey
Curriculum Vitæ
Page 5 of 6
Selected software
Founder and maintainer of the La Clojure plugin for IntelliJ IDEA
Sources available at http://github.com/JetBrains/la-clojure/
More software is available at GitHub: http://github.com/ilyasergey
Technical skills
• Programming languages (strong knowledge): Java, Scala, Haskell, Racket/Scheme/Clojure
• Proof assistants/dependently typed languages: Coq, Agda
• Other programming languages: Standard ML, Groovy, Python, OCaml, Erlang, C, C++, Prolog,
Refal, Ruby, PHP, (PL/)SQL
Language skills
English (fluent), Dutch (fluent, B2 CEFR, NT2 complete), Spanish (fluent, B1 CEFR),
French (fluent, B2 CEFR), Danish (basic, A1 CEFR), Russian (mother tongue).
References
Aleksandar Nanevski
Assistant Research Professor
IMDEA Software Institute
aleks.nanevski@imdea.org
Olivier Danvy
Associate Professor
Aarhus University
danvy@cs.au.dk
Dave Clarke
Senior Lecturer
Uppsala University
dave.clarke@it.uu.se
Simon Peyton Jones
Principal Researcher
Microsoft Research Cambridge
simonpj@microsoft.com
Matthew Might
Associate Professor
University of Utah
might@cs.utah.edu
David Van Horn
Assistant Professor
University of Maryland
dvanhorn@cs.umd.edu
Ilya Sergey
Curriculum Vitæ
Page 6 of 6