## Data Structures and Algorithms

Some languages offer a plethora of choices when it comes to working with data, but all these choices are variations of (or small improvements upon) a standard, core set of data structures that every programmer should know. Thatâ€™s what weâ€™ll look at in this production.

Lesson 1:  Introduction

Welcome! You're about to dig into some super groovy, core computer science concepts that will absolutely change your career. From interview questions to understanding which data type to use for your Redis database - these topics are incredibly useful!

This is a video I did for my YouTube channel but, hopefully, encapsulates what you need to know. We'll be discussing Big-O throughout these videos so it pays to understand it up front.

The building block data structures from which so many others are built. Arrays are incredibly simple - but how much do you know about them? Can you build a linked list from scratch?

You can build all kinds of things using the flexibility of a linked list. In this video we'll get to know a few of the more common data structures that you use every day.

The bread and butter of technical interview questions. If you're going for a job at Google, Microsoft, Amazon or Facebook - you can be almost guaranteed to be asked a question that used a binary tree of some kind.

You will likely *never* need to implement a sorting algorithm - but understanding how they work could come in handy at some point. Interviews and workarounds for framework problems come to mind.

You now know all about trees and graphs - but how do you use them? With search and traversal algorithms (depth-first and breadth-first) of course! This is the next part you'll need to know when you're asked a traversal question in an interview. And you will be.

No, we're not talking about dynamic languages like Ruby or Python! Dynamic programming is an approach to writing algorithms. It gives us a way to elegantly create routines for various problems and can greatly improve the way you solve problems in your daily work. It can also help you ace an interview.

The use of prime numbers is everywhere in computer science... in fact you're using them right now to connect to this website, read your email and send text messages. This algorithm might not be a "core" CS algorithm - it does show you how you can solve a problem using a "sieve" approach.

How can you traverse a graph ensuring you take the route with the lowest cost? The Bellman-Ford algorithm will answer this question.

Bellman-Ford works well but it takes too long and your graph can't have cycles. Dijkstra solved this problem with an elegant solution.