Education

Bachelor of Engineering in Computer Science
at Beijing University of Posts and Telecommunications
2018 - 2022
  • Overall GPA: 3.85/4.0, 92.74/100 (ranking 1st379)
  • Awards and honours: National Scholarship (two consecutive years, only top 1% students will be awarded); 1st Prize in NSCSCC 2020 (MIPS CPU Design Contest)
  • Thesis: Competition-Level Coding and Theorem Proving with Neural Program Synthesis
Pursuing
Doctor of Philosophy in Computer Science
at EPFL
2022 - now

Doing research in Scala's type system with current emphasis on Capture Calculus. Supervised by Prof. Martin Odersky, the creator of Scala.

Research Experience

Research Intern
at CRIPAC, CASIA
2019.6 - 2021.6

Research interests lie in the field of Machine Learning and Graph Representation Learning. Research directions include self-supervised training of GNNs and contrastive learning on graphs. I was supervised by Prof. Shu Wu and worked with Yanqiao Zhu.

Research Intern
at Programming Methods Laboratory, Ecole Polytechnique Fédérale de Lausanne
2021.2 - 2022.8

I worked on dotty, the Scala 3 compiler under the supervision of Aleksander Boruch-Gruszecki. Specifically, I improved the implementation of Generalized Algebraic Datatypes (GADTs) in the compiler. I also worked on the theory of GADT reasoning in Dependent Object Types. I have done the soundness proof for an extended variant of the pDOT calculus that adds subtyping inversion rules to formalize GADT reasoning.

Research Intern
at IIIS, Tsinghua University
2021.9 - 2022.8

I was supervised by Prof. Zhilin Yang, working on designing and pretraining large-scale language models for code generation. I contributed to the early stage of CodeGeeX.

Publications

Degrees of Separation: A Flexible Type System for Data Race Prevention
Yichen Xu, Martin Odersky
arXiv
IWACO 2023
Formalizing Box Inference for Capture Calculus
Yichen Xu, Martin Odersky
arXiv
Preprint
Implementing Path-Dependent GADT Reasoning for Scala 3
Yichen Xu, Aleksander Boruch-Gruszecki, Lionel Parreaux
Preprint | DOI | Slides
Scala Symposium 2021
An Empirical Study of Graph Contrastive Learning
Yanqiao Zhu, Yichen Xu, Qiang Liu, Shu Wu
OpenReview | Slides | Poster | Code
NeurIPS 2021
Structure-Aware Hard Negative Mining for Heterogeneous Graph Contrastive Learning
Yanqiao Zhu, Yichen Xu, Hejie Cui, Carl Yang, Qiang Liu, Shu Wu
arXiv | Slides
DLG@KDD 2021
Disentangled Self-Attentive Neural Networks for Click-Through Rate Prediction
Yichen Xu, Yanqiao Zhu, Feng Yu, Qiang Liu, Shu Wu
arXiv | Code
CIKM 2021
Graph Contrastive Learning with Adaptive Augmentation
Yanqiao Zhu, Yichen Xu, Feng Yu, Shu Wu, Liang Wang
arXiv | Code | Slides | Blog
WWW 2021
Deep Graph Contrastive Representation Learning
Yanqiao Zhu, Yichen Xu, Feng Yu, Qiang Liu, Shu Wu, Liang Wang
arXiv | Code | Slides | Video
GRL+ @ ICML Workshop 2020
CAGNN: Cluster-Aware Graph Neural Networks for Unsupervised Graph Representation Learning
Yanqiao Zhu, Yichen Xu, Feng Yu, Shu Wu, Liang Wang
arXiv
Preprint, in submission to TIST

Selected Projects

fscala2c

A compiler that compiles a subset of Scala to C. Basic functional programming and object-oriented programming functionalities and main language features are included in the subset. Implemented the Hindley-Milner type system for type checking and inferencing.

PyGCL

A battery-included library for graph contrastive learning with PyTorch. It implements a wide variety of contrastive objectives, data augmentations, contrasting modes and other utilities useful for implementing contrastive learning on graphs.

Sircle

Sircle is an DSL designed for my project CoordML, a tool to bring automation to experimenting in machine learning research. Sircle is used for define experiment tasks with ease. It is interpreted, impure and dynamically typed, and it supports functional programming styles with first-class functions, lambda and currying. More information about Sircle can be found at Introduction to Sircle.

meow

A cute little library for Cats.

  • 1. Implements common algebraic structures in Scala, including Arrow, Semigroup, Functor, Applicative, Monad, Alternative.
  • 2. Provides monad instances for Scala classes like Option, Either and List.
  • 3. Includes common monads (transformers) out-of-box (OptionT, StateT, ReaderT, Parser combinators, Free, ...).
  • 4. Creates interesting toys like a typed tagless final interpreter with de Bruijn indicies.
EasterCache

A full-featured and high-performance MIPS32 cache written in Chisel3. It transfer data via AXI bus in wrap mode. It has a victim cache and supports write buffering, with all its parameters configurable. It is part of a MIPS32 CPU, EasterMIPS, which is the work of our team for the NSCSCC 2020 competition, and we got the First Prize in the contest.

Talks

Group Theory Review
Slides
This talk reviews group theory taught in my undergraduate course Discrete Mathematics.
Learn Emacs through Org-mode
Slides
This talk gives a short introduction to the editor Emacs through the usage of Org-mode as a GTD tool.
A Beginner's Guide to Functional Programming
Handout | Slides (in Chinese)
This talk introduces the basic concepts, usage and theoretical backgrounds of functional programming.
How a Website Works
Slides (in Chinese)
This talk reveals the way a website works. It includes the basic concepts of front-end development tools, website rendering, HTTP protocol and backend technologies.
The Path to Bugless Programs
A First Introduction to Formal Verification
Slides (in Chinese)
This talk gives an introduction to formal verification, including a basic guide for Hoare logic and formal verification tools.