The Imposter's Handbook

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

I spent 4 months of 2014 and 7 months of 2015 and then another full year in 2018 studying all of the subjects that go into a Computer Science degree. I looked at the curriculum for Stanford and MIT (and a few others) and dove in. Computation, Complexity Theory, Encryption, Blockchain, Algorithms and Data Structures, Lambda Calculus and more. I wrote it down and decided to share it all... Instead of a wall of theoretical text, I did my best to make them as human as possible, with hand-drawn sketches of complex topics that took me days (and sometimes months) to figure out. I wanted to write a technical book for humans that would convey the magic of our industry.

Author(s): Rob Conery
Edition: 2.2.0
Publisher: Big Machine, Inc.
Year: 2016

Language: English
Pages: 430

The Imposter’s Handbook
Foreword: Scott Hanselman
Foreword: Chad Fowler
Preface
On Being Wrong
Your Feedback
Cover Photo Credit
Computation
Nature's Strange Programs
Overlapping Emergences
What Is Computation?
The Future of Computation
Complexity
Simple Solutions And P Time
Hard Problems (Exp)
All Solvable Problems (R)
Infinitely Complex Problems Beyond R
Determinism, Nondeterminism, and Magical Guesses
Does P=NP?
Reductions and NP
NP-Complete and Decisions
Classic NP-Complete Problems
Approximations And Laziness
In The Real World
Lambda Calculus
The Basics
Some Rules
Anatomy
Function Application
Bound and Free Variables
Substitution and Reduction
Applying Multiple Values
Order Of Operations
Church Encoding
Booleans
Numbers
Combinators
Summary
Machinery
Probability and The Theory of Forms
Markov Chains
Finite State Machine
Pushdown Machine
Turing's Machine
The Von Neumann Machine
The Automatic Computing Engine
ENIAC and EDVAC
Von Neumann Architecture
Big O
A Super Simple First Step: O(1)
Iterations And Order(n)
The Not So Good Approach: O(n ^2)
Refining To Order(log n)
Quick Logarithm Review
Rethinking O(n^2) With O(n log n)
A Quick Break for Math Geeks
Thinking in Big-O
Space Complexity vs. Time Complexity
Data Structures
Arrays
Stack
Queue
Linked List
Hash Table
Dictionary
Trees
Binary Tree
Heap
Binary Search Tree
Digital Tree (or Trie)
Graphs
So What?
Algorithms: Simple
Bubble Sort
Merge Sort
Quicksort
Selection Sort
Heap Sort
Binary Search
Graph Traversal
Depth First Search
Breadth First Search
Algorithms: Advanced
DYNAMIC PROGRAMMING
Origins
Fibonacci
Greedy Algorithms
Bellman Ford
Djikstra
Compilation
How a Compiler Works
Lexical Analysis
Parsing
Semantic Analysis
Lexical Scoping
Optimization
Code Gen
LLVM
GCC
Garbage Collection
Tracing
Reference Counting
Compile-time
Software Design Patterns
Constructor
Factory
Builder
Method Chaining
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Command
Mediator
Observer
State
Strategy
In The Real World…
Software Design Principles
Coupling and Cohesion
SEPARATION OF CONCERNS
YAGNI And DRY
Tell, Don’t Ask
Law Of Demeter (or: Principle of Least Knowledge)
Dependency Injection
Interface-based Programming
Inversion Of Control
Functional Programming
Immutability
Formalizing Data with Structs
Transforming Data
A Real Example: A Shopping Cart
Side Effects and Purity
Currying
A Very Brief Discussion About Functors and Monads
Databases
First Normal Form (1NF): Atomic Values
Second Normal Form (2NF): Columns Depend On a Single Primary Key
Third Normal Form (3NF): Non-keys Describe The Key And Nothing Else
In The Real World: The Normalization Process
More Real World: Is This Schema Correct?
OLAP And OLTP
Extraction, Transformation, and Loading (ETL)
Data Marts and Warehouses
Analyzing a Data Mart
Using an OLAP Cube
Distributed Database Systems
A Shift In Thinking
CAP Theorem
An Alternative to ACID: BASE
Sharding
Replication
Big Data
What Is Big Data?
In The Real World
Testing
The Nuts and Bolts of TDD
Just Start
The Happy Path
The Sad Path
BDD
Features, Scenarios, Expectations
Given, When, Then
Essential Unix
Shell Scripts
A Simple Shell Script
Make
Using Make To Build Your Web App
CRON
Final Thoughts