CS412BKK

Faculty
Ivan Solomatin
Leading Engineer at Samsung R&D Institute Russia.
Course length
Duration
Total hours
Credits
Language
Course type
Fee for single course
Fee for degree students
Skills you’ll learn
This course gives an overview of the most popular advanced algorithms, as well as the data structures used in modern applications. The module will give the students theoretical knowledge, experience, and intuition for solving programming problems at an advanced level. Understanding algorithms may be highly useful for both effective programming during your job or research and for passing your job interview.
15 classes
Divide and Conquer: finding the k-th order statistic in linear time. Sorting algorithms. Counting inversions in an array.
Binary search by answer, Ternary search for unimodal functions.
DFS and BFS: traversals, coloring, topological sorting. Cycle detection in directed and undirected graphs. Bridges and articulation points. Strongly connected components.
Dijkstra's algorithm (with heap), Bellman–Ford algorithm (negative edges, negative cycle detection), Floyd–Warshall algorithm (all-pairs shortest paths).
Universal hashing, Rabin–Karp algorithm (substring search with rolling hash), Rolling hash techniques.
Brute-force techniques. Dynamic programming on trees.
Dynamic programming by profile.
Minimum Spanning Trees. DSU (Union-Find) data structure.
Lowest Common Ancestor problem (LCA)
Computational Geometry: Basic primitives: point, vector, orientation (cross product), Classical problems: line segment intersection, point-in-polygon test, Convex hull construction.
Bipartite graphs, König's theorem Kuhn's algorithm (maximum bipartite matching), Maximum flow problem.
Binary heap, heapsort, Binomial heap, AVL tree, Red-black tree, Cartesian tree (Treap).
RSQ, RMQ. Segment tree: range minimum/sum queries, range updates. Persistent data structures: persistent stack, persistent array, persistent segment tree.
Intro to Computational Complexity Theory. Complexity classes P and NP, NP-Complete problems, Reductions: examples (SAT, vertex cover, clique).
Exam
Basic python programming.
Basic calculus understanding.
Algorithms and Data structures (level 2).
* Lectures
* Workshops
* Individual exercises
Ivan Solomatin is an Expert Engineer at Samsung Research. His research interests are Biometrics, Computer Vision and Deep Learning. Received Bachelor (2016), Masters (2018) and PhD (2022) degree in Applied Mathematics at MIPT.
He was a coach for competitive programming for schoolchildren in 2016-2018. Since 2020 he has been teaching Algorithms at MIPT. Loves to communicate with students and tries to do his best to give them fast and efficient feedback.
See full profileApply for this course
by Ivan Solomatin
Total hours
45 Hours
Dates
May 18 - Jun 05, 2026
Fee for single course
€1500
Fee for degree students
€750
How to secure your spot
Complete the form below to kickstart your application
Schedule your Harbour.Space interview
If successful, get ready to join us on campus
FAQ
Will I receive a certificate after completion?
Yes. Upon completion of the course, you will receive a certificate signed by the director of the program your course belonged to.
Do I need a visa?
This depends on your case. Please check with the Spanish or Thai consulate in your country of residence about visa requirements. We will do our part to provide you with the necessary documents, such as the Certificate of Enrollment.
Can I get a discount?
Yes. The easiest way to enroll in a course at a discounted price is to register for multiple courses. Registering for multiple courses will reduce the cost per individual course. Please ask the Admissions Office for more information about the other kinds of discounts we offer and what you can do to receive one.