This course provides a comprehensive exploration of Integrated Development Environment (IDE) architecture and implementation. It covers both theoretical foundations and practical aspects of IDE development.
Students will learn about text editing systems, project management, language processing pipelines, symbol resolution, type systems, and performance optimization techniques that power modern IDEs. The course combines lectures with hands-on assignments to build a functional mini-IDE.
Overview of IDE components including code editors, debugging tools, and version control integration.
Fundamentals of plain text, text editing, rendering, and editor workflows.
Core text editor features: syntax highlighting, error detection, code navigation, and document markup.
Project models, Virtual File Systems (VFS), Program Structure Interface (PSI), and caching mechanisms.
Finite state automatons, formal languages, abstract syntax trees, lexical and syntax analysis.
Semantic analysis, symbol tables, symbol resolution and scopes in IDEs.
Syntax-directed translation, type systems and type checking in IDE development.
Polymorphism, type inference and introduction to static analysis.
Performance profiling, memory profiling, and test coverage for runtime behavior analysis.
Evolution of debugging tools, techniques, and implementation within modern IDEs.
Smart search, navigation, code refactoring, and code completion tools.
To be continued...
Development of a basic IDE for IDELang, implementing text editing, syntax highlighting, and error detection.
Andrew Vasilyev (online alias "retran") started programming at the age of five. During his school years, he participated in programming competitions.
His career includes work in operations research, service-oriented architecture, and enterprise software development. Since 2013, he's focused on development tools, including frameworks, DSLs, and IDE development. He worked at Acumatica and 1C Company before joining JetBrains in 2018, where he now leads the ReSharper AI team.
Andrew has extensive teaching experience. He taught "High-Level Language Programming" and "Pattern Recognition and Machine Learning" at Moscow Aviation Institute (2011-2014), "IDE Development" at Higher School of Economics (2021), and at Constructor University in Bremen (2023). He also mentored students at Practicum by Yandex on algorithms and data structures (2021-2022).