0% found this document useful (0 votes)
22 views32 pages

Nup Csai Curriculum

Download as pdf or txt
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 32

Computer Science and Artificial Intelligence

A new B.Sc. program at Neapolis University Pafos

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

Updates How to prepare for the entrance test?

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.

What is the tuition fee?

It is €6,000 per year. Studies


What is the language of the program?
How to get a scholarship?
All courses are taught in English.
For fifteen selected applicants, the tuition fee will be covered by a grant pro-
vided by the JetBrains company.
What programming languages are taught in the program?
What background is expected?
We expose students to a variety of programming languages, including C, C ++,
We expect all applicants to have a strong background in high school mathemat- Haskell, Java, JavaScript, Kotlin, and Python. However, our primary fo-
ics and know the basics of at least one programming language. We encourage cus is not on teaching the syntax of each language, but rather on understand-
you to check your background using this automatically graded test. It contains ing their underlying paradigms, ideas, and styles. We believe that language is
nine problems, and you will be asked to work on them for 2 hours in a row. a tool, and it is essential for students to be familiar with various tools to choose
If you are only able to solve a maximum of 4 problems, it may be challenging the right one for a specific task. By discussing the paradigms and principles
for you to pursue studies in the Computer Science and Artificial Intelligence behind different programming languages, we help students develop a solid
program. If you can solve at least 6 problems, then the program is a perfect foundation in programming concepts, enabling them to adapt quickly to new
match for you. languages and technologies as they emerge.
Why are there so many mathematical courses in the program? professionals is increasing, and there are numerous exciting career prospects
in this area.
There are several reasons why the program includes a significant number of
mathematical courses. Strong foundation: a deep understanding of math-
ematical principles is crucial for grasping more advanced topics in computer How will the studies help me to get a job?
science and AI. From linear regression to deep learning, understanding the un- By completing the bachelor program, you will gain practical skills that are
derlying mathematics is nesessary for developing and fine-tuning these mod- highly valued in the job market, establish a strong foundation of knowledge
els. Due to the rapid development of modern technologies such as GitHub for job interviews, and have the opportunity to engage with a supportive com-
Сopilot and OpenAI ChatGPT, it is likely that machines will write code and solve munity of peers and industry professionals.
many other technical problems in the near future. Therefore, university grad-
uates will need to be able to generate ideas, correctly set technical tasks, tak-
ing into account theoretical limitations, and then accurately check the results. Cyprus
Problem solving: mathematics enhances critical thinking and analytical skills,
What is the living cost?
which are essential for computer science and AI professionals. By studying
mathematical courses, students will develop a robust theoretical understand- Prices for food and groceries in Paphos are similar to the prices in other cities
ing of computer science and AI concepts. This knowledge will be instrumental of Cyprus. A meal in a mid-range restaurant costs around €15 to €25 per per-
in their ability to design and implement efficient solutions to real-world prob- son, while a fast-food meal can cost around €8. Transportation costs in Paphos:
lems. a one-way ticket on public transport costing around €1.50. Other expenses,
such as utilities, healthcare, and entertainment, can vary depending on your
lifestyle and needs. You may want to compare the cost of living in Paphos with
Career other cities using this online calculator.
What are the career possibilities?
What is the typical weather?
One can explore various career options with a bachelor’s degree in Computer
Science and Artificial Intelligence (CSAI). These career paths include roles such Cyprus has a subtropical climate with hot and dry summers and mild winters,
as an Artificial Intelligence/Machine Learning Engineer, Data Scientist, Soft- with average temperatures ranging from 25 to 35 degrees Celsius in summer
ware Engineer, Robotics Engineer, Natural Language Processing (NLP) Engi- and 10 to 20 degrees Celsius in winter. Rainfall is relatively low throughout the
neer, Technical Product Manager, Research Scientist. The demand for CSAI year.
Curriculum (2024–2025)

