Algorithms and Data Structures

This class has been cancelled

Course Description

Algorithms and data structures are crucial knowledge for modern software engineers. It is a required skill for people who want to solve complex problems and implement efficient solutions for business needs.

This course is specifically designed to cover the fundamental topics of algorithms, discuss different data structures, and focus on applying this knowledge to solve algorithm problems.

After this course, participants will be able to:

  1. Understand essential algorithms and data structures;
  2. Build an intuition of how to solve a particular algorithm problem;
  3. Advance their knowledge with different algorithms and techniques;
  4. Analyze runtime and space complexity;

This course was already taught online with more than 100 participants at EPAM Systems with an average score of 4.7 out of 5, and below you can find testimonials from previous students:

  1. “The course content is very good. It is in-depth and all relevant. I have encountered most of these questions in prior interviews. The presentation, command of the topic, and ease of explanation are amazing.”
  2. “His graphical explanations really helped a lot to understand the logic behind resolving the problems, and some solutions made me see the problems from a different perspective, which is great. He always tried to do his best to explain our doubts. Very grateful with him.”
  3. “Aleksei always gave his best to entice the audience to participate.”
  4. “Aleksei did a huge job choosing good examples for each topic.”


Course participants should have a basic understanding of C++, algorithms, and data structures. 

Students will require a laptop with a Leetcode account.

Course Topics

Course topics are split between two consecutive days.

On the first day, the instructor will introduce the overall course structure and start with warmup problems related to sorting and searching. Next, we will cover sliding window and techniques to solve interval problems. We finish the day by diving deep into the Heap Queues and Linked Lists.

On the second day, we will focus on advanced problems. We will start with revisiting binary trees and graphs and then transition to backtracking. The final topic will cover dynamic programming techniques.

Register Here

Course Instructor

Aleksei Ivanov

Aleksei Ivanov is a lead software engineer at EPAM Systems, working in the Bay Area for well-known top tech companies. In the last several years, he has solved almost 1000 problems on the Leetcode platform and will share his expertise with the audience. In the past 3 years he worked for AWS (Amazon Redshift and Amazon Athena) and delivered multiple features used by companies and clients individuals all written in C++.  You might want to explore his LinkedIn and Leetcode accounts.Lead Software Engineer at EPAM Systems.