When I wrote The Imposter's Handbook series I knew I wanted a set of videos to go with them. I hit record and haven't stopped since. The first video series (Season 1) has 17 videos on core concepts/skills. The second video series is still in production with 8 completed and 5 more planned (at least).

I'm not stopping there, however. I will keep adding to this collection as time goes on. It's too much fun! I hope you enjoy what you see...

Theory and Fundamentals

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’.
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.
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!
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!
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.
What is Lambda Calculus?
Before their were computers or programming languages, Alonzo Church came up with a set of rules for working with functions, what he termed lambdas. These rules allow you to compute anything that can be computed.
Functional Programming Basics
Functional programming builds on the concepts developed by Church when he created Lambda Calculus. We’ll be using Elixir for this one, which is a wonderful language to use when discovering functional programming for the first time

Data Structures and Algorithms

Ask any old-school programmer what the most important thing to know is and they'll likely tell you know your algorithms! I find this to be perfectly true - I think about these fundamentals often!

We'll start out with Big-O, however, because if you don't understand your Big-O, you'll get lost as to why one data structure or algorithm is more suited than another.

What is 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.
Arrays and Linked Lists
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?
Stacks, Queues and Hash Tables
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.
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.
Merge, Quick, Bubble Sort - What are they?
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.
BFS and DFS explained
You now know all about trees and graphs - but how do you use them? With search and traversal algorithms 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.
Dynamic Programming and Fibonnaci
Dynamic programming gives us a way to elegantly create algorithms for various problems and can greatly improve the way you solve problems in your daily work. It can also help you ace an interview.
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.
Graph Traversal: Bellman Ford
How can you traverse a graph ensuring you take the route with the lowest cost? The Bellman-Ford algorithm will answer this question.
Graph Traversal: Djikstra
Bellman-Ford works well but it takes too long and your graph can’t have cycles. Djikstra solved this problem with an elegant solution.

Encoding

I have to say that learning about text encoding was one of the funnest things I've done so far. The math that goes into it all is extraordinary - especially when it comes to compressing things... using a simple equation! Fun stuff.

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?
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.
Correcting Errors in a Digital Transmission, Part 1
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.

Encryption and Hashing

I'm still in the process of creating these videos and will hopefully be finished by November of 2020. It's been a really tough year.

Planned: Ciphers and Codes

Planned: One-way functions and modular math

Planned: Modern Encryption Basics

Planned: Hashing Algorithms

Planned: What's an RSA Key and How Does It Work?

Software Design

Not reallllly a CS thing but... then again... these are fundamental skills if you ask me. They don't teach them in school but really they should - don't you think?

Design Patterns: Creational
Tried and true design patterns for creating objects in an object-oriented language.
Design Patterns: Structural
As your application grows in size you need to have a plan to handle the increase in complexity. The Gang of Four have some ideas that could work for you.
Design Patterns: Behavioral
Mediators, Decorators and Facades - this is the deep end of object-oriented programming and something you’ll come face to face with as your application grows.
Principles of Software Design
You’ve heard the terms before: YAGNI, SOLID, Tell Don’t ASK, DRY... what are they and what do they mean?
Testing Your Code: TDD and BDD
Testing code has moved beyond the realm of QA and into the realm of design, asking you to think about what you do before you do it. Let’s have a look at some strategies.