Interactive lessons in computer science and electronics. Choose a subject to explore its explanations and simulations.
Coding Tests 3
Applications 2
Advanced 1
Computer Architecture 5
-
Instruction Cycle
Follow register and memory transfers as a simple CPU fetches, decodes, and executes instructions.
-
Pipelines and Hazards
Step through a five-stage pipeline, data and control hazards, and forwarding.
-
Cache Mapping
Split addresses into tag, index, and offset; compare direct-mapped, set-associative, and fully associative caches.
-
Virtual Memory and the TLB
Translate virtual addresses through the TLB and page table, and observe page faults.
-
Branch Prediction
Compare always-taken, one-bit, and two-bit predictors on branch patterns such as loops.
Data Structures 16
Applications 12
Practice sorting, searching, range techniques, trees, and hashing.
-
Sorting at a Glance
Race seven sorting algorithms on the same array and compare their work, complexity, and use cases.
-
Bubble Sort
Repeatedly compare adjacent values and swap them to move the largest remaining value to the end.
-
Selection Sort
Repeatedly select the smallest remaining value and swap it into the next position.
-
Insertion Sort
Take values one at a time and insert them into the sorted prefix.
-
Counting Sort
Count occurrences to calculate positions without comparing values to each other.
-
Binary Search
Halve the candidates in a sorted array; explore exact search, lower and upper bounds, and parametric search.
-
Two Pointers
Move two pointers monotonically to turn some quadratic searches into linear scans.
-
Sliding Window
Maintain information about a contiguous range by updating only values entering and leaving it.
-
Prefix sums
Precompute prefix totals to answer a range-sum query with one subtraction.
-
Binary Search Tree
Insert, find, and delete values; see how tree shape changes and why a skewed tree is slow.
-
Hash Tables
Map a key directly to a bucket and explore how collisions are handled.
-
BFS and DFS
Explore the same graph breadth-first and depth-first to see how queues and stacks change the visiting order.
Advanced 4
Explore divide and conquer, heaps, shortest paths, and combined algorithms.
-
Quick Sort
Partition around a pivot, then recursively sort both sides.
-
Merge Sort
Recursively split the array, then merge sorted halves in a divide-and-conquer algorithm.
-
Heap Sort
Build a max heap, then repeatedly move the largest value to the end.
-
Dijkstra's Shortest Paths
Finalize the closest unsettled node and relax distances to its neighbors.
Databases 5
-
SQL Execution Order
Follow a SELECT query from FROM to LIMIT and see the table change at each logical processing step.
-
JOIN
Follow how INNER, LEFT, RIGHT, and FULL OUTER JOIN combine rows from two tables.
-
Indexes and B+ Trees
Compare B+ tree lookups with full table scans by counting the pages read.
-
Normalization
Split an unnormalized table into 1NF, 2NF, and 3NF and observe update, insertion, and deletion anomalies.
-
Transactions and Isolation Levels
See whether dirty reads, non-repeatable reads, and phantom reads occur under different isolation levels.
Digital Logic 4
-
Half Adders and Full Adders
Toggle three input bits to see how a full adder calculates the sum and carry.
-
2-bit Ripple-Carry Adder
Connect two full adders to add 2-bit numbers and follow the carry into the next position.
-
Ring Oscillator
Change the number of NOT gates to compare continuous oscillation with a stable state.
-
DRAM and NAND Flash
Compare how DRAM and NAND update data and how long the operations take.
Embedded Systems 5
-
UART Frames
Turn one character into a start bit, eight data bits, optional parity, and stop bits.
-
I2C and SPI
Step through the clock and data waveforms of two synchronous serial buses.
-
CRC Calculation (Modbus CRC-16)
Follow the shifts and XORs that calculate the CRC-16 appended to a Modbus RTU frame.
-
PWM and Duty Cycle
Explore how on/off digital output controls LED brightness and motor drive through duty cycle.
-
ADC Sampling and Aliasing
See how undersampling can make a signal appear to have an entirely different frequency.
Operating Systems 7
-
CPU Scheduling
Run the same four processes with FCFS, SJF, and round robin, then compare waiting times.
-
Race Conditions and Critical Sections
Make two threads increment the same counter and see how an expected result of two can become one.
-
Mutexes
Protect a critical section with a single-owner lock and explore priority inversion.
-
Semaphores
Use a resource counter to coordinate threads in a parking lot and a producer–consumer buffer.
-
Deadlock
Watch five dining philosophers deadlock while holding one fork each, then break the cycle.
-
Page Replacement
Compare FIFO, LRU, and OPT when memory is full and a page must be evicted.
-
Memory Allocation and Fragmentation
Compare first-fit, best-fit, and worst-fit allocation and observe free memory fragmenting.