Nup Csai Curriculum
Nup Csai Curriculum
Nup Csai Curriculum
Designed by JetBrains
lp.jetbrains.com/academy/csai-program/
August 14, 2024
Program
About
This undergraduate program focuses on Information Technology, Robotics, Machine Learning, and Theoretical Computer Science. Designed to empower stu-
dents with a solid foundation in computer science, mathematics, and modern IT, our program equips you with the practical skills needed to excel in today’s
competitive tech landscape.
Collaborating with industry leaders like JetBrains, this hands-on program offers a unique blend of theory and practice, immersing you in real-world projects
that span a range of mathematical and technological domains. Whether you’re passionate about mathematics or have a keen interest in programming, this
program is tailored to help you thrive.
Students who graduated from bachelor and master programs developed in collaboration with JetBrains work at top IT companies like Google, JetBrains, and
Meta as well as continue their studies at Ph.D. programs at top-notch universities like NYU, Princeton University, and UCSD.
Upon successful completion, graduates will be well-positioned to:
• Pursue advanced degrees (M.Sc. and Ph.D.) at top universities.
• Join research laboratories and contribute to cutting-edge discoveries.
• Get a job at leading IT companies.
• Launch their own startup ventures in the technology sector.
Learning outcomes
• Comprehensively explain the fundamentals of mathematics and computer science, which form the basis of modern software, artificial intelligence, and
robotics.
• Design innovative hardware architectures for next-generation processors, computers, and sensors by applying processor design methods and tools.
• Create general and special-purpose operating systems, along with performance analysis tools.
• Develop optimal high-load services and distributed systems for maximum efficiency.
• Construct programming languages, compilers, interpreters, virtual machines, and frameworks to facilitate software development.
• Apply artificial intelligence techniques to enhance search engines, social networks, and intelligent assistants.
• Use robotics in autonomous robots, the internet of things, and other applications.
• Implement machine learning and deep learning algorithms across various domains, such as computer vision, natural language processing, reinforcement
learning, and recommendation systems.
• Establish and manage IT businesses, fostering effective team collaboration, process management, and customer and partner relations.
Professors
The B.Sc. program is led by a team of seasoned professors and coordinators with over 10 years of expertise in Computer Science research and education. We
provide you with an opportunity to familiarize yourself with the program’s professors below, along with links to their teaching materials such as online courses,
books, video recordings, and home assignments. We believe it’s essential for you to investigate the professors of the program beforehand, regardless of which
B.Sc. program you intend to pursue. We urge you to explore the professors’ qualifications and professionalism on the internet to ensure that you receive
an outstanding education.
Alexander Avdiushenko holds a Ph.D. degree in math modeling. He is a dedicated educator and project manager at JetBrains Education
and Research team. With over three years of experience as a Data Scientist and over seven years of teaching at top universities, he has
honed his skills in deep learning and data optimization. Passionate about both machine learning and human learning, Alexander has
developed an engaging Machine Learning course that showcases his expertise and commitment to education.
Tatiana Berlenko is a researcher in the Mobile Robot Algorithms Lab at JetBrains Research interested in Simultaneous Localization
and Mapping in 3d. Tatiana has six years of experience teaching Computer Science and Software Engineering at universities, creating
MOOCs, and conducting STEM-based robotics schools for students and schoolchildren.
Kirill Krinkin holds a Ph.D. degree in Computer Science. Kirill is doing research in robotics autonomy and is an accomplished author or co-
author of over 100 technical papers. For more than 20 years, Kirill is a seasoned organizer of STEM schools worldwide, has collaborated
with top-tier universities and international companies in software engineering, operating systems, computer networks, autonomous
mobile robots, and co-evolutionary hybrid intelligence. Under his expert guidance, student teams won the AI-DO twice, once at ICRA
and once at NeurIPS. Sample video lecture: Linux Container Technologies and Their Applications.
Alexander S. Kulikov holds Ph.D. and Dr.Sci. degrees from Steklov Mathematical Institute. He serves as the head of the Laboratory
of Algorithms and Complexity Theory at JetBrains Research. Alexander co-authored online courses Data Structures and Algorithms
and Introduction to Discrete Mathematics for Computer Science that are available at Coursera and edX. Sample video lecture: The
Satisfiability Problem.
Pavel Mavrin is an expert in algorithms and data structures. He has published many educational videos on his YouTube channel Pavel
has participated in many programming competitions. His most prestigious title is ICPC World Champion 2004. Sample video lecture:
Parallel algorithms.
Ivan Mihajlin is a theoretical computer scientist interested in computational complexity theory. He did his Ph.D. studies in the University
of California, San Diego. He was a visiting graduate student at the Simons Institute for the Theory of Computing at Berkeley. Sample
video lecture: Non-equivalence of Hardness Assumptions.
Niyaz Nigmatullin is a software engineer in Applied Program Analysis Laboratory at JetBrains. He used to research and develop com-
pression algorithms and data storing techniques. He teaches algorithms and data structures, competitive programming, as well as or-
ganizes various competitions. He is a world champion in the most prestigious competitive programming competition ICPC in 2012 and
2013.
Alexander Smal holds a Ph.D. from Steklov Mathematical Institute. He is a theoretical computer scientist interested in computational
complexity, theory of information and algorithms. He has fifteen years of experience in teaching computer science courses to university
students and several year of experience as a software engineer.
Andrei Smolensky holds a PhD in algebra and is doing research on the interfaces between algebra and machine learning. He has ten
years of experience in teaching introductory and advanced courses in algebra (in particular, those geared towards applications) to uni-
versity and high school students.
Invited Professors
Fedor Bakharev holds a PhD in Functional Analysis and doing research in Mathematical Physics especially in Spectral theory of differ-
ential operators. He has more than 15 years experience in teaching various analytical courses for university students. He has also been
involved in several industrial IT projects as mathematician.
Edward A. Hirsch is a Professor of Computer Science at Ariel University. For many years, he held a permanent Research Lead position
at the Steklov Institute of Mathematics at St.Petersburg and contributed to various topics in Algorithms and Complexity. Edward is an
advisor to quite a number of PhD students who now work in academia and industry all over the world.
Ilya Sergey is an Associate Professor at the School of Computing of National University of Singapore, where he leads the Verified Sys-
tems Engineering lab. Ilya got his PhD in Computer Science at KU Leuven. He does research in programming language design and
implementation, distributed systems, software verification, and program synthesis.
Frequently asked questions
How to get updated on the program? We encourage you to brush up on the basics of the following topics. Each topic
includes a link to online resources where you can study and test your knowl-
Please fill in this form to receive updates from the organizers of the program.
edge with automatically graded quizzes.
You may also want to join our Telegram chat where we answer all questions
from the applicants. • Logarithms. Recommended materials: Unit 8 of the Algebra 2 course at Khan
Academy.
• Trigonometry. Recommended materials: Unit 11 of the Algebra 2 course
Admission at Khan Academy.
• Combinatorics and discrete probability. Recommended materials: Unit 3 of
How to apply? the Precalculus course at Khan Academy.
• Limits. Recommended materials: Unit 10 of the Precalculus course at Khan
The form for applying for 2025 program will be open around March 2025. Academy.
• Recursion and induction. Recommended material: Chapter 3 of the Discrete
Mathematics for Computer Science book.
How to write a resume and a personal statement?
• Any programming language: input/output, variables, functions, loops. Per-
Follow these recommendations: haps the easiest programming language to catch up is Python. Recom-
• Enhance your resume: a guide for first-year undergraduates mended material: Python Basics course at Coursera.
• How to write your undegraduate personal statement • Algorithms. Recommended materials: Unit 1 of the Computer Science course
at Khan Academy.
7 AI-Enhanced Cybersecurity 7
Mobile Applications in Kotlin Lefteris Zacharioudakis Electives Electives Thesis 1 Research Methods
8 8
Electives Electives Electives Thesis 2
• Color codes: mathematical courses, programming courses, project-based courses, electives, miscellaneous
• Electives in Fall 2024: Advanced Graph Theory, Algorithms for NP-hard Problems, Complexity Theory, Cryptography, File Systems, Information Theory, Prac-
tical Formal Methods
Calculus 1: Foundations and Differential Calculus Prerequisites
• Mathematics at the level of the school curriculum
1st semester
∞
∑ f (n) (a)
n!
(x−a)n 6 ECTS, 3 hours per week Where you will need it
n=0
Alexander Alexander
Shen Smal
Algebra 1: Linear Algebra Prerequisites
• Mathematics at the level of the school curriculum
[ ] 1st semester
cos θ sin θ
− sin θ cos θ 6 ECTS, 3 hours per week Where you will need it
homework, midterm, final exam
• In all subsequent mathematical courses
• For successful passing of various courses (for example, Algebra 2,
Mathematical analysis 1, Algorithms 1, Machine learning)
Syllabus
Abstract
• Algebraic structures: ring, field, vector space, matrix
This course addresses the underlying structures of computations: • Modular arithmetic: residue classes, congruences, Chinese
from modular arithmetic and complex numbers to polynomials and ratio- remainder theorem
nals function, vectors and matrices. The goal is to learn the language and • Complex numbers: algebraic and geometric interpretation,
master the abstractions used for working with computable objects (rings, trigonometric form, roots of unity
fields, vector spaces, etc.), while also investigating the wide range of ap- • Polynomials and rational functions: Bezout theorem,
plications: from cryptography and coding theory to geometry and signal interpolation
processing. • Linear algebra: linear independence, dimension, systems of linear
The course serves as an introduction to linear algebra, which is one equations, linear maps and their matrices
of the most widely used areas of mathematics and a foundational tool in
neural networks.
During the course the students will learn how to implement most of You will learn
the notions discussed in it on a computer and how to use some already • To use a variety of computational tools and notions
existing implementations, with their strong sides and limitations. • To translate problems into the language of linear algebra and
solve them
• To switch freely between different languages used for describing
linear phenomena
Andrey
Smolensky
Discrete Mathematics 1: Logic and Combinatorics Prerequisites
• Mathematics: proofs, functions (logarithm, polynomial, exponent)
( ) 1st semester • Programming: Python basics (input/output, loops, recursion)
1 2n
n+1 n
6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• For designing and analyzing efficient algorithms and programs
• For successful passing of the following courses: Algorithms,
Probability Theory, Theoretical Computer Science, Mathematical
Statistics, Fundamentals of Machine learning
Abstract
Syllabus
The main goal of the course is to learn how to design and analyze dis-
crete mathematical models in various areas of computer science. We will • Proofs
focus on formal proofs of correctness: will cover various proof strategies, – Existence and optimality: constructive and nonconstructive proofs,
will see how an intuitively correct proof may go wrong (which can lead proofs of nonexistence, proofs of optimality.
to a failure of software or hardware in practice). Being able to distinguish – Proofs from computational point of view: certificates, proof systems,
between correct and incorrect proofs becomes more and more important complexity classes, interactive proofs, zero-knowledge proofs.
in the era of large language models. The course is equipped with a large – Mathematical induction: strong induction, well-ordering principle,
number of exercises, both theoretical and practical. Using theoretical ex- strengthened statements, nested statements.
• Logic
ercises, the students will practice solving problems and writing down for-
– Predicates: normal forms, Post’s theorem, quantifiers.
mal proofs. Using programming exercises, the students will see a rich vari- – Satisfiability: SAT solvers, proofs systems, formal verification.
ety of practical applications where discrete mathematical ideas arise and – Circuits: computational models, lower and upper bounds.
will practice implementing (as well as testing and debugging) efficient so- • Sets
lutions. – Cardinality: countable sets, diagonal argument.
In the first part of the course, we will learn the basics of logic, set the- – Orders: orders and mathematical induction, Dilworth’s theorem.
ory, and combinatorics. We will practice using their tools to solve various • Combinatorics
real life problems. – Enumeration: enumerating subsets, permutations, bracket sequences;
branch and bound methods; dynamic programming; ILP solvers.
– Permutations and combinations: binomial coefficients, estimates.
– Recurrence relations: ways of solving recurrence relations,
divide-and-conquer and backtracking algorithms.
– Catalan numbers: three proofs of the formula, various occurrences
of Catalan numbers.
– Generating functions: basic rules of working with generating
functions.
Alexander Tatiana
Avdiushenko Berlenko
Programming basics with C Prerequisites
• High school level of informatics
1st semester
#include 6 ECTS, 3 hours per week Where you will need it
homework, midterm, final exam
• To study Computer architecture
• To study Operating systems development
• To make projects with robots in SmartCity Lab and Industrial
robot Lab
Abstract Syllabus
This course introduces the Linux programming environment and the • Program compilation, linking, loading into memory, execution.
basics of C programming, which is essential for every programmer to un- • Basic Syntax and Structure of C Programs
derstand computer and system programming. C language constructs are • Data Types, Variables, and Operators
closely related to typical machine instructions, making it a fundamental • Control Structures (Conditional Statements and Loops)
language for tasks such as operating system development, embedded sys- • Functions and Recursion
tems programming, and robot programming. Learning C programming • Arrays, Strings, and Pointers
techniques not only allows students to write efficient programs, but also • Structures, File I/O, and Preprocessor Directives
deepens their understanding of how computers execute those programs. • Linux Shell and Command Line Interface
The Linux software environment is the industry standard for the develop- • Development Environment and tools
ment of any server and embedded systems. Linux defines basic system • Git and introduction to DevOps
abstractions such as files, processes, sockets, and others, and contains • Networking for remote development
a wealth of basic tools for developing and debugging programs. After • Working with robots in SmartCity Lab
taking this course, all of them will become good friends of future profes- • Working with robots in Inductrial robot Lab
sional software developers.
You will learn
• How to setup developmnent process in Linux environment
• How to create system level software
• To create and debug programs with C
• How to interact with Linux based embedded systems
Kirill
Krinkin
Calculus 2: Integration and Functions of Many Variables Prerequisites
• Calculus 1
2nd semester • Discrete Mathematics 1
6 ECTS, 3 hours per week • Algebra 1 and 2
homework, midterm, final exam
Where you will need it
• In all subsequent mathematical disciplines of an analytical nature
• To understand the courses: Calculus 3, Probability Theory,
Mathematical Statistics, Fundamentals of Machine learning
Abstract • To create a common mathematical culture
The second part of the course of calculus begins with the definition
Syllabus
of indefinite integral (antiderivative) and the basic rules of computations
for them. Shortly after the course switches to definite integral and its • Antiderivatives
connection to anti-derivatives. The course makes an emphasis on geomet- • Definite integrals. Fundamental theorem of calculus
rical understanding and applications of integrals, as well as approximate • Applications of the definite integral: area, volume, length.
methods of numerical integration. Special attention is paid to improper Curves of infinite length and other fractals
integrals and its relation to series summation. The main part of the course • Numerical integration: trapezoid formula, Simpson formula.
is the differential calculus of functions of several real variables. The goal Combinatorial applications
is to study functions of several variables for an extremum, to solve opti- • Improper integrals
mization problems (including conditional optimization), in particular, the • Metric spaces, examples, equivalent metrics
gradient descent method. The study of functions of several variables is • General topology of the space Rn
theoretically based on understanding open and compact subsets of Rn . • Continuous and differentiable functions of several variables.
For this reason, there will be several lectures devoted to the language of Partial derivatives. Gradient of a function
general topology including the very important notion of a metric space. • Higher order derivatives and differentials
The course of the second semester ends with the implicit function the- • Optimization problems in several variables. Training of neural
orem, and the notion of smooth submanifold of Rn which is becoming networks
extremely important in modern machine learning. • Implicit function theorem
• Submanifolds and their tangent spaces. Lagrange multiplier
theorem.
Alexander Alexander
Shen Smal
Algebra 2: Analytic Geometry Prerequisites
• Algebra 1
2nd semester • Discrete Mathematics 1
6 ECTS, 3 hours per week • Mathematical Analysis 1
homework, midterm, final exam
Where you will need it
• For successful passing of the following courses: Mathematical
analysis 2, Algorithms 1, Mathematical statistics, Machine
learning
Abstract
Syllabus
The second part of the algebra course is dedicated to a deep dive into
linear algebra, with a special focus on bilinear algebra, the study of geom- • Operators: determinants, eigenvalues and eigenvectors,
etry from an algebraic viewpoint. It covers the structure theory of oper- canonical forms
ators, their determinants, eigenvalues and eigenvectors, and their impor- • Bilinear algebra: bilinear and quadratic forms, diagonalization
tance for analysis, computational methods and machine learning. • Analytic geometry: Euclidean and Hermitian spaces, projections,
A large section of the course is about scalar products and their gen- reflections, orthogonalization
eralizations, which provide a formalism for various quadratic phenomena • Normal operators: orthogonal and unitary matrices, Hermitian
and similarity measures. The study of the structure-preserving mappings matrices, eigendecomposition
(rotations, reflections and, more generally, orthogonal and unitary oper- • Decompositions and applications: SVD, QR and polar
ators) builds a basis for numerous extremely important applications: sin- decompositions, PCA, least squares, low-rank approximations
gular value decomposition, low-rank approximations and principal com-
ponent analysis, polar and QR decompositions, Procrustes problem, the
least squares methods and beyond. You will learn
The course culminates in the introduction and study of quaternions, • To calculate determinants and use them
an extension of the complex numbers used, for example, in 3D graphics. • To interpret geometric problems in terms of linear algebra
• To apply the tools of bilinear algebra to data analysis
Andrey
Smolensky
Discrete Mathematics 2: Probability and Graphs Prerequisites
• Proofs, logic, combinatorics (Discrete Mathematics 1)
2nd semester
λk e−λ
Pr[α = k] → k! 6 ECTS, 3 hours per week Where you will need it
homework, midterm, final exam
• For successful passing of the following courses: Algorithms,
Probability Theory, Theoretical Computer Science, Mathematical
Statistics, Fundamentals of Machine learning.
Syllabus
Abstract
• Discrete probability theory
The main goal of the course is to learn how to design and analyze dis- – Events: distributions; probability theory and combinatorics; process
crete mathematical models in various areas of computer science. We will tree; birthday paradox; computing probabilities recursively.
focus on formal proofs of correctness: will cover various proof strategies, – Independency: fractions; conditional probabilities; independent
will see how an intuitively correct proof may go wrong (which can lead events; Bayes’ formula; Lovász Local Lemma.
to a failure of software or hardware in practice). Being able to distinguish – Random variables: independent random variables; distributions;
between correct and incorrect proofs becomes more and more important expectations; geometric distribution; Poisson distribution.
– Deviations: Markov inequality; variance; Chebyshev inequality; law
in the era of large language models. The course is equipped with a large
of large numbers; central limit theorem; sampling method; Chernoff
number of exercises, both theoretical and practical. Using theoretical ex- inequality.
ercises, the students will practice solving problems and writing down for- – Probabilistic method: tournament paradox; Ramsey numbers;
mal proofs. Using programming exercises, the students will see a rich vari- sum-free sets; maximum satisfiability.
ety of practical applications where discrete mathematical ideas arise and – Probability in Computer Science: algorithms; verification; comparing
will practice implementing (as well as testing and debugging) efficient so- files over a network; confidential computation; approximation
lutions. algorithms; universal hashing; derandomization; universal hash
In the second part of the course, we will learn the basics of discrete function; error ammplification.
probability theory and graph theory. • Graph theory
– Trees: DFS and BFS trees; minimum spanning tree; Cayley’s formula;
matrix-tree theorem.
– Cycles: topological ordering; strongly connected components;
Eulerian and Hamiltonian cycles; traveling salesman problem; de
Bruijn graphs and genome assembly.
– Flows: connectivity; flows; cuts; bipartite matchings; project selection;
image segmentation.
– Matchings: independent sets and coverings; bipartite graphs; vertex
covers; stable matchings.
– Colorings: greedy coloring; degrees and cliques; nonlocality
of chromatic number; chromatic polynomial; coloring algorithms.
– Planarity: Euler’s formula; nonplanar graphs; crossing number; planar
graph coloring; special layouts.
Abstract Syllabus
This course provides an introduction to basic techniques used for al- • Algorithms and complexity analysis
gorithm design. It covers the common algorithms, algorithmic paradigms, – Algorithms, complexity, asymptotics.
and data structures. The course emphasizes the relationship between al- – Randomized algorithms.
gorithms and programming, and introduces basic performance measures – Amortized analysis
and analysis techniques for these problems. • Sorting algorithms
The course is equipped with a large number of exercises, both theoret- – Merge sort
ical and practical. Using theoretical exercises, the students will practice – Heap sort
– Quick sort
solving problems and presenting their solutions. Using programming ex-
– Lower bound for sorting algorithms
ercises, the students will practice implementing comlicated algorithms. • Basic technics
– Greedy algorithms
– Dynamic programming
– Divide and conquer
• Data structures
– Binary heap
– Stack, queue
– Segment tree
– Binary search tree
– Hash table
Pavel
Mavrin
Programming Paradigms Prerequisites
• Basic math concepts (Mathematical Analysis 1, Algebra, Discrete
2th semester Mathematics 1)
6 ECTS, 3 hours per week • Programming: basic knowledge of some programming language:
input-output, loops, recursion, classes, functions (Python,
assignments, midterm, final exam
Programming Basics)
Alexander Tatiana
Avdiushenko Berlenko
Mathematical Analysis 3 Prerequisites
• Mathematical analysis 1 and 2.
3rd semester • Algebra 1.
6 ECTS, 3 hours per week • Discrete mathematics 1
exam
Where you will need it
• In all subsequent mathematical disciplines of an analytical nature
• To understand the courses: Probability Theory, Mathematical
Statistics, Machine Learning
Abstract • To create a common mathematical culture
In the third part of the Calculus course, students study two big topics:
Syllabus
measure theory (multidimensional integration), and functional series, in-
cluding Fourier series and Fourier transform. Measure theory extends the • Abstract measure theory and Lebesgue measure in Rn
study of integrals initiated in Calculus-2, and are needed primarily in the • Munipulations with integral, sums, derivatives and limits
courses of Probability Theory, Statistics and Machine Learning. The basic • Most important theorems from Measure theory
mathematical notions studied in this part of course are the differential of • Change of variables in a multiple integrals and applications
a smooth map and the Jacobian determinant of the coordinate change. • Hilbert space, orthogonal systems. Functional spaces
The most important result is the method for changing coordinates in a • Fourier decomposition of a periodic function
multiple integral — it allows to simplify many practical calculations. The • Fourier transform
second part of the course, the functional series and Fourier analysis. This
part of the course is heavily based on linear algebra, in particular, the no-
tion of the Hilbert space naturally extends that of a (finite dimensional) You will learn
Euclidean space. Some practical applications of Fourier analysis will be • To understand the basic constructions of the measure theory and
discussed in the course. multiple integration
• To know the values of basic integrals used in probability theory
and the derivation of the corresponding formulae
• To understand the scalar product on functions and how to use it
in optimization problems
• To understand the basic of the Fourier analysis and its
applications
Fedor
Bakharev
Computer Architecture Prerequisites
• High school level of physics
3rd semester • Course on Programming basics with C
6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• To study Operating systems development
• To work with modern hardware
• To develop own processing units
• To work in the area of embodied AI and Cyber-physical systems
Abstract • To make projects with robots in SmartCity Lab and Industrial
robot Lab
This course provides an in-depth exploration of the fundamental prin-
ciples and design methodologies of modern computer systems.The disci-
Syllabus
pline introduces students to the architecture of the computer at multi-
ple levels. Starting with electrical signals and the physical structure of • Combinational and Sequential logic.
the computer’s main components, the course material gradually dives • RISC-V instruction set architecture introduction: base and
into the mechanisms of the processor, memory, and communication be- optional extensions
tween electronic components. It is based on the RISC-V instruction set • ALU, memory organization
architecture, providing a comprehensive understanding of assembly lan- • Processor instructions encoding and their types
guage programming. It covers the creation of specific hardware compo- • Single-cycle processor: data path, control unit
nents and related assembly instructions, essential for the development • Multi-cycle processor: data path, control unit
and optimization of various applications, including those required for em- • Pipelined processor, Pipeline hazards
bodied AI. • Hardware design with Verilog
• RISC-V Privileged Architecture
• ELF structure, application binary inteface
Kirill
Krinkin
Probability Theory Prerequisites
• Mathematical analysis 2
3rd semester • Discrete mathematics 2
6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• For implementing any system including a non-trivial use of
randomness
• For successful passing of the following courses: Mathematical
statistics, Machine learning
Abstract
Syllabus
The course is dedicated to the study of randomness in the continuous
setting, which requires, as compared to the discrete case, a new language • PDF and CDF, important continuous distributions
of probability densities and cumulative distributions functions. We will • Markov, Chebyshev and Jensen inequalities
study the notion of a random variable, the properties and structure of • Convergence: almost sure, in probability, in distribution; LLN and
various distributions and where they appear, and their important charac- CLT
teristics such as expected value and variance. • Random processes
Probability theory lays the foundations of mathematical statistics, • Bayesian inference
thus we will also study basic results which find their application there,
such as the law of large numbers and the central limit theorem, and sev-
eral probabilistic notions of convergence. You will learn
A part of the course will be dedicated to the study of random pro- • To understand and analyze continuous probability distributions
cesses, including Markov chains (used, among many other things, for ran- and their properties
dom sampling and as models for reinforcement learning), Gaussian pro- • To apply the law of large numbers and the central limit theorem
cesses (used in Bayesian inference) and martingales (used, for example, • To apply concepts from information theory, such as entropy and
in the analysis of performance and convergence of online and reinforce- mutual information, to measure uncertainty and information
ment learning). content.
During the course we will study how various random phenomena can • To explore and implement basic applications of continuous
be modeled on a computer, including the efficient sampling from proba- probability in machine learning
bility distributions.
Andrey
Smolensky
Algorithms 2: Data Structures Prerequisites
• Mathematics: proofs, functions (logarithm, polynomial, exponent)
3rd semester • Programming: Python basics (input/output, loops, recursion)
6 ECTS, 3 hours per week
homeworks, midterm, final exam Where you will need it
• For designing and analyzing efficient algorithms and programs
• For successful passing of the following courses: Theoretical
Computer Science, Machine Learning.
Abstract Syllabus
This course provides an in-depth understanding of some of the fun- • Graph algorithms
damental algorithms and data structures from various areas of computer – Binary lifting method
science. We will cover some advanced algorithmic ideas (both classical – Depth-first search
and recent), and the theory behind it (theorems, proofs). – Biconnectivity. Strong connectivity
The course is equipped with a large number of exercises, both theoret- – 2-SAT problem
ical and practical. Using theoretical exercises, the students will practice – Minimal spanning tree
solving problems and presenting their solutions. Using programming ex- – Shortest paths
ercises, the students will practice implementing complicated algorithms. – Bipartite matchings
– Graphs games analysis
• String algorithms
– Substring search problem
– Aho-Corasick algorithm
• Math algorithms
– Number theory algorithms
– Cryptography algorithms
– Fast Fourier transformation
Pavel
Mavrin
Fundamentals of Machine Learning Prerequisites
• Vectors and matrices, SVD (Algebra)
3th semester • Bayes’ theorem (Discrete Mathematics)
6 ECTS, 3 hours per week • Mean and variance (Probability theory)
• Differentiation (Mathematical Analysis 1), gradient descent
assignments, midterm, final exam
(Mathematical Analysis 2)
• Programming: basic knowledge of the programming language
Python (input-output, loops, recursion, classes, functions)
Alexander
Avdiushenko
Advanced Machine Learning Prerequisites
• Fundamentals of Machine Learning (ML)
4th semester • Bayes’ theorem (Discrete Mathematics)
6 ECTS, 3 hours per week • Mean and variance (Probability theory)
• Programming: basic knowledge of the programming language
assignments, midterm, final exam
Python (input-output, loops, recursion, classes, functions)
Alexander
Avdiushenko
Mathematical statistics Prerequisites
• Probability Theory: fundamentals, random variables, limit
4th semester theorems
6 ECTS, 3 hours per week • Mathematical analysis 3: measure theory, integration
• Algebra: linear algebra, orthogonality
homework, midterm, exam
• Programming: basic knowledge of the programming language
Python
Andrey
Smolensky
Advanced Graph Theory Prerequisites
• Proofs, logic, combinatorics (Discrete Mathematics 1)
5-8 semesters, elective • Fundamentals of Graph Theory (Discrete Mathematics 2)
6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• Essential for theoretical research in mathematics and computer
science
• Crucial for developing algorithms and solving complex problems
in topics related to graph theory
Abstract • Provides foundational knowledge for postgraduate studies in
mathematics and theoretical computer science
This course delves into the advanced concepts of graph theory, build-
ing on the foundations laid in Discrete Mathematics courses. Emphasis
Syllabus
will be placed more on theoretical understanding. If time permits, addi-
tional advanced topics like maximum flow algorithms, graph expanders, • Paths and Cycles. Theorems: Ore’s, Dirac’s, Pósa’s, Tutte’s and Chvátal’s
and Yeo and Kotzig’s theorems will be discussed upon request. Closure
• Matchings. Theorems: Gallai’s, Berge’s and Kőnig’s, Tutte’s, Petersen’s
for Cubic Graphs, Plummer’s for Regular Graphs, Petersen’s 2-Factor,
Lovász’s and Berge’s Formula for Graph Deficiency
• Connectivity. Graph Block Decomposition, Theorems: Menger’s, Dirac’s,
Mader’s, Halin’s for Triangles
• Colorings. Theorems: Vizing’s, Brooks’, Borodin’s, Gallai’s for k-Critical
Graphs, Dirac’s, Vizing’s, Gupta’s
• Planar Graphs. Cyclic Traversal of Boundaries, Articulation Points
of Face Boundaries, Graph Triangulation, Theorems: Kuratowski’s,
Wagner’s, Golovina-Yaglom on 3-Coloring Triangulations and Dual
Graphs, Tait’s Colorings, Thomassen’s Theorem on 5-List-Coloring Planar
Graphs
• Directed Graphs. Strongly Connected Components, Existence of
Hamiltonian Cycle in Directed Graphs, Hamiltonian Path and Cycle in
Strongly Connected Tournaments, Theorems: Rédei’s on Hamiltonian
Paths in Tournaments, Chvátal-Lovász, Gallai-Milgram, Dilworth’s,
Roy-Gallai, Galvin’s, Alon-Tarsi
• Networks and Flows. Menger’s Theorem, Maximum Flow in Arbitrary
Networks, Dinic’s algorithm
• Extremal Graph Theory. Ramsey Numbers for Trees and Complete
Graphs, Edge Count in Graphs without Km,n and Theorems of Turán for
Graphs without Kn , Bondy-Simonovits for Even Cycles and Induced
Ramsey for Bipartite and General Graphs
• Spanning Trees. Number of Spanning Trees, Prüfer Code, Theorems:
Cayley’s, Bowler-Carmesin on Covering and Packing, Nash-Williams
Syllabus
Abstract
• Course overview. Algorithms for the Vertex Cover problem: O∗ (1.619n )
Many computational problems arising in practice are NP-hard meaning exact algorithm, 2-approximation algorithm based on inclusion-wise
that it is unlikely that they can be solved efficiently. In this course, we con- maximal matching, parameterized algorithms.
sider three popular approaches for dealing with such problems from a the- • Kernels for the Vertex Cover problem.
oretical point of view (as we are interested in provable guarantees): • Kernel of size 2k for the Vertex Cover problem. Exact algorithms for
• Exact algorithms: If we cannot solve a problem in polynomial time, can the Hamiltonian Path problem: O∗ (2n ) time and exponential space
we at least solve the problem faster than by the brute force approach? using dynamic programming, O∗ (2n ) and polynomial space using the
inclusion-exclusion formula.
• Approximation algorithms: Can we find a solution that is provably not
• O∗ (2n ) time and exponential space algorithm for the Hamiltonian Path
much worse than an optimum one? problem using FFT. Color coding technique for the k-path problem.
• Parameterized algorithms: Can we design algorithms that are efficient Multivariate polynomials over finite fields.
when a certain parameter of the input is small enough? • Algebraic algorithms for the k-path problem.
• Approximation algorithms for TSP: inapproximability of the general
case, 1.5-approximation for the Metric TSP, 2/3-approximation for
MAX-ATSP.
• 4- and 2 23 -approximation for the Shortest Common Superstring problem.
• Approximation scheme for Euclidean TSP
ωn
• O∗ (2 3 ) exact algorithms for MAX-CUT and MAX-2-SAT via fast matrix
multiplication
• 0.878-approximation algorithm for MAX-CUT and MAX-2-SAT via
semidefinite programming
• Exact algorithms for the graph coloring problem: O∗ (1.5n ) randomized
algorithm for 3-coloring via a reduction to 2-SAT, O∗ (3n ) for chromatic
number using dynamic programming, O∗ (2n ) for chromatic number
using inclusion-exclusion
• Exact algorithms for 3-SAT: O∗ (22n/3 ) algorithm for Unique 3-SAT based
on branching w.r.t. a random permutation, O∗ (1.5n ) algorithm based
on local search, O∗ ((4/3)n ) algorithm based on random walks
Ivan
Mihajlin
Modern Cryptography Prerequisites
• Discrete probability, basic randomized algorithms (Discrete
5–8 semester (elective) Mathematics 2)
6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• To get a job in any field requiring the design of authentication,
encryption, blockchains protocols.
• To become a computer science professional.
Abstract Syllabus
Modern communication is based on cryptography. Everyone needs to • Protocols and primitives: what Alice and Bob can do against
keep the information private not only statically but also when it is trans- Charlie?
ferred over communication channels. Each party needs to authenticate • Background: all material in algorithms and complexity that you
the other parties. People prefer to avoid disclosing information about missed by chance.
them unless it is absolutely necessary. • One-way functions.
How does public-key (and private-key) cryptography work? What do • Trapdoor functions.
we need to construct a secure protocol? To answer these questions is the • Oblivious transfer.
purpose of this course. • Cryptographic hash-functions.
The crux of the matter is that we cannot base modern cryptography • Security basics: indistinguishability and semantic security.
on the traditional complexity-theoretic assumptions (no, P ̸= NP is by • Public-key encryption.
far not sufficient). As we all know, practical implementations frequently • Key agreement.
fall into trapholes; deep understanding of the underlying notions is re- • Private-key encryption.
quired to avoid such fuckups. Many people heard about RSA albeit not • Digital signatures.
everyone knows how to use it correctly. Therefore, we study various cryp- • Bit commitment (bid in a sealed envelope).
tographic primitives (such as one-way functions, trapdoor functions, bit • Secure distributed function evaluation.
commitment schemes) and construct useful protocols that use them (dig- • Blockchains.
ital signatures, public-key encryption, blockchains, etc).
You will learn
• How to construct secure cryptographic protocols.
• How secure is modern cryptography (spoiler: not much).
• The real meaning of a lot of buzzwords :-)
Edward
Hirsch
Introduction to File Systems Prerequisites
• Programming Basics with C
5th or 7th semester • Computer Architecture
6 ECTS, 3 hours per week
homeworks, project, final exam Where you will need it
• To use databases efficiently.
• To implement databases and other storage systems.
• To design and implement Web services and networked
applications.
Abstract • To design and implement reliable and highly available systems.
The first goal of this course is to explain how to present a physical stor-
Syllabus
age device (an HDD or an SSD) as a hierarchy of directories and files. How-
ever, we will not be content with just any file system implementation. We • POSIX and Windows APIs for accessing file systems.
want file systems that: • Virtual File System layer in the Linux kernel.
1. are reliable and can protect themselves from hardware errors, kernel • On-disk layout of Ext4 and NTFS.
crashes and other unexpected interruptions, • B-trees, LSM-trees, Bloom filters and “the power of 2 choices”.
• Journaling and request idempotency.
2. are performant and can make use of modern high-speed devices. • Queue management, avoidance of long tails and head-of-line
While exploring these two requirements we will come up with tech- blocking.
niques that are useful in any scalable database or networking system: • Erasure codes and RAID.
• Distributed systems and consensus algorithms.
1. Disk-friendly implementations of file lists and indices will lead us to B-
trees and LSM trees which are the basis of almost any database system.
You will learn
2. Flash-friendly IO will lead us to constructing IO queues in such a way
as to hide the request latency and to avoid effects like head-of-line • To analyse the performance of applications that work with the
blocking. Such queues are the key component of network protocols storage and the network.
like HTTP 2 and QUIC. • To use the storage and the network efficiently.
• To implement systems that are resilient in face of network
3. Protecting against unexpected interruptions and crashes will lead us outages, crashes and faulty hardware.
to journaling and designing idempotent FS operations. These are key • To use the Golang programming language as well as to use the
aspects of database systems and distributed systems that run over un- C language more effificently.
reliable networks (read: the whole of the Internet).
4. If we have enough time we will consider how to scale a storage system
and make it distributed. This will lead us to PAXOS and model checking
with TLA+ and TLC.
Information Theory Prerequisites
• Proofs, logic, combinatorics (Discrete Mathematics 1)
5–8 semester (elective) • Discrete probability theory (Discrete Mathematics 2)
∑
− p(x) log p(x) 6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• For designing and analyzing algorithms.
• For data analysis and machine learning.
Syllabus
Abstract
• Combinatorial approach: Hartley‘s formula
The course is dedicated to studying approaches to defining the con- • Probabilistic approach: Shannon‘s entropy
cept of “amount of information”. The sequence of topics in this course • Information theory in coding theory
follow Kolmogorov’s classic paper “Three approaches to the quantitative • Information theory in cryptography
definition of information” (1965). • Communication complexity and formula complexity
The course covers three approaches to defining the concept of • Algorithmic approach: Kolmogorov complexity
“amount of information”: combinatorial (Hartley’s information), proba- • Applications of Kolmogorov complexity
bilistic (Shannon’s entropy), and algorithmic (Kolmogorov complexity).
The course includes many examples of application of information theory
methods in various areas of computer science: cryptography, communi- You will learn
cation complexity, coding theory, finite automata theory, computational • To compute the amount of information in an answer to
complexity theory, machine learning, etc. a question, in a random variable, in a text, etc.
• To use information-theoretic method in various areas including
data analysis and machine learning.
Alexander
Smal
Practical Formal Methods Prerequisites
• Mathematical logic basics
5–8 semesters (elective) • Basic data structures and algorithms
6 ECTS, November 18–22
homework, research project Where you will need it
• For analysing and understanding complex computations with
many moving parts, such as concurrent and distributed
algorithms, reactive systems, and communication protocols
• For being able to rigorously state and prove correctness of
Abstract algorithms and data structures
Ilya
Sergey