Skip to main content

Computer Science Fundamentals

Over 6 hours of videos spread across 72 individual lessons. You'll learn about Data Structures and Algorithms, Cryptography, Binary, Software Design and Essential Unix Skills. The perfect compliment to The Imposter's Handbook or just fine as a standalone course.

A collection of 35 posts

Computer Science Fundamentals
Computer Science Fundamentals

Computer Science Fundamentals

A video companion to The Imposter's Handbook, covering essential computer science concepts for self-taught programmers.

· Rob Conery

Using Make to Improve Your Test Suite
Computer Science Fundamentals

Using Make to Improve Your Test Suite

No video with this one - just a post with lots of code. Make has been around forever and is often overlooked in favor of tools that recreate precisely what it does, but in crappier ways. Let's see how you can use Make to help your testing process.

· Rob Conery

Making Your Life Easier with Make
Computer Science Fundamentals

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.

· Rob Conery

Deciphering a Complex Bash Script
Computer Science Fundamentals

Deciphering a Complex Bash 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.

· Rob Conery

Hands On: Creating a Useful Shell Script
Computer Science Fundamentals

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.

· Rob Conery

Shell Script Basics
Computer Science Fundamentals

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.

· Rob Conery

Testing Your Code: TDD and BDD
Computer Science Fundamentals

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.

· Rob Conery

Principles of Software Design
Computer Science Fundamentals

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?

· Rob Conery

Design Patterns: Behavioral
Computer Science Fundamentals

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.

· Rob Conery

Design Patterns: Structural
Computer Science Fundamentals

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.

· Rob Conery

Design Patterns: Creational
Computer Science Fundamentals

Design Patterns: Creational

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

· Rob Conery

Graph Traversal: Dijkstra
Computer Science Fundamentals

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.

· Rob Conery

Graph Traversal: Bellman Ford
Computer Science Fundamentals

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.

· Rob Conery

Calculating Prime Numbers
Computer Science Fundamentals

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.

· Rob Conery

Dynamic Programming and Fibonnaci
Computer Science Fundamentals

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.

· Rob Conery

DFS, BFS and Binary Tree Search
Computer Science Fundamentals

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.

· Rob Conery

Basic Sorting Algorithms
Computer Science Fundamentals

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.

· Rob Conery

Trees, Binary Trees and Graphs
Computer Science Fundamentals

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.

· Rob Conery

Stacks, Queues and Hash Tables
Computer Science Fundamentals

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.

· Rob Conery

Arrays and Linked Lists
Computer Science Fundamentals

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?

· Rob Conery

Review: Big-O Notation
Computer Science Fundamentals

Review: Big-O Notation

It's a thing you'll need to know if you plan to get through any interview. It's actually quite useful and in this post I'll hopefully make the case that's it's simple as well.

· Rob Conery

Database Normalization
Computer Science Fundamentals

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

· Rob Conery

Lambda Calculus
Computer Science Fundamentals

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.

· Rob Conery

Functional Programming
Computer Science Fundamentals

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

· Rob Conery

Hashing and Asymmetric Encryption
Computer Science Fundamentals

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.

· Rob Conery

Encryption Basics
Computer Science Fundamentals

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.

· Rob Conery

Error Correction, Part 2
Computer Science Fundamentals

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.

· Rob Conery

Error Correction, Part 1
Computer Science Fundamentals

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.

· Rob Conery

Encoding and Lossless Compression
Computer Science Fundamentals

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.

· Rob Conery

Entropy and Quantifying Information
Computer Science Fundamentals

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?

· Rob Conery