> For the complete documentation index, see [llms.txt](https://guide.ivanzakutnii.com/the-hard-way-to-swe-excellence/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.ivanzakutnii.com/the-hard-way-to-swe-excellence/learning-path/algorithms-and-data-structures-1-2.md).

# Algorithms and Data Structures 1/2

<figure><img src="/files/N2fqROJvG7PLyYyD7VLh" alt=""><figcaption></figcaption></figure>

Now you need to study algorithms and data structures, again with increasing complexity, specifically from Data Structures and Algorithms (DSA) courses.

Two main groups to focus on:

* Basic data structures – lists, stacks, queues, sets, hash tables, dictionaries
* Trees and graphs (we'll get back to these later)

There's a huge amount of paid and free materials, and many video lessons online.

Again - it's up to you, you can learn however you want, especially if you'll do it through thinking-through-writing - good luck and have fun cracking your brain!

If you want to save your time, here's an excellent and rock-solid plan.

Buy two books:

* "Cracking the Coding Interview" by McDowell (latest edition)
* "Programming Interviews Exposed" by Mongan

Study algorithm:

1. Study a topic from the book
2. Go practice it on Codewars:
   * Select relevant tags (Linked Lists, Binary Trees, Sets, etc.)
   * Focus on 5-6 kyu difficulty
   * Solve all available problems in each category

Also upload solutions to GitHub, in the same or separate repository. If you write notes through thinking-through-writing or maintain a blog about covered materials - you'll be amazed at how quickly you progress in understanding data structures and programming.

⚠️ Attention! When you've studied basic data structures, continue following the learning plan, we'll return to trees and more complex algorithms later. ⚠️

***

Answer to a possible question:

> Hey Ivan, what about leetcode/neetcode?

Oh you are a nerd aren't you? What are you doing here?

<div align="left"><figure><img src="/files/GfNuPbTAVcbXRgsdRktW" alt="" width="375"><figcaption></figcaption></figure></div>

LeetCode and NeetCode are good for practicing algorithms and data structures - you can definitely use them instead of Codewars. You may use any platform, just follow the book and solve problems to study each topic well.
