JetBrains logo

Education Research

Education Research

We design and develop innovative education-oriented features for JetBrains' products.

We also share our knowledge across the company and the scientific community by organising conferences, hackathons, and participating in education-focused events.

Our research interests

In-IDE Learning

Intelligent Tutoring Systems

Generative AI in Programming Education

Low-Code Programming Education

AI-Based Next Step Hints

In this project, we develop an AI-based hint system to help students solve Kotlin programming tasks step by step.

We support several types of hints:

  • Suggesting next steps towards the solution
  • Fixing tests
  • Fixing compilation errors

In this project, we combine static analysis capabilities of the IDE with modern LLMs to generate hints.

In the first stage, we show a text suggestion for the next step.

In the second stage, we show a diff window with implementation suggestions.

AI Debugging

The main idea of this project is to assist the student in debugging during problem-solving.

  • For the MVP, we aim to teach some basic concepts of debugging, such as setting breakpoints and stepping through the program. In the future, we may extend it with more advanced features, such as omniscient debugging.
  • This project addresses only runtime and semantics errors, while the MVP only addresses semantic errors.
  • We build our prototype as a part of the open-source JetBrains Academy plugin.
  • We target to Kotlin.

The plugin suggests the students when to start debugging

During debugging, the plugin suggests breakpoints and value comparisons

Cognifire

Low-Code in Education

This project aims to develop a new approach to teaching students to code in the low-code era of programming. Its key idea is to use intelligent prompt engineering to teach algorithmic thinking and problem decomposition, while combining it with code generation and direct coding.

Technical details:

  • We use a DSL to support special description and draft blocks to provide students a space for prompting.
  • We use an ANTLR grammar to ensure that the students write concrete, structured prompts.
  • We use static analysis to check whether students only use defined variables and functions, to improve quality of the model's output, and to insert TODO statements where needed.
  • We target to Kotlin.

Overview of Cognifire

Terms Explanation

In this project, we extract coding concepts from task descriptions and provide a short explanation of the terms to the students.

The current MVP parses the descriptions, extracts terms with an LLM, and then constructs their explanations with an LLM.

Technical details:

  • We build our prototype as a part of the open-source JetBrains Academy plugin.
  • We optimise LLM use by efficiently caching the terms.

Test Generation

The main goal of this project is to allow course authors to automatically generate tests for their coding assignments for Java courses.

Generation can be done at different levels of granularity: at the level of a class, method, or line of code. Generation is defined by dedicated prompts that request full test coverage of selected code. The course author is presented with the best results generated by LLM, which have also been successfully compiled and run.

Technical details:

  • In this project we extend the open-source JetBrains Academy plugin and combine static analysis from IDE with state-of-the-art LLMs to generate tests.
  • We build this solution on the TestSpark backend with some adjustments.
  • We target to Java.

We are open to collaborations

  • We are happy to take part in seminars or guest lectures. We can invite you to meet our team, or we can present our work for your group or at your event.
  • We are open to joint projects around our research interests.

You can email us at edu-research-team@jetbrains.com