Software Engineering


Master the Coding Interview: Data Structures + Algorithms

Ultimate coding interview bootcamp. Get more job offers, negotiate a raise: Everything you need to get the job you want!

4.66 (16585 reviews)


19.5 hours


Jul 2021

Last Update
Regular Price

Unlimited access to 30 000 Premium SkillShare courses

What you will learn

Ace coding interviews given by some of the top tech companies

Become more confident and prepared for your next coding interview

Learn, implement, and use different Data Structures

Learn, implement and use different Algorithms

Get more interviews

Professionally handle offers and negotiate raises

Become a better developer by mastering computer science fundamentals


Updated for 2021 hiring season! Join a live online community of over 400,000+ developers and a course taught by an industry expert that has actually worked both in Silicon Valley and Toronto as a senior developer. Graduates of this course are now working at Google, Tesla, Amazon, Apple, IBM, JP Morgan, Facebook + other top tech companies.

Want to land a job at a great tech company like Google, Microsoft, Facebook, Netflix, Amazon, or other companies but you are intimidated by the interview process and the coding questions? Do you find yourself feeling like you get "stuck" every time you get asked a coding question? This course is your answer. Using the strategies, lessons, and exercises in this course, you will learn how to land offers from all sorts of companies.

Many developers who are "self taught", feel that one of the main disadvantages they face compared to college educated graduates in computer science is the fact that they don't have knowledge about algorithms, data structures and the notorious Big-O Notation. Get on the same level as someone with computer science degree by learning the fundamental building blocks of computer science which will give you a big boost during interviews. You will also get access to our private online chat community with thousands of developers online to help you get through the course.

Here is what you will learn in this course:


1. Big O notation

2. Data structures:

* Arrays
* Hash Tables
* Singly Linked Lists
* Doubly Linked Lists
* Queues
* Stacks
* Trees (BST, AVL Trees, Red Black Trees, Binary Heaps)
* Tries
* Graphs

3. Algorithms:

* Recursion
* Sorting
* Searching
* Tree Traversal
* Breadth First Search
* Depth First Search
* Dynamic Programming

Non Technical:

- How to get more interviews
- What to do during interviews
- What do do after the interview
- How to answer interview questions
- How to handle offers
- How to negotiate your salary
- How to get a raise

Unlike most instructors, I am not a marketer or a salesperson. I am a senior developer and programmer who has worked and managed teams of engineers and have been in these interviews both as an interviewee as well as the interviewer.

My job as an instructor will be successful if I am able to help you become better at interviewing and land more jobs. This one skill can really change the course of your career and I hope you sign up today to see what it can do for your career!

Taught by:

Andrei is the instructor of the highest rated Web Development course on Udemy as well as one of the fastest growing. His graduates have moved on to work for some of the biggest tech companies around the world like Apple, Google, JP Morgan, IBM, etc... He has been working as a senior software developer in Silicon Valley and Toronto for many years, and is now taking all that he has learned, to teach programming skills and to help you discover the amazing career opportunities that being a developer allows in life. 

Having been a self taught programmer, he understands that there is an overwhelming number of online courses, tutorials and books that are overly verbose and inadequate at teaching proper skills. Most people feel paralyzed and don't know where to start when learning a complex subject matter, or even worse, most people don't have $20,000 to spend on a coding bootcamp. Programming skills should be affordable and open to all. An education material should teach real life skills that are current and they should not waste a student's valuable time.   Having learned important lessons from working for Fortune 500 companies, tech startups, to even founding his own business, he is now dedicating 100% of his time to teaching others valuable software development skills in order to take control of their life and work in an exciting industry with infinite possibilities. 

Andrei promises you that there are no other courses out there as comprehensive and as well explained. He believes that in order to learn anything of value, you need to start with the foundation and develop the roots of the tree. Only from there will you be able to learn concepts and specific skills(leaves) that connect to the foundation. Learning becomes exponential when structured in this way. 

Taking his experience in educational psychology and coding, Andrei's courses will take you on an understanding of complex subjects that you never thought would be possible.  

See you inside the courses!


Master the Coding Interview: Data Structures + Algorithms
Master the Coding Interview: Data Structures + Algorithms
Master the Coding Interview: Data Structures + Algorithms
Master the Coding Interview: Data Structures + Algorithms



How To Succeed In This Course

Join Our Online Classroom!

Exercise: Meet The Community!

Getting More Interviews

Section Overview


Exercise: Resume Walkthrough

Resume Review

Resources: Resume Templates

What If I Don't Have Enough Experience?

Optional Exercise: Github Master


Optional Exercise: LinkedIn Endorsements


Resources: Free Portfolio Templates


Resources: Email

Where To Find Jobs?

Resources: Where To Find Jobs?

When Should You Start Applying?

Section Summary

Monthly Industry Updates

Big O

Setting Up Your Environment

Section Overview

Python + JavaScript Solutions!

What Is Good Code?

Big O and Scalability



Exercise: Big O Calculation

Solution: Big O Calculation

Exercise: Big O Calculation 2

Solution: Big O Calculation 2

Simplifying Big O

