# Spend A Few Hours This Weekend Learning Computer Science And Double Your Income By Nailing Your Next Interview

This industry is on fire and **your skills are in demand**. Your colleagues are
changing jobs and doubling, sometimes tripling their paycheck by nailing their interviews and
showing ruthless confidence. **That paycheck could easily be yours…**

## It’s not a secret: most programmers are full of crap

We’re just good at searching the web for what we need to know, and that’s OK! Knowing that you
don’t know something is a great first step! Programmers that have a desire to learn are the ones
who are the most valuable. The trick is to **build a foundation so you can learn how to
learn**.

It’s hard work to learn these skills, but it doesn’t have to be. That’s why I made these videos -
so you and I could **have some fun and build your foundation**.

### Do you feel like you don’t belong in this industry? That others are more capable than you?

It’s called **Imposter Syndrome** and most **everyone goes through it**
at one time or another. If this is you, don’t worry you’re not alone. In fact it’s actually a good
thing to feel this way - it means you clearly understand just how much there is to learn.

Some programmers never feel this way and will loudly let everyone know how skilled they are. In
fact, this is a known thing called the “Dunning-Kreuger” effect: *people who are mediocre at a
task believe they’re doing well. People who do well often believe they suck and should be
fired*.

Which one are you?

## Why is that the loud, mediocre programmers end up getting promoted and you work for them?

Because they're loud and have (misplaced) confidence. How many times have you wondered how your
boss or your bosses boss managed to get to where they are when they are so clearly incompetent?
**Every single workplace has these people** no matter what their hiring practice
is.

How do they end up there? The simple answer is that **their misplaced confidence is
convincing**. Unfortunately for you, the opposite is also true.

**Your lack of confidence is holding you back**. I know mine did.

Until I changed all of that over the last 5 years.

## Let's get you paid what you're worth

I started recording this course in the summer of 2016, just a few years after writing *The
Imposter's Handbook*, adding material as I went, going deeper into subjects than a book
could.

After 6 years I compiled **over 6 hours of content**. This isn’t your typical “hey
guys what’s up” YouTube crap either. I pride myself in **concise delivery and tight
editing**.

I write down everything I say, rehearse it, cut it, edit it more, add where I need, rehearse again… and go through this process until I have a polished gem. Each video is this way.

## What you're going to learn this weekend

I broke these videos into 72 lessons divided into 10 categories, fast-paced and tightly edited. I hate hate hate boring videos and lecturers that drone on forever - you won't get that here. We're going to have some fun and I will absolutely respect your time.

##### The basics of binary

You'll have a foundational understanding of CS theory and language design which means you won’t be stumped by some of the most common interview questions.

##### Cryptography

A difficult subject that you need to understand so that you can have a solid grasp on data security. This means you’re less likely to get fired for overlooking the very basic of data needs.

##### Data Structures and Algorithms

You will know how to optimize a given routine and when and why you should. Understanding this means passing interviews.

##### Databases and Relational Theory

You'll learn core database theory, including relational modeling and CAP theorem. Understanding these things means you can build a proper database that protects your data, which means your company can make better decisions and make more money... making you a hero.

##### Encryption and Hashing

Understanding the essential bits of encryption and hashing is critical so that you can have a solid grasp on data security, which means you’re less likely to get fired for overlooking the very basic of data needs.

##### Essential Patterns and Principles

You're going to have options when trying to figure out how to write complex systems, which means you will be the one leading the team.

##### Information Theory

The foundation of the digital age and every computer network in existence. Understanding these topics can help you solve tricky networking and encoding issues.

##### Core Command Line Skills

Every programmer should understand how to program their work environment and orchestrate builds properly which means they don't spend hours trying doing the same jobs manually.

I bought your first book in 2016 or 2017. Loved it because of the videos back then. Bought the interview prep videos on your website recently as well. Your books over the years, videos, and a little bit of leetcode... plus my 10 years of experience

got me a job at AWS the first time through. Being self-taught, I had a lot of doubts, coupled with being a javascript developer and getting a lot of flack from backend engineering. That's all noise now to me,I know my worth. Have for a while. Now I try to help others see that too.

Brandon W

## The Videos

There are 32 videos in all, clocking in at just over 6 hours. *There is no filler here*, these videos
are tightly edited and full of goodness. The perfect compliment to *The Imposter's Handbook* or just
fine as a standalone course.

#### Logic and Binary

##### 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'.*

**07:01 **

##### 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.*

**15:30 **

##### 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!*

**14:49 **

##### Bitwise Operators

*Up until now we've been representing binary values as strings so we could see
what's going on. It's time now to change that and get into some real binary operations.*

**14:49 **

##### Logical Negation

*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.*

**11:00 **

#### Information Theory

##### 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?*

**16:08 **

##### 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.*

**27:30 **

##### Error Correction, 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.*

**15:30 **

##### Error Correction, Part 2

*In the previous video 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.*

**23:07 **

##### Encryption Basics

*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.*

**21:28 **

##### 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.*

**34:25 **

#### Concept and Theory

##### Functional Programming

*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*

**21:44 **

##### 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.*

**20:15 **

##### 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*

**33:59 **

#### Data Structures and Algorithms

##### 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?*

**20:51 **

##### 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.*

**06:34 **

##### 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.*

**07:28 **

##### Basic Sorting Algorithms

*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. *

**13:11 **

##### DFS, BFS and Binary Tree Search

*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. *

**14:40 **

##### 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.*

**09:40 **

##### 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.*

**05:53 **

##### 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.*

**08:15 **

##### Graph Traversal: Dijkstra

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

**08:15 **

#### Software Design

##### Design Patterns: Creational

*Tried and true design patterns for creating objects in an object-oriented
language.*

**20:10 **

##### 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.*

**14:02 **

##### 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.*

**16:47 **

##### 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?*

**16:47 **

##### 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.*

**32:24 **

#### Skills

##### Shell Script Basics

*It's a Unix world. You should have a functional knowledge of how to get
around a Unix machine using the command line, as well as how to complete basic tasks using shell
scripts and Make files.*

**31:44 **

##### Hands On: Creating a Useful Shell Script

*I use the static site generator Jekyll to write my blog. I store the site at
Github, who then translates and hosts it all for me for free. Jekyll is simple to use and I like
it a lot. There's only one problem: it's a bit manual.*

**21:36 **

##### Deciphering a Complex Bash Script

*We dive into the install script for one of my favorite tools: Oh My Zsh! It
looks cryptic, but deciphering shell scripts is an invaluable skill.*

**24:34 **

##### Making Your Life Easier with Make

*Make is a build utility that works with a file called a Makefile and basic
shell scripts. It can be used to orchestrate the output of any project that requires a build
phase. It's part of Linux and it's easy to use.*

**27:11 **

### You Can Change It All This Weekend

Come spend a few hours with me and let's explore the fun, fascinating world of Computer Science! I won't waste your time, promise - and I back that with a full, no-questions-asked guarantee.