**Mosh Hamedani - The Ultimate Data Structures & Algorithms: Part 1**

Boost Your Employability

Studied Computer Science - but never really understood the complex topic of data structures and algorithms?

Or maybe you’re a self-taught programmer, with little to no knowledge of this important topic.

Or perhaps you failed a job interview because you couldn't answer basic data structure and algorithm questions.

Data structures and algorithms are patterns for solving problems. Developers who know more about data structures and algorithms are better at solving problems.

That’s why companies like Google, Microsoft and Amazon, always include interview questions on data structures and algorithms. They want to assess your problem-solving skills. They don't care how many programming languages and frameworks you're familiar with

Beginner

Lifetime Access

120 Lessons

4.5 Hours of Video

Interview Questions

Downloadable

Subtitles

Access on Mobile/TV

Certificate

By the end of this course, you'll be able to…

Ace your next coding interview

Write better, faster code

Become a better developer

Improve your problem solving skills

Master computer science fundamentals

Implement all the essential data structures from scratch

Master dozens of popular algorithms

What You'll Learn

This course is the first of a series. In this part, we'll be focusing on linear data structures. Part 2 is all about trees and graphs. Part 3 is about searching, sorting and string manipulation algorithms.

Here's what you're going to learn in the first part:

The Big O notation

Arrays

Linked Lists

Stacks

Queues

Hash Tables

This is the most comprehensive data structures and algorithms series online. Every example and exercise is picked from popular interview questions asked by Google, Microsoft, Amazon and other big companies.

Most data structure books and courses are too academic and boring. They have too much math and their code looks ugly, old and disgusting! This course is fun and easy to follow and shows you how to write beautiful code like a software engineer, not a mathematician.

Who is this course for?

Anyone preparing for a coding job interview

Computer science students whose lecturers failed to explain the topics

Self-taught developers who missed out on a computer science degree

Anyone who wants to become a better developer

Prerequisites

In this course, I use Java to teach the concepts but you can apply these concepts in any programming language. Our focus is on data structures and algorithms, not programming languages and tools.

All you need to take this course are some basic programming skills. If you know variables, loops, and conditional statements, you're good. If you need a quick refresher to get up to speed with Java syntax, you can watch the first part of my Java series.

You don't need any experience with data structures or algorithms.

Get immediately download **Mosh Hamedani - The Ultimate Data Structures & Algorithms: Part 1**

**Course Curriculum**

Getting Started

1- Course Outline (2:52)

2- Source Code

Follow Me Around

The Big O Notation (16 m)

1- Introduction (0:24)

2- What is Big O (1:58)

3- O(1) (1:29)

4- O(n) (3:44)

5- O(n^2) (2:24)

6- O(log n) (2:39)

7- O(2^n) (0:50)

8- Space Complexity (2:32)

9- Cheat Sheet

Arrays (30 m)

1- Introduction (0:44)

2- Understanding Arrays (3:08)

3- Working with Arrays in Java (3:29)

4- Exercise- Array Class (2:51)

5- Solution- Creating the Class (3:19)

6- Solution- insert() (4:19)

7- Solution- removeAt() (4:50)

8- Solution- indexOf() (2:28)

9- Dynamic Arrays (3:48)

10- Arrays- Exercises

11- Summary (1:09)

Linked Lists (54 m)

1- Introduction (0:36)

2- What are Linked Lists (4:33)

3- Working with Linked Lists (3:24)

4- Exercise- Building a Linked List (1:25)

5- Solution- addLast (6:09)

6- Solution- addFirst (2:13)

7- Solution- indexOf (1:54)

8- Solution- contains (1:05)

9- Solution- removeFirst (4:23)

10- Solution- removeLast (4:40)

11- Implementing size() (4:15)

12- Converting Linked Lists to Arrays (2:10)

13- Cheat Sheets (1:12)

14- Arrays vs Linked Lists (3:21)

15- Types of Linked Lists (3:14)

16- Exercise- Reversing a Linked List (1:33)

17- Solution- Reversing a Linked List (9:00)

18- Exercise- Kth Node from the End (3:20)

19- Solution- Kth Node from the End (5:22)

20- Linked Lists- Exercises

21- Summary (1:12)

A Quick Note

Stacks (42 m)

1- Introduction (0:31)

2- What are Stacks (2:47)

3- Working with Stacks (2:21)

4- Exercise- Reversing a String (0:41)

5- Solution - Reversing a String (5:01)

6- Exercise- Balanced Expressions (2:54)

7- Solution- A Basic Implementation (5:17)

8- Solution- Supporting Other Brackets (3:36)

9- Solution- First Refactoring (4:09)

10- Solution- Second Refactoring (5:50)

11- Exercise- Building a Stack Using an Array (0:47)

12- Solution- Implementing a Stack Using an Array (8:18)

13- Stacks- Exercises

14- Summary (0:33)

Queues (53 m)

1- Introduction (0:26)

2- What are Queues (2:04)

3- Queues in Java (5:12)

4- Exercise- Reversing a Queue (1:06)

5- Solution- Reversing a Queue (2:17)

6- Exercise- Building a Queue Using an Array (2:03)

7- Solution- A Basic Implementation (6:32)

8- Solution- Circular Arrays (5:54)

9- Exercise- Implementing a Queue Using a Stack (0:55)

10- Solution- Building a Queue Using a Stack (7:43)

11- Priority Queues (1:53)

12- Exercise- Building a Priority Queue (3:57)

13- Solution- Building a Priority Queue (8:51)

14- Solution- Refactoring (3:02)

15- Queues- Exercises

16- Summary (0:57)

Hash Tables (68 m)

1- Introduction (0:26)

2- What are Hash Tables (2:44)

3- Working with Hash Tables (6:06)

4- Exercise- Find the First Non-repeated Character (0:54)

5- Solution- First Non-repeating Character (7:39)

6- Sets (2:23)

7- Exercise- First Repeated Character (0:32)

8- Solution- First Repeated Character (2:36)

9- Hash Functions (5:55)

10- Collisions (1:06)

11- Chaining (1:40)

12- Open Addressing- Linear Probing (2:41)

13- Open Addressing- Quadratic Probing (1:29)

14- Open Addressing- Double Hashing (3:19)

15- Exercise- Build a HashTable (2:36)

16- Solution- put() (6:07)

17- Solution- get() (4:29)

18- Solution- remove() (2:30)

19- Solution- Refactoring (11:04)

20- Hash Tables- Exercises

21- Summary (1:25)

22- Course Wrap Up (0:32)

23- Thank You

**Your Instructor**

Mosh Hamedani

Mosh Hamedani

Hi! My name is Mosh Hamedani. I'm a software engineer with two decades of experience. I've taught millions of people how to code and how to become professional software engineers through my online courses and YouTube channel.

I believe coding should be fun and accessible to everyone.

Read more: https://archive.ph/VEyVZ