Big O Rule 1

Big O Rule 2

Big O Rule 3


Big O Rule 4

Big O Cheat Sheet

What Does This All Mean?


3 Pillars Of Programming

Space Complexity

Exercise: Space Complexity

Exercise: Twitter

Optional: Javascript Loops

Section Summary

How To Solve Coding Problems

Section Overview

What Are Companies Looking For?

What We Need For Coding Interviews

Exercise: Google Interview

Exercise: Interview Question

Exercise: Interview Question 2

Review Google Interview

Optional Exercise: Google Interview On Your Own

Section Summary

Data Structures: Introduction

Section Overview

What Is A Data Structure?

How Computers Store Data

Data Structures In Different Languages

Operations On Data Structures

Data Structures: Arrays

Arrays Introduction

Static vs Dynamic Arrays

Quick Note: Upcoming Video

Optional: Classes In Javascript

Implementing An Array

Strings and Arrays

Exercise: Reverse A String

Solution: Reverse A String

Exercise: Merge Sorted Arrays

Solution: Merge Sorted Arrays

Interview Questions: Arrays

Arrays Review

Data Structures: Hash Tables

Hash Tables Introduction

Hash Function

Hash Collisions

Hash Tables In Different Languages

Exercise: Implement A Hash Table

Solution: Implement A Hash Table


Hash Tables VS Arrays

Exercise: First Recurring Character

Solution: First Recurring Character

Interesting Tidbit: Python Dictionaries

Hash Tables Review

Data Structures: Linked Lists

Linked Lists Introduction

What Is A Linked List?

Exercise: Why Linked Lists?

Solution: Why Linked Lists?

What Is A Pointer?

Our First Linked List

Solution: append()

Solution: prepend()

Node Class


Quick Note: Upcoming Video

Solution: insert()

Solution: remove()

Doubly Linked Lists

Exercise: Doubly Linked Lists

Solution: Doubly Linked Lists

Singly VS Doubly Linked Lists

Exercise: reverse()

Solution: reverse()

Linked Lists Review

Data Structures: Stacks + Queues

Stacks + Queues Introduction



Exercise: Stacks VS Queues

Solution: Stacks VS Queues

Quick Note: Upcoming Video

Optional: How Javascript Works

Exercise: Stack Implementation (Linked Lists)

Solution: Stack Implementation (Linked Lists)

Exercise: Stack Implementation (Array)

Solution: Stack Implementation (Array)

Exercise: Queue Implementation

Solution: Queue Implementation

Queues Using Stacks

Stacks + Queues Review

Data Structures: Trees

Trees Introduction

Binary Trees

O(log n)

Correction: Binary Search Trees

Binary Search Trees

Balanced VS Unbalanced BST

BST Pros and Cons

Exercise: Binary Search Tree

Solution: insert()

Solution: lookup()

Bonus Exercise: remove()

Solution: remove()

AVL Trees + Red Black Trees

Resources: AVL Trees + Red Black Trees

Binary Heaps

Quick Note on Heaps

Priority Queue


Tree Review

Data Structures: Graphs

Graphs Introduction

Types Of Graphs

Exercise: Guess The Graph

Graph Data

Exercise: Graph Implementation

Solution: Graph Implementation

Graphs Review

Data Structures Review

What Else Is Coming Up?

Algorithms: Recursion

Introduction to Algorithms

Recursion Introduction

Stack Overflow

Anatomy Of Recursion

Exercise: Factorial

Solution: Factorial

Exercise: Fibonacci

Solution: Fibonacci

Recursive VS Iterative

When To Use Recursion

Exercise: Reverse String With Recursion

Recursion Review

Algorithms: Sorting

Sorting Introduction

The Issue With sort()

Sorting Algorithms

Bubble Sort

Exercise: Bubble Sort

Solution: Bubble Sort

Selection Sort

Exercise: Selection Sort

Solution: Selection Sort

Dancing Algorithms

Insertion Sort

Exercise: Insertion Sort

Solution: Insertion Sort

Merge Sort and O(n log n)

Exercise: Merge Sort

Solution: Merge Sort

Stable VS Unstable Algorithms

Quick Sort

Optional Exercise: Quick Sort

Which Sort Is Best?

Resources: Heap Sort

Radix Sort + Counting Sort

Resources: Radix Sort + Counting Sort

Exercise: Sorting Interview

Solution: Sorting Interview

Sorting In Your Language

Sorting Review

Algorithms: Searching + BFS + DFS

Searching + Traversal Introduction

Linear Search

Binary Search

Graph + Tree Traversals

BFS Introduction

DFS Introduction


Resources: BFS vs DFS

Exercise: BFS vs DFS

Solution: BFS vs DFS



PreOrder, InOrder, PostOrder


Optional Exercise: Validate A BST

Graph Traversals

BFS in Graphs

DFS in Graphs

Dijkstra + Bellman-Ford Algorithms

Searching + Traversal Review

Algorithms: Dynamic Programming

Dynamic Programming Introduction

Memoization 1

Memoization 2

Fibonacci and Dynamic Programming

Dynamic Programming

