Learn Data Structures and Algorithms with these resources
Tags: algorithms, beginners, career
Published: 2019-12-31 14:22:28

Data Structures and Algorithms is a very dense field of study. Companies such as Google and Amazon include solving problems in this area as a large part of their application processes. As a web developer, I don't think it's as important to know, but I enjoy learning about it. In this article, I share the resources I have used.

## Assumed knowledge

All the resources below assume basic coding skills and some assume basic knowledge of JavaScript, Python and/or JavaScript. If you feel you need to brush up on these skills, I would recommend:

- [Learn how to code with these resources](https://learnitmyway.com/2017/06/04/learn-how-to-code-with-these-resources/)
- [Learn Java with these resources](https://learnitmyway.com/2017/07/02/learn-java-with-these-resources/)
- [Learn JavaScript with these resources](https://learnitmyway.com/learn-javascript-with-these-resources/)

## Resources

### [Algorithms - Khan Academy](https://www.khanacademy.org/computing/computer-science/algorithms)

I discovered this course a little bit later, but it would have been a great place to start because it is very beginner-friendly.

- Language: JavaScript
- Type: Course with exercises

### [Intro to Data Structures and Algorithms - Udacity](https://www.udacity.com/course/data-structures-and-algorithms-in-python--ud513)

A nice place to start. The course goes through the most common data structures and algorithms and also demonstrates a mock interview.

- Language: Python
- Type: Video course with exercises

### [Cracking the Coding Interview - Gayle Laakmann McDowell](http://www.crackingthecodinginterview.com/)

A practical guide to data structures and algorithms. This book has so much content, which can be overwhelming, but I found it useful and enjoyable. Examples and solutions are in Java, but there are [community solutions](https://github.com/careercup/CtCI-6th-Edition) in other languages as well.

- Language: Java
- Type: Book

### [LeetCode](https://leetcode.com/)

Great for practice with varying levels of difficulty. Almost all problems have an official solution in Java, but there are also community solutions in other languages. You can also compare the runtime and memory with other submissions. However, I found this to be inconsistent sometimes. Nevertheless, I compared this website with a lot of similar ones and liked it the most.

- Language: Many
- Type: Exercises

### [Exploring the Two-Sum Interview Question in JavaScript - Nick Scialli](https://nick.scialli.me/exploring-the-two-sum-interview-question-in-javascript/)

An in-depth article that looks at a common interview question solved using JavaScript.

- Language: JavaScript
- Type: Article

## Other helpful resources

- [Data Structure Visualizations](https://www.cs.usfca.edu/~galles/visualization/Algorithms.html)
- [Big-O Cheat Sheet](https://www.bigocheatsheet.com/)

## Other resources I haven't used yet

- [Algorithms Specialization - Stanford](https://www.coursera.org/specializations/algorithms)
- [Algorithms, Part I - Princeton](https://www.coursera.org/learn/algorithms-part1)

## Final Thoughts

Learning Data Structures and Algorithms can be quite challenging. LeetCode categorises their problems as easy, medium and hard but I haven't even attempted a hard problem yet. I was surprised how much there is to learn in this space and how much you need to know to get a job at one of the big tech companies. However, I do get the impression it is only a matter of practice, and there are unlimited ways of doing that.

---

**Before you go…** Thank you for reading this far! If you enjoyed the article, please don't forget to ❤️ it.
 
I write about my professional and educational experiences as a self-taught software developer, so click the **+FOLLOW** button if this interests you! You can also check out [my website](https://learnitmyway.com/) or subscribe to [my newsletter](https://tinyletter.com/developerdavo-noreply) for more content.

You might also like:
- [Is full-stack web development worth learning?](https://learnitmyway.com/opinion-full-stack/)
- [Learning material – software development](https://learnitmyway.com/learning-material-software-development/)  (a list of learning resources, starting with Introduction to Computer Science)
- [How to write a CV as a software developer](https://medium.com/@developerdavo/how-to-write-a-cv-as-a-software-developer-8841a79f8458) (CV included)