Computer Fundamentals: Hardware, operating systems, networks and databases, in order
The core of computer engineering in the order that makes it click: how a computer works, then operating systems, networking and database management systems, ending with one request followed through every layer.
0 of 16 modules complete · 0 in progress · 16 to come
Locked. These lessons are not open to the public yet.
-
01
Computer organization
What the hardware does, so the software above it makes sense.
0 / 9- 1.1Bits, bytes and number systemsSoon
- 1.2Representing text, integers and floating-point numbersSoon
- 1.3Logic gates and digital circuitsSoon
- 1.4CPU architecture: ALU, registers, control unitSoon
- 1.5Instruction sets and the fetch-decode-execute cycleSoon
- 1.6Pipelining, superscalar execution and multicoreSoon
- 1.7Memory hierarchy: registers, caches, RAM, storageSoon
- 1.8I/O devices, buses, interrupts and DMASoon
- 1.9Compilation, linking and loadingSoon
-
02
Operating systems: foundations
What an OS is and how programs run on it.
0 / 6- 2.1What an operating system doesSoon
- 2.2Kernel mode, user mode and system callsSoon
- 2.3Processes and the process control blockSoon
- 2.4Threads and multithreading modelsSoon
- 2.5CPU scheduling algorithmsSoon
- 2.6Context switching and interruptsSoon
-
03
Operating systems: concurrency
Many things at once, correctly.
0 / 6- 3.1Race conditions and critical sectionsSoon
- 3.2Locks, mutexes and spinlocksSoon
- 3.3Semaphores, monitors and condition variablesSoon
- 3.4Producer-consumer, readers-writers and dining philosophersSoon
- 3.5Deadlocks: conditions, prevention and detectionSoon
- 3.6Inter-process communication: pipes, shared memory, message queues, socketsSoon
-
04
Operating systems: memory
Giving each process its own memory.
0 / 7- 4.1Address spaces, stack and heapSoon
- 4.2Contiguous allocation and fragmentationSoon
- 4.3Paging and segmentationSoon
- 4.4Virtual memory and page tablesSoon
- 4.5TLB and address translationSoon
- 4.6Page faults and page replacement algorithmsSoon
- 4.7Thrashing and the working setSoon
-
05
Operating systems: storage and files
Persisting data beyond a process.
0 / 7- 5.1HDDs, SSDs and their access characteristicsSoon
- 5.2File systems: files, directories, inodesSoon
- 5.3File allocation methods and journalingSoon
- 5.4Disk schedulingSoon
- 5.5Page cache, buffering and fsyncSoon
- 5.6RAID levelsSoon
- 5.7Virtualization, hypervisors and containersSoon
-
06
Networking: foundations
How machines are connected.
0 / 6- 6.1Networks, packets and protocolsSoon
- 6.2OSI and TCP/IP modelsSoon
- 6.3Circuit switching, packet switching and latency, bandwidth, throughputSoon
- 6.4Physical and data link layers: Ethernet, frames, MAC addressesSoon
- 6.5Error detection and correctionSoon
- 6.6Switches, ARP and Wi-FiSoon
-
07
Networking: network layer
Getting a packet across the world.
0 / 5- 7.1IPv4, IPv6, subnets and CIDRSoon
- 7.2Routers, routing tables and forwardingSoon
- 7.3Routing protocols: OSPF and BGPSoon
- 7.4NAT and DHCPSoon
- 7.5ICMP, ping and tracerouteSoon
-
08
Networking: transport layer
Reliable delivery on an unreliable network.
0 / 6- 8.1Ports and socketsSoon
- 8.2UDPSoon
- 8.3TCP connections: handshake and teardownSoon
- 8.4TCP reliability: sequence numbers, acknowledgements, retransmissionSoon
- 8.5Flow control and congestion controlSoon
- 8.6QUIC and HTTP/3Soon
-
09
Networking: application layer
The protocols programs actually speak.
0 / 8- 9.1DNSSoon
- 9.2HTTP: methods, status codes, headers, cachingSoon
- 9.3HTTP/1.1, HTTP/2 and HTTP/3Soon
- 9.4TLS, certificates and HTTPSSoon
- 9.5WebSockets and server-sent eventsSoon
- 9.6SMTP, FTP and SSHSoon
- 9.7Load balancers, proxies and CDNsSoon
- 9.8Firewalls, VPNs and common attacksSoon
-
10
DBMS: foundations
Why databases exist and how data is modelled.
0 / 7- 10.1File systems vs DBMSSoon
- 10.2DBMS architecture and data independenceSoon
- 10.3Entity-relationship modelSoon
- 10.4Relational model: keys and constraintsSoon
- 10.5Relational algebraSoon
- 10.6SQL: queries, joins, grouping and subqueriesSoon
- 10.7SQL: window functions, views, triggers and stored proceduresSoon
-
11
DBMS: design
Structuring data so it stays correct.
0 / 4- 11.1Functional dependenciesSoon
- 11.2Normal forms: 1NF to BCNFSoon
- 11.3Denormalization and when to use itSoon
- 11.4Schema design in practiceSoon
-
12
DBMS: storage and indexing
How a database finds a row quickly.
0 / 6- 12.1Pages, records and heap filesSoon
- 12.2Indexing: primary, secondary and clusteredSoon
- 12.3B-trees and B+ treesSoon
- 12.4Hash indexesSoon
- 12.5LSM treesSoon
- 12.6Buffer pool and cachingSoon
-
13
DBMS: query processing
From a SQL string to a result.
0 / 3- 13.1Parsing and query optimizationSoon
- 13.2Join algorithms: nested loop, hash and sort-mergeSoon
- 13.3Cost estimation and reading query plansSoon
-
14
DBMS: transactions
Many users, one correct database.
0 / 7- 14.1Transactions and ACIDSoon
- 14.2Schedules and serializabilitySoon
- 14.3Locking, two-phase locking and timestamp orderingSoon
- 14.4Multi-version concurrency controlSoon
- 14.5Isolation levels and anomaliesSoon
- 14.6Write-ahead logging and crash recoverySoon
- 14.7Deadlocks in databasesSoon
-
15
DBMS: distributed databases
When one database is not enough.
0 / 5- 15.1ReplicationSoon
- 15.2Partitioning and shardingSoon
- 15.3CAP theorem and consistency modelsSoon
- 15.4Two-phase commit and distributed transactionsSoon
- 15.5SQL vs NoSQL and the NoSQL familiesSoon
-
16
Putting it together
Following one request through every layer.
0 / 5- 16.1What happens when you type a URLSoon
- 16.2Client-server architecture and web serversSoon
- 16.3How the OS handles a network connectionSoon
- 16.4How a database uses the OS: files, memory, threadsSoon
- 16.5From fundamentals to system design, distributed systems and SRESoon