Analysis for Machine Learning 1: Discrete Mathematics 1:


1 Differential Calculus Logic and Combinatorics Linear Algebra 1 Computer Science Basics with Python Programming Basics with C 1
Alexander Shen, Alexander Smal Alexander Kulikov, Ivan Mihajlin Andrey Smolensky Alexander Avdiushenko, Tatiana Berlenko Kirill Krinkin

Analysis for Machine Learning 2: Discrete Mathematics 2: Linear Algebra 2 Algorithms 1:


2 Integral Calculus Probability and Graphs (Introduction to Neural Networks) Basic Toolbox Programming Paradigms 2
Alexander Shen, Alexander Smal Alexander Kulikov, Ivan Mihajlin Andrey Smolensky Pavel Mavrin Alexander Avdiushenko, Tatiana Berlenko

Mathematical Analysis 3 (Pattern Algorithms 2:


3 Recognition and Machine Learning) Probability Theory Computer Architecture Data Structures Algorithm Engineering 3
Fedor Bakharev Andrey Smolensky Kirill Krinkin Pavel Mavrin Dmitry Botov

Mathematical Statistics Advanced Machine Learning


4 Theoretical Computer Science (Data Science and Big Data) (Optimisation for Machine Learning) Human Computer Interaction Project-based Exploration of Mathe- 4
Ivan Mikhajlin Andrey Smolensky Alexander Avdiushenko Avgousta Zacharoudiou matical Modeling and Simulation

Fundamentals of Machine Learning ML System Design


5 (Data Mining) (Deep and Reinforcement Learning) Agile Scrum for AI Development 5
Databases Alexander Avdiushenko Dmitry Botov Avgousta Zacharoudiou Electives

6 Natural Language Processing and 6


Foundational Models Robotics and Computer Vision Artificial Intelligence Lab Electives Electives

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

homework, midterm, final exam


• In all subsequent mathematical disciplines of an analytical nature
• To understand the courses: Calculus 2, 3, Probability Theory,
Mathematical Statistics, Convex optimization, Fundamentals of
Machine learning
• For the formation of a common mathematical culture
Abstract
Syllabus
The first part of the course of calculus consists in studying the basic
concepts and theorems of differential calculus and functions of one real • Axiomatic of real numbers and concrete realizations
variable. The course goes through the basic axiomatic of real numbers, • Sets of real numbers. Supremum and infimum
number sequences, series (infinite sums), and functions of one real vari- • Number sequences, convergence
able — all these subjects are classical for the initial course of calculus. • The number e
However, students are invited to study some additional topics in depth. • Series, summation
Among examples are the realization of real numbers in programming lan- • Functions of one real variable. Limits, continuity, general
guages, basic notions of general topology on a line, and geometrical and topology of the real line
combinatorial applications of calculus. The main goal of the first semester • Differentiation and derivatives. Rolle’s, Fermat’s, Cauchy’s
is to teach basic mathematical culture and important skills required in the and Lagrange’s theorems
consequent mathematical and programming courses. Examples of such • Higher derivatives. Mathematical analysis of functions
skills are finding the extrema of functions using Fermat’s principle, com- • Taylor’s formula
parisons of asymptotics of functions, and approximate computation of
values by the Taylor formula.
You will learn
• To define basic mathematical notions in rigorous manner
• To evaluate qualitatively and quantitatively the asymptotical
behavior of functions and sums
• To analyze local behavior of functions in various optimization
problems
• To operate with abstract structures and implement them for
solving naturally posed problems

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.

You will learn


• To write down short and rigorous proofs of mathematical
statements
• To estimate the running time of algorithms and programs
• To apply discrete mathematics ideas in various areas of computer
Alexander Ivan science
Kulikov Mihajlin • To implement brute force search, coding and decoding,
reductions to the satisfiability problem
Computer Science Basics with Python Prerequisites
• Mathematics and Computer Science at the level of the school
docker build
-t study:first 1st semester curriculum
. docker run
-d --name app
-p 8080:8080 6 ECTS, 3 hours per week
study:first
docker exec -it homework, midterm, final exam Where you will need it
app /bin/bash

