
Follow practical tips to maximize learning in this data structures and algorithms bootcamp: keep paper and pen handy, draw diagrams, try problems yourself before viewing solutions, and build from scratch.
https://github.com/rasmus4200/algorithms101
Help setting up your local development environment.
Delve into what makes arrays a popular data structure by examining insertion, growth, and the killer feature. Compare arrays with linked lists to reveal how they work behind the scenes.
Compare data structures and their APIs, from arrays and linked lists to array lists, stacks, and queues, and see how inserts, deletes, and finds are implemented.
Discover the array's killer feature: random access by index in constant time. Learn how getting and setting elements quickly, in O(1) time, sets arrays apart from other data structures.
Learn how dynamic arrays resize by doubling capacity, copy elements to a new larger structure, and preserve fast random access while noting static capacity and potential wasted space.
Implement get first and get last in a linked list by returning the head's data for the first element and walking from head to tail to reach the last.
Add back to a linked list by walking from the head to the tail and linking the last node to the new node, handling head being null.
Explore the double linked list, a bidirectional variant of the single linked list with pointers in both directions, enabling forward and backward traversal and faster certain operations.
Visualize and compare Big O runtimes from constant time to factorial, with examples like array access, log n searches, linear, n log n sorts, quadratic nested loops, and 2^n recursion.
Master Big O notation and practice describing algorithm runtimes to excel in interviews, using nested loops as O(n*m) and sequential arrays as O(n+m) while simplifying to common forms.
Explore stacks and queues as core data structures, covering LIFO and FIFO concepts, push, pop, peek, and isEmpty, and their relevance to interviews.
Visualize stacks with push and pop at the head for LIFO, and queues with tail insertions and head removals for FIFO, all with O(1) operations.
Discover hash tables as key-value lookup data structures that enable lightning-fast searches. Learn how hashing functions store and retrieve entries, making hash tables the go-to choice for quick lookups.
Understand hash table runtime characteristics, typically O(1) for searching, inserting, and deleting with a good hash function, but collisions can yield O(n) in the worst case.
Append the new node at the end of the binary heap, then heapify up to maintain heap order; 35 swaps with its parent until properly placed.
Learn the binary heap's power to extract max or min quickly, and maintain heap order with heapify up and down. Apply this to priority queues, scheduling, and routing tasks.
Explore avl trees, a balanced binary search tree that rebalances after inserts or deletes to maintain O(log n) height, covering left-left, right-right, left-right, and right-left rotations.
Understand what an AVL tree is and how it rebalances a binary search tree to prevent skew, using height tracking and rotations after insertions and deletions.
Red-black trees are self-balancing binary search trees optimized for many inserts and deletes, such as in Java TreeMap, while AVL favors balance for reads in databases, using a coloring scheme.
Apply memoization to the Fibonacci series to dramatically boost algorithmic efficiency, turning slow computations into fast, scalable performance for data structures and algorithms.
Explore memoization as an optimization technique that caches Fibonacci calculations to avoid repeated work. Store results in an array and look them up, improving efficiency from exponential to linear time.
This course is about getting you up-to-speed quickly on the fundamental computer science concepts you are going to be expected to know if you want interview at any large Silicon Valley tech company (Google, Apple, Facebook, Amazon, or Spotify).
Topics include
Arrays
Linked Lists
Big O notation
Stacks & Queues
Hash Tables
Binary Trees
Binary Heaps
Dynamic Programming & Memoization
Bubble Sort / Merge Sort / Quick Sort
Graphs
Breadth First Search
Depth First Search
More...
What you get
With this course you get
Over 115 beautifully hand crafted HD videos walking you through every aspect of how all these data structures and algorithms work
Practices questions and personal walkthroughs of the most commonly asked interview questions
My personal notes on interviews I have personally had with Spotify, Facebook, Amazon, and others
A section called The Classics where we walk through classic interview questions no interviewee should be with out
Interview tips on soft skills big tech companies look for when hiring and techniques on how to answer
What you save
By investing in yourself with this course you are saving yourself the most precious thing you’ve got - time. I have spent a year scouring the web looking for the best examples, the simplest explanations, the best visualizations on how to explain how this stuff works, and assembled it all into one, quick, easy to digest place.
Let's do this together
Learning data structures and algorithms doesn’t have to be a chore. It can be fun. And I want you to know I am here for you every step of the way. Ask me any question. I usually get back to my students with 24 hrs. And together, we will get you the understanding behind how these things work.
I also don’t have a formal computer science background
Look. I know what it’s like not to know how this stuff works. And, like you, I have had to learn this stuff from scratch.
But I am here to tell you it can be done. I have no formal computer science background. I am not classically trained as a computer scientist. But by learning this material, I landed my dream job as an engineer at Spotify in San Francisco. And so can you.
So what are you waiting for? Sign up and get started on your journey today.
Testimonials
Here are some testimonials from students who have taken the course.
Tiffany Scott
Best $10 I've ever spent. The explanations are concise and are giving me confidence for my upcoming Microsoft and Facebook interviews. Planning on finishing the course in 4 days to give me ample time to practice problems.
Saif Addin Ellafi
Really, this will sound like exaggeration. But this course is perfect, 5 stars falls short. The instructor puts the content in a an easy to follow order, videos are short to keep attention and leave you wanting to know more. Concise and important points are made very clear, with zero repetition. Native speaker offers no challenge for understanding, especially if you are not a native speaker. Answers questions very quickly. The course WONT teach you how to program, so forget about 100% coding from scratch or having pedagogical exercises. It relies on you to check out the code, re-write it, practice and research deeper the concepts. Examples are written in Java, but they are very agnostic to the language (aside of having to setup a java environment to run tests). Huge focus on acing interviews. A clear target of the course makes it great and an example. Time and pacing are perfect, no need to slow down or speed up. Overall 10 out of 5.
Anna Teittinen
I completed this course in my busy schedule within 3 weeks of learning I will have technical phone interviews with both Google and Facebook. I learned so much and understood everything without memorizing, unlike when I was in school. I recently learned I did well on both phone interviews. I will have a second technical phone interview with both companies again in mid Jan. I highly recommend this course! Thank you very much Jonathan!
Rick A
I took your course in the very beginning of my interview prep to refresh all my concepts. I think you've done a great job in this course. After a lot of practice using these concepts I got pretty good at it. I got multiple offers from big N including Google, Facebook, Amazon and Microsoft. I would like to take this moment to thank you for creating the course and being available to answer our queries.
Luciano Sa
Amazing course! Very well explained, great didactic which makes it very easy to follow and understand! I wish these stars were exponential. :)
Kavitha Bhasker
I am really thankful I found this course on Udemy. It has been 15 years since I learnt these concepts during my engineering college days and needed to brush up on them for interview prep. This course really nailed the contents and exercise that are asked in tech interviews these days. The tone of the instructor is very friendly and calm and make you think rather than put you in a spot. I was asked for a interview query on whether to use an array vs hashmap in a certain scenario and was able to nail the answer and also give the Time complexity with confidence . I landed the job and will be starting next week. Thank you so much!
Eyal Carmi
Great. I like the that Jonathan filters what we actually need for an interview - instead of being flood with lot's of data, he notes you what worth remembering. His explanations are clear, and if you don't understand something, just ask him and he explains it to you.
Flavio Marques Migowski Carvalho
One of the best course I've had. It's very well explained, each step in the coding is shown and explained with drawings. I think some design and architecture problems would be very handy! Thank you for making this course for us!
Abhishek Sengupta
I think this is the best course on DSA I have ever seen. The reason i am saying this is because in previous courses I used to understand a write the code but soon after a day or so it was like 'what was that?' , but here every topic even after learning many other topics I can recall and code it. And I feel the reason for strong foundation is how Jonathon approaches and teaches the topic. In such a less duration he was able to solidify the concepts from scratch. BEST COURSE IN DSA! Jonathan Please do more courses on algorithms or Blind 75 topics. It will help engineers crack the interview easily after learning from you.
Madhu
I love the course overall. Very engaging. The Instructor, Jonathan is a great mentor and has this calm and assuring voice that puts the confidence in anyone who does not have programming experience before. He not only covered the technical aspects of almost all the important algorithms but also added a great ending with the interviewing tips which is really helpful. I would recommend this course to everyone who want to brush up on algorithms and just be ready enough to start with their interview.
Juwan Turner-Howard
I can program. I thought I "knew" about arrays, but this helping me to know the why which can allow me to make better tradeoffs when it's time to choose between linkedlist(probably O(n) get and set time) versus the O(1) array get and set time. If the rest of the course is consistent with the style and value of information in this first module... whew... I'm in for a good ride. So happy and excited about this course thus far though.
Aung Khant Nyra
I would say Jonathan has done a great job of showing you how to prepare for interview problems by giving you a touch of basic data structures and a bird's eye view of the a typical interview. I am in the bay area and personally for me, this course is pretty basic and I am preparing for interviews myself, so this course was helpful for me although it didn't include advanced topics like dynamic programming and so on. Of course, there are countless interview practice problems online so I understand, it's impossible for him to cover everything. Anyways, I love the course . It is better to learn from a professional who is in the field instead of learning from a professor or a lecturer.
Ramachandran Rajagopalan
Good course to wrap your head around DSA if you are a beginner. For others who have a got a week's time for the interview and need a refresher then grab this. Thanks, Jonathan. Good work.