Algorithms & Data Structures for С++ course

Chaos Camp 2022 - 2023

The Algorithms and Data Structures for С++ course is an intensive free of charge training suitable for students and junior professionals interested in mathematical algorithms, coding and cutting-edge technologies.

The main lecturer of the course is from our partner MNKnowledge, however senior professionals from Chaos will also take part as lecturers and mentors.


Admission process, details & important dates

The admission process for the course is as follows:

  • Applications for participation in the course are to be submitted by November 3, 2022.
  • An initial screening process will identify a selection of candidates who will be invited to complete an online entry test on November 5, 2022 which will assess their knowledge in mathematics, algorithms and English.
  • The best candidates (based on test results) start the intensive training on  November 17, 2022.
  • Lectures will be held twice a week (Tuesdays and Thursdays) at 18:30 local time in Bulgarian language. Most lectures will be held online, except for the sessions on November 17, 2022 and January 17, 2023 which are planned to be held onsite at Chaos’ office (145 Tsarigradsko shose, Sofia Office Center, Sofia).
  • The course wraps up at the end of February, 2023.
  • In order to receive a Chaos Certificate for participation in the course, participants must have a high rate of attendance, do their homework regularly, and complete the final project. 


  • Preselection technical test.
  • Data types and their behavior. Math algorithms. Dealing with the floating point numbers. Precision in floating point calculations. Specifics. (2.5 h)
  • A look at computer architectures. Memory structure. Why do we need to know that? Access patterns and according data arrangement. (2.5 h)
  • Recursion. Back tracking. Memoization. (2.5 h)
  • Statistical and probabilistic algorithms. Randomized algorithms. (2.5 h)
  • Introduction to parallel calculations and algorithms. Specifics and what to be aware of. A simple example with OpenMP. Examples with statistical algorithms. (2.5 h)
  • Sorting algorithms. Types, specifics. (2.5 h)
  • Generic algorithms: selection sort, insertion sort, bubble sort, shaker sort, Shell sort, merge sort, quick sort. (2.5 h)
  • Special algorithms: counting sort, radix sort. (2.5 h)
  • Searching - linear, binary, interpolation and parallel. (2.5 h)
  • Geometry (2.5 h)
  • Mid-term exam.
  • Hash functions, hashing, hash tables. Pyramid, pyramid sort. (2.5 h)
  • When we run out of memory - external sorting and searching. (2.5 h)
  • Special linear data structures. Chunk array, skip list. (2.5 h)
  • Non-linear data structures. Trees, DFS and BFS. Binary ordered tree. When we can use it and when to avoid it. (2.5 h)
  • How to fix the broken tree? Balanced trees. DSW algorithm for balancing. (2.5 h)
  • Self-balancing trees. Red-Black tree. AVL tree. (2.5 h)
  • Shared access to the tree. Parallel building and searching in a BST. B-trees. (2.5 h)
  • More on trees - Prefix trees. Automata. (2.5 h)
  • Interval trees. Dynamic Order Statistics. (2.5 h)
  • Regular trees with higher dimension. KD-trees. BVH. (2.5 h)
  • More on probabilities and statistics. Monte Carlo and Las Vegas algorithms.
  • Final exam.

Stefan Shklifov

Software Developer, V-Ray for Maya team
Participant in Chaos Camp 2019 - 2020

"The Algorithmic course program seemed quite promising and I was eager to apply. I also wanted to learn more about the technologies that Chaos developed. We learned about different algorithms and data structures and the curriculum turned out to be quite intense. If one wants to get the best out of it they have to read additional materials, to code and to regularly prepare their homework.

I have been part of the Chaos team for 2.5 years now and it feels great to be here. Actually the course opened the doors to Chaos for me."


Associate Professor Petar Armyanov, Ph.D.
Associate Professor Petar Armyanov, Ph.D. holds an MSC and Ph.D. degree in Informatics from Sofia University St. Kliment Ohridski. He joined the faculty in 2016 to teach 12 subjects, all related to programming. He was also the assistant coach of the university’s programming team. His interests include algorithms, programming languages, computer graphics, and high-performance computing. Armyanov has more than 10 years of professional experience as a programmer.

Lyubomir Koev
Lyubomir Koev is a developer with almost 10 years of professional experience. His core strengths are C++ and algorithms (his weakness is gaming!). For the past eight years, he’s been a teaching assistant at the Faculty of Mathematics and Informatics at Sofia University for courses in C++, data structures and algorithms. You can find his published materials on his GitHub profile.

Guest lecturers

Professor Krassimir Manev, Ph.D.
Krassimir Manev is a Bulgarian mathematician and computer scientist, professor in New Bulgarian University. He has years of experience in the Bulgarian National Olympic team in Informatics and from 2014 to 2017 he was the President of the International Olympiad in Informatics. He is also а founder and President of the European Junior Olympiad in Informatics.

Associate Professor Boyko Bantchev, Ph.D.
Associate Professor Boyko Bantchev is an alumnus of Sofia University and has been teaching there for many years. Being affiliated with the Institute of Mathematics and Informatics of the Bulgarian Academy of Sciences, he does some research, experimentation, computer programming, and teaching in the fields of programming languages, geometric computing, vector computer graphics, and programming in general.

© 2024 Chaos Software EOOD. All Rights reserved. Chaos®, V-Ray® and Phoenix FD® are registered trademarks of Chaos Software EOOD in Bulgaria and/or other countries.