• Creating and optimizing software, analyzing data, and improving


system performance.
• Working as Software Developer, ML Engineer, Data Scientist,
DevOps Engineer.
Abstract
Syllabus
Our goal is to level up students’ general knowledge in different areas
of computer science and to teach them how to use a variety of tools to • Introduction to Software Engineering. Introduction to PyCharm
solve problems in Python. and Python development. Version control systems
In this course, we do not aim to learn the syntax of the Python lan- • SSH. Working on a remote server. Networks. Docker. Docker
guage. We will use the language as a tool to explore different concepts, compose
such as storing different formats of data in computer memory. During the • Introduction to Computer Architecture. Logic gates. How to
course you will work with various tools for application development and create memory. Format of data representation on the computer
deployment, learn libraries for working with data and developing web ap- • Working with images. Pillow
plications. • Introduction to data analysis. Numpy, Pandas, Matplotlib.
Special attention is paid to practice rather than theory. We do not aim • Comparison of different programming languages.
to learn the syntax of the Python language, but students who do not have • Testing. TDD. Logging. DevOps
sufficient programming experience in this language will be able to learn
it in additional classes.
You will learn
• To understand the fundamentals of computer architecture,
including logic gates and memory creation.
• To work on remote servers using SSH.
• To use different software engineering tools.
• To use Docker and Docker Compose.
• To implement programs using Numpy, Pandas, and Matplotlib.

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.

You will learn


• To use integration in practical problems
• To make general topological reasoning about existence of
extrema of functions on metric spaces
• To evaluate qualitatively and quantitatively the behavior of
functions of several variables
• To formalize common sense optimization problems in rigorous
terms and solve them exactly or numerically

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.

You will learn

Alexander Ivan • To compute probabilities of basic events as well as expectations


Kulikov Mihajlin and deviations of random variables
• To model various problems as graphs and to apply known graph
tools for solving them
Algorithms 1: Basic Toolbox Prerequisites
• Mathematics: proofs, functions (logarithm, polynomial, exponent)
2nd semester • Programming: Python basics (input/output, loops, recursion)
6 ECTS, 3 hours per week
homework, 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 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

You will learn


• To estimate the running time of algorithms and programs
• To describe and use basic algorithms and data structures
• To recognize problems that can be solved using techniques
learned in this cours
• To design new algorithms for similar problems

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)

Where you will need it


• More specialized software engineering courses
Abstract • Working as Software Developer, ML Engineer, Data Scientist

Unlock the diverse world of programming paradigms with our compre-


Syllabus
hensive course, which offers a deep dive into various programming ap-
proaches, including imperative, declarative, procedural, functional, and • Programming Paradigms: An overview of imperative, declarative,
logic programming, along with object-oriented programming (OOP). and procedural programming
You’ll gain hands-on experience with languages like Python, Haskell, • Procedural Programming: Learn the basics with languages like
Prolog, Java, and C++, exploring their unique features and applications. Python and C, and apply your knowledge through practical
This course is perfect for aspiring programmers and software devel- exercises
opers looking to broaden their programming knowledge and skills across • Functional Programming: functions, recursion, immutability, with
different paradigms. practical examples in Python and Haskell
• Logic Programming: Introduction to Prolog and its comparison
with imperative programming
• Object-Oriented Programming (OOP): Understand OOP principles,
objects, classes, inheritance, and polymorphism with practical
sessions in Java, C++, and Python
• Programming Patterns: Learn and practice various programming
patterns and antipatterns

You will learn


• To write programs using different programming paradigms
• To apply functional programming concepts in Python and Haskell
• To understand logic programming with Prolog
• To design and implement object-oriented programs in Java and
Python
• To recognize and apply programming patterns and antipatterns
• To showcase your understanding through project defense
sessions, receiving feedback to refine your skills

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

You will learn


• How to design custom processors and other hardware
• How to programm RISC-V with assembly language
• To make programms on the lowest level
• To support hardware on operating system level

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

You will learn


• To describe and use fundamental algorithms
• To explain the mathematical concepts needed for the analysis of
the behavior of algorithms
• To recognize problems that can be solved using techniques
learned in this course
• To design new algorithms for similar problems

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)

Where you will need it


Abstract
• More specialized machine learning courses
The aim of the course is to demystify AI. This comprehensive course • Working as Data Scientist, ML Engineer, ML Researcher
delves into both basic and advanced concepts of machine learning and
deep learning. Starting with Python, Pandas and fundamental machine
Syllabus
learning techniques, students will explore statistical learning models, lin-
ear and logistic regression, decision trees, and ensemble methods. • Machine Learning task examples, quality evaluation
The journey continues into the realm of deep learning, covering multi- • Matrix differentiation, chain rule
layer neural networks, stochastic gradient descent, backpropagation, op- • Linear methods of classification and regression
timization techniques, and more. A little bit more advanced topics such as • Stochastic gradient descent
recurrent, convolutional neural networks, and general pre-trained trans- • Decision trees, ensembles, gradient boosting
formers (GPT) will also be addressed. • Intro to neural networks, Backpropagation, Multi-Layer
Practical coursework, including programming assignments and hands- Perceptron (MLP)
on projects, will be primarily based on Python and PyTorch. • Intro to language modelling: bigrams
• Activations, BatchNorm
• WaveNet, convolutions
• Recurrent Neural Networks (RNN), attention, transformers

You will learn


• To navigate the vast field of machine learning
• To understand fundamental principles of the various methods
• To formalize tasks in the model learning language
• The advantages and disadvantages of neural networks
• To implement basic models in the programming language
Python
• Problems that arise when training models

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)

Where you will need it


• Even more specialized machine learning courses
Abstract • Working as Data Scientist, ML Engineer, ML Researcher

Explore the depths of semi- and unsupervised learning, mastering


Syllabus
clustering and the Expectation-Minimization algorithm through hands-on
practice. • Clustering and EM Algorithm: Theory and practical applications
Learn reinforcement learning and know the difference between Al- • Reinforcement Learning: From foundational principles to
phaGo and AlphaZero, explore generative models like VAEs and GANs. advanced applications like AlphaZero
Delve into large language models (LLMs) with a focus on tokenization, em- • Generative Models: VAEs, GANs, CLIP, flows, and diffusion
beddings, and the new paradigm of prompt-based programming. Address models with practical sessions
LLM challenges, from hallucinations to multi-agent systems, and under- • Large Language Models: Tokenization, embeddings, and
stand the economics of optimization. advanced prompting techniques
This course is designed for those looking to elevate their machine • LLM Challenges: Hallucinations, multi-agent systems, and
learning skills and stay at the forefront of technological advancements. optimization economics

You will learn


• To navigate the vast field of machine learning
• To gain hands-on experience with clustering and generative
models
• To understand and tackle LLM-specific challenges
• Enhance your knowledge in both theoretical and practical
aspects of AI

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

Where you will need it

Abstract • To understand the course Machine Learning


• At work in any position related to with forecasting and analytics
Mathematical statistics is a branch of mathematics that deals with the • In life for a more critical and meaningful perception of
description and analysis of data for the construction of probabilistic mod- information
els of random phenomena that gave rise to these data. The described
intermediate position between real observations and abstract probabilis-
Syllabus
tic models makes mathematical statistics the main tool for solving ap-
plied problems, in which uncertainty is interpreted as randomness. In • Fundamentals of mathematical statistics: descriptive statistics,
this course, we will get acquainted with both classical results in this area, parameter estimation, confidence intervals, hypothesis testing,
and with more modern computational methods. goodness of fit and homogeneity tests, linear regression
Practical classes will be conducted on Python, on which we will apply • Monte Carlo method, resampling methods
the acquired knowledge to real data and investigate the limits of applica- • Fundamentals of the Bayesian approach, Bayesian classification
bility of the studied methods.
You will learn
• visualize data for preliminary analysis
• evaluate unknown parameters of the model under training and
determine the quality of the assessments received
• formulate problems in terms of statistical hypotheses and test
them
• use bootstrap for parameter estimation and hypothesis testing
• work with linear models, determine their quality and use them
for forecasting
• use the packages scipy.stats, pandas, matplotlib,
sklearn, etc. to solve the problems described above on real
data

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

You will learn


Nikolay
Chukhin • Analyze and solve advanced graph theoretical problems
• Conduct rigorous proofs and logical reasoning in graph theory
Algorithms for NP-hard Problems Prerequisites
• Discrete probability (Discrete Mathematics 2)
elective (5–8 semesters) • Basic algorithms (Algorithms 1 and 2)
(x ∨ y ∨ z) 6 ECTS, 3 hours per week
homework, midterm, final exam Where you will need it
• For designing algorithms for hard problems.
• For doing research in Theoretical Computer Science.

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

You will learn


• To design approximation, exact, and parameterized algorithms.
• To distinguish between easy and hard computational problems.
Alexander • To implement algorithms for NP-hard problems.
Kulikov
Complexity Theory Prerequisites
• Discrete probability (Discrete Mathematics 2)
elective (5–8 semesters) • Basic algorithms (Algorithms 1 and 2)
? 6 ECTS, 3 hours per week
P = NP
homework, midterm, final exam Where you will need it
• For distingushing between computationally hard and easy
problems
• For doing research in Theoretical Computer Science
• For getting a million dollar prize for solving the P vs NP problem
Abstract
Syllabus
In this class, we will try to understand the idea of computation itself.
We will start by learning the necessary language and showing that there • Computability and uncomputability
are problems that we can not solve even with unlimited resources. Then • P vs NP
we will dive into the intricate world of the complexity classes. • Polinomial hierarchy
• Space complexity
• Randomized computation
• Complexity of boolean circuits
• Can an untrustworthy magician with infinite knowledge be
useful?

You will learn


• The language of modern theoretical computer science
• To understand the complexity of problems through different
lenses
• To navigate the web of complexity classes
• Cool staff

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

This short course provides a brief but comprehensive introduction


Syllabus
to practical applications of formal methods for specifying and designing
software systems. • State machines and their safety properties
Formal Methods are an area of Computer Science that studies con- • System specifications using temporal logic of actions
struction of secure and highly reliable software and hardware. Formal • Fairness and liveness, refinement
methods are concerned with specifications that are precise and are stated • A tool: TLA+
in languages endowed with a formal syntax and semantics (i.e., precise • Basics of Satisfiability Modulo Theories
meaning). Formality helps the specification process in at least two ways: • A tool: Z3 SMT Solver
(a) it delivers unambiguous, high-quality specifications, and (b) it enables • Introduction to deductive program verification and Hoare Logic
automated tool support. As we will see, formal specification techniques • A tool: Dafny Program Verifier
allow for using state-of-the-art tools for automated validation and verifi-
cation that help software developers make sense of the code, looking for
errors in requirements, models, designs, and implementations. You will learn
We will study a collection of techniques for formal software develop- • The principes behind machine-assisted formal reasoning
ment, spanning the whole development process: from high-level seman- • To express a variety of correctness properties of systems, data
tics that models a system’s behavior to verifying that its implementation structures, and algorithms
does what is intended. This study will be done through the use of actual • To employ formal verification for ensuring the absence of bugs
tools supporting these techniques. and vulnerabilities in correctness-critical software

Ilya
Sergey

You might also like