# CS Theory

##### Explain It Like I'm 5 - Why Are Hashes Irreversible?

How to explain hashing algorithms to 5-year olds? Well... I'll do my best in this post, which comes with a video too!

##### The Fabulous Linked List

It’s always fun to study the basics, and in this video we dive into the linked list and how to create one from scratch. Sounds ridiculous, but it can rescue an interview!

##### Big O Notation

Understanding Big O has many real world benefits, aside from passing a technical interview. In this post I'll provide a cheat sheet and some real world examples.

##### What’s the Best Hashing Algorithm for Storing Passwords?

Most people will default to bcrypt when choosing a hashing algorithm for storing sensitive information - but why? Are there other choices? Indeed! In this video we'll take a look at scrypt, PBKDF2 and my favorite: argon2

##### Simple Encryption with the Diffie-Hellman Key Exchange

In this video we play around with cryptography and learn how to encrypt things in a very simple, basic way. We then ramp up our efforts quickliy, creating our own one-time pad and Diffie-Hellman secure key transmitter.

##### Proper Error Correction with Parity Bits

In Error Correction, Part 1 we saw how we could correct errors using parity bits. In this video we'll orchestrate those bits using some math along with a divide and conquer algorithm to correct single-bit errors in transmissions of any size.

##### Simple Error Correction

There are *always* errors during the transmission of information, digital or otherwise. Whether it's written (typos, illegible writing), spoken (mumbling, environment noise) or digital (flipped bits), we have to account for and fix these problems.

##### Hashing and Asymmetric Encryption

In this video we dive into hashing algorithms, how they're used and what they're good (and not so good) for. We'll also dig into RSA, one of the most important pieces of software ever created.

##### Encoding and Lossless Compression

Claude Shannon showed us how to change the way we encode things in order to increase efficiency and speed up information trasmission. We see how in this video.

##### Entropy and Quantifying Information

Now that we know how to use binary to create switches and digitally represent information we need to ask the obvious question: 'is this worthwhile'? Are we improving things and if so, how much?

##### Logical Negation in Binary

We've covered how to add binary numbers together, but how do you subtract them? For that, you need a system for recognizing a number as negative and a few extra rules. Those rules are one's and two's complement.

##### Bitwise Operations

This is a famous interview question: 'write a routine that adds two positive integers and do it without using mathematic operators'. Turns out you can do this using binary!

##### Binary Mathematics

This is a famous interview question: 'write a routine that adds two positive integers and do it without using mathematic operators'. Turns out you can do this using binary!

##### Boolean Algebra

You're George Boole, a self-taught mathematician and somewhat of a genius. You want to know what God's thinking so you decide to take Aristotle's ideas of logic and go 'above and beyond' to include mathematical proofs.

##### The Basics of Logic

Let’s jump right in at the only place we can: the very begining, diving into the perfectly obvious and terribly argumentative 'rules of logic'.

##### Common Data Structures

In this video we explore common data structures in computer science. Think you know how arrays work in CS? Or linked lists? Let's dig in and get you ready for your next interview.

##### Mod and Remainder Are Not The Same

A remainder and a modulus look so very similar, but they are not the same thing and worse, are treated differently by different programming languages. Do you know how your language handles mod?

##### Calculating Prime Numbers

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.

##### Trees, Binary Trees and Graphs

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.

##### Database Normalization

How does a spreadsheet become a highly-tuned set of tables in a relational system? There are rules for this - the rules of normalization - which is an essential skill for any developer working with data