Learn computer science, visually
Watch the animation, operate the panel, then solve the problem.
Data Representation
Bits and Binary
Flip bits on and off to build a byte and learn how the number changes.
Number Base Conversion
Group bits to move between binary, octal, decimal, and hexadecimal.
Negative Numbers and Two’s Complement
Flip the bits, add one, and watch a negative integer emerge.
Storing Fractions with Limited Bits
Use a simplified fixed-step model to see why fractions are rounded.
Bitwise Logic
Apply AND, OR, XOR, and NOT one column at a time.
Text Encoding
Follow a character from Unicode code point to UTF-8 bytes.
Digital Images
Connect pixels, resolution, color depth, and file size.
Digital Audio
Measure and quantize a sine wave at discrete moments.
Compression
Replace repeated data with shorter run-length instructions.

Introduction to Computer Data Representation
Algorithms
Representing Algorithms
Compare the same procedure written as natural language, a flowchart, and pseudocode.
Linear Search
Compare an array from the start, one element at a time, to find a target.
Binary Search
Narrow the search range in half, in a sorted array.
Complexity
Compare how operation count grows with input size n across four complexity classes.
Bubble Sort
Compare and swap neighboring values to sort an array.
Merge Sort
Merge sorted sub-lists two at a time to sort an array.
Recursion
Use factorial(4) to see the call stack build up and unwind.
Greedy Algorithms
Compare greedy and optimal coin choices for making change.
Dynamic Programming
Fill in a table to find the optimal answer to the fewest-coins problem.

Nine Algorithms That Changed the Future
Programming and Memory
Variables and Types
See how a variable's type changes its byte size and shifts the address of the variable after it.
Conditionals
See how the branch that runs switches based on the condition's result.
Loops
Step through a for loop and watch the array fill in.
Functions and Scope
See how frames and local variables behave when main() calls add().
Arrays and Strings
Use the string "HELLO" to see how an index maps to a position in memory.
Pointers
Switch pointer p between x and y, and see how *p's value follows.
Dynamic Memory
Step through malloc and free calls to see the heap change.
Memory Errors
Compare buffer overflow, dangling pointer, and memory leak.
Debugging
Step through a 5-line program and watch its variables change.

Effective C, 2nd Edition
Data Structures
Arrays
Change the insertion point and see how many elements need to move.
Linked Lists
Insert a new node into the chain 10→20→30→40 and see that the other nodes don't move.
Stacks
Push and pop repeatedly, and see the most recently added value come out first.
Queues
Enqueue and dequeue repeatedly, and see the earliest added value come out first.
Hash Tables
Change the key you insert, and see the hash computation, the bucket it lands in, and collisions occur.
Trees
Change the search target, and watch it follow a path down from the root, comparing values at each step.
Graphs
Switch between breadth-first and depth-first search, and see the same graph produce a different visit order.
Choosing a Structure
Switch between operation requirements, and see which data structure fits each one best.

A Common-Sense Guide to Data Structures and Algorithms, 2nd Edition
Databases
Tables and the Relational Model
Switch the selected row, and see each row's data and its primary key value.
The ER Model
Advance through the steps, and watch an entity gain attributes and convert into a table.
SQL Queries
Advance through the steps, and see how each SQL clause narrows the result set.
Joins
Advance through the steps, and see which row of the students table each enrollments row matches.
Normalization
Advance through the steps, and see an update anomaly occur in an unnormalized table, then get resolved by decomposing it.
Indexes
Change the search id, and compare the comparison counts of a full scan and an index search.
Transactions
Switch between ending with COMMIT and ending with ROLLBACK, and see how the balances of account A and account B change.
Concurrency Control
Switch between no locking and locking, and see an update conflict occur, then get prevented.

Database Design for Mere Mortals, 25th Anniversary Edition
Networks and the Web
Network Layering
Advance through the steps, and watch each layer attach its header to the data in turn.
IP Addresses
Change the prefix length, and see how the network address, broadcast address, and usable host count change.
Routing
Advance through the steps, and watch the packet pass router by router as each one decides the next hop.
TCP and UDP
Switch between TCP and UDP, and see how their behavior differs when a packet gets lost.
DNS
Advance through the steps, and trace the Resolver's chain of queries to the Root, TLD, and Authoritative servers.
HTTP
Switch between the request and the response, and see what lines each one is made of.
Web Applications
Advance through the steps, and watch the request and response travel between the browser, server, and DB.
APIs
Switch between request outcomes, and see how the status code and JSON body change.

How the Internet Really Works: An Illustrated Guide
Cybersecurity
Security Goals
Switch between attack scenarios, and see which of confidentiality, integrity, and availability get affected.
Symmetric-Key Cryptography
Change the key value and see how the ciphertext changes, and compare decrypting with the correct key versus a different one.
Public-Key Cryptography
Advance through the steps, and watch a message encrypted with the public key reach only the private key holder.
Hashing and Signatures
Switch between the original message and a tampered one, and see how the digest and the signature verification result change.
Authentication
Advance through the steps, and trace the authentication flow from password check through MFA to session issuance.
TLS
Advance through the steps, and trace the flow from certificate verification through key exchange to encrypted communication.
Web Vulnerabilities
Switch between attack types, and compare the example input, what happens without a mitigation, and the mitigation itself.
Risk Management
Switch between combinations, and see how threat, vulnerability, and countermeasure correspond to each other.
