I thought that my education in college would prepare me for interviewing as a software engineer. I was wrong. It helped don't get me wrong, but it wasn't what companies tested me on in interviews. I got tested on my understanding of data structures and algorithms and showcasing the extent to which I could use them. Below are the resources that helped me truly understand the subject and, helped me land my jobs.
Data Structures + Algorithms
A big part of programming is organizing your data so that you can store and retrieve it effectively. This is what data structures allow us to do. They're the lifeblood of programming. Almost every program written has given thought to how do I store this? How do I retrieve this? This is why at most universities there are whole classes dedicated to data structures, this is why when programmers go to job interviews they ask them about data structures. So much of what a programmer does depends on how they organize their data.
It's hard to talk about data structures without mentioning algorithms, because they're so intertwined. Algorithms In general are instructions on how to do something. Algorithms say things like "this is how you sort data" and "this is how you find the shortest path". Interestingly enough there are many ways to do something, and the way you do it can effect your program dramatically.
Note: going forward I'll refer to Data Structures as DS, and I'll refer to data structures and algorithms as DS+A
Free Resources
Free Code Camp - This video (course? Its 8 hours) is great introductory material if you've not been exposed much to analysis and DS+A. It provides some motivating thoughts to get you thinking, and then goes to the heart of the topic. No non-sense and straight to the point.
MIT - Intro To Algorithms - This is MIT's course for an introduction to algorithms, and it's high quality as you would expect. Unsurprisingly like many university courses online it focuses a lot of time on mathematical aspects that aren't often used in real life. There is still a lot of value in these videos, but if you don't understand the math it'll be hard to grasp all the concepts.
Paid Resources
The Algorithm Design Manual - Steven Skiena is the author of this book and a CS professor known for his algorithmic work. This book is all about DS+A and their analysis, and it's one many students use to study algorithms. Again like most university resources there isn't a shortage of math, but that being said it still has great insights, descriptions, and implementations of DS+A. Oh also Skiena has a free course on YouTube
Leetcode - Leetcode is a website that is filled with DS+A questions (programming challenges). Most of them are for interviews, but the most effective way to understand both DS+A is to use them in the context of problems. They provide solutions and sometimes articles on how to solve the problems. After a while they just feel like puzzles with a dependency on DS+A knowledge and can be quite enjoyable.
Interview Cake - Interview Cake is similar to Leetcode, except that it is more structured. It provides guidance through readings, and then problems to test your knowledge of concepts.
Cracking the coding interview - This book may come across as a book for interviewing (and it is), but it's also a great resource on practical DS+A. Programming interviews are notoriously based in DS+A knowledge and analysis. This book makes approaching big O and DS+A simple. It's on its 6th edition, and they've been able to clearly and succinctly communicated these ideas into digestible chapters. Also, It's filled with exercises and answers to the exercises so you can test yourself. This book helped me get a job, and I'm sure many other developers.
Final Thought
If you want to get a good understanding of DS+A in a way that abstracts most of the rigorous mathematical techniques then stick to these resources
- Leetcode
- Cracking the coding interview
- Interview Cake
- Free Code Camp
If you want a more traditional and mathematical understanding of DS+A then check these out
- Skiena book
- MIT - intro to algorithms
That's it. If you enjoyed this writing there's more coming in my newsletter! To stay updated subscribe here!
Top comments (0)