Implementing Dynamic Programming

Interview Questions: Dynamic Programming

Dynamic Programming Review

Non Technical Interviews

Section Overview

During The Interview

Exercise: Hero Stories

Tell Me About Yourself

Exercise: Your Pitch

Why Us?

Tell Me About A Problem You Have Solved

Exercise: Past Projects

What Is Your Biggest Weakness

Exercise: Your Biggest Weakness

Any Questions For Us?

Resources: Questions To Ask A Company

Secret Weapon

After The Interview

Section Summary

Offer + Negotiation

Section Overview

Handling Rejection

Negotiation 101

Handling An Offer

Handling Multiple Offers

Getting A Raise

Exercise: Negotiation Master

Section Summary

Thank You

Become an Alumni

Thank You.

What You Can Do Now

Extras: Google, Amazon, Facebook Interview Questions

Coding Problems

Top Interview Questions

Amazon Interview Questions

Facebook Interview Questions

Google Interview Questions

Domain Specific Questions

Contributing To Open Source To Gain Experience

Contributing To Open Source

Contributing To Open Source 2

Exercise: Contribute To Open Source

Bonus: Extra Bits

Learning Guideline

Quick Note: Upcoming Videos

From JTS: Learn to Learn

From JTS: Start With Why

Coding Challenges

How To Use Leetcode

AMA - 100,000 Students!!


Bonus: Special Thank You Gift


Ermias9 October 2020

Great course I like the way of his teaching easy to understand it. Like the content I had a great time of learning thanks Andrei.

Kush8 October 2020

this was perfect! exactly what anybody new to ds and algo needs to learn. only improvement i would suggest is to include more steps wise exercises rather than implementing ADTs

Andreas8 October 2020

Perhaps I picked the wrong course, since I was only interested in improving my algorithmic skills. Also, getting a job as a software developer is not at all realistic right now given my lack of skills and not knowing what exactly I'm interested in. But this course did clarify a lot of things I didn't understand, especially regarding data structures like linked lists, trees and graphs. I still have a lot of questions, but I'm sure they will be answered with enough studying and through creating my own projects. Also, knowing how the interview process works is is good.

Mana7 October 2020

This is a good course. Andrei did a great job as usual. I think this course could be shortened a bit.

Angel30 September 2020

I found this course to be very informative. Teaches you so much more than just how to be a knowledgable programmer. A nice in depth data structures section, what to expect during the non technical interview and more. My only complain is the algorithms section. I feel that this section is rushed and deserves a bigger emphasis. Algorithms is just as important and if not more important than data structures. As for DFS/BFS I believe this section should have revolved around mostly graph implementation and not trees. The graph implementations are more challenging and shows the true depth of BFS/DFS in my opinion. Overall this was a great course and I have already purchased another course by Andrei. Thank you!

Senn25 February 2020

Very good information and I learned some of the data structures that I only knew about but never had implementation hands on. Many thanks.

Ruben20 February 2020

The instructor is very knowledgeable in the area and gives excellent examples and advice on what companies are looking for. So far it is an amazing course and I enjoy the way the instructor communicates the material. Very informative, well organized and thorough. I look forward to completing the course and putting in practice what I learn. Thank you for sharing such a great course.

Pavittar20 February 2020

A cool course, with good explanation of each topic. He explains everything when needed means he's not jumbling up in the course.

Philippe20 February 2020

I enjoyed this course so much. It covers everything an employee may face in his interview and how to get the best offer from different companies. For the technical part, this course shows many questions a programmer may face in google, Facebook, amazon, etc.

Tawfik19 February 2020

the course nobly aims at trying to cover way too much concepts but fails to do so fairy in many places, you can sense poor content

Manu16 February 2020

Most of the interview there is more stress on problem solving with DS. I think this course takes you through basics but leaves advance topics of implementation those basics.

Wesley16 February 2020

Great course, great content. The only issue I have is that he ends up rambling quite a bit. Sometimes makes for hard listening. You just want to get to the point.

Afrid15 February 2020

I am looking for a developer job. But finding a good mentor who guides you to this journey is a difficult task. So I find this course which sharpens my technical skills and help me to find at a better position to get those jobs by using the non-technical areas where I think need to work upon. This course is by now the best one I am looking for as a developer.

Lucas15 February 2020

One of the best courses I've ever taken on Udemy. Being an astronomer-turned-into-Data Scientist, I've always found myself in the in-between Statistics and Programming; this course helped me to improve a lot on the latter, with clear, fun and helpful explanations. The instructor is very captivating and I definitely recommend this course! Thank you and congrats for the awesome work, Andrei!

Daniel13 February 2020

It was somewhat more basic than I needed. A course for experienced programmers would have been more time efficient for me.


11/11/201993% OFFExpired
1/16/202094% OFFExpired
3/17/202092% OFFExpired
6/2/202093% OFFExpired
6/12/202094% OFFExpired
9/15/202094% OFFExpired
11/2/202094% OFFExpired
11/8/202094% OFFExpired
1/10/202193% OFFExpired


Udemy ID


Course created date


Course Indexed date
Course Submitted by