Pavel Panchekha


Share under CC-BY-SA.

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author and do not necessarily reflect the views of the National Science Foundation.

Quantum to Web

This class covers the design of computer systems, starting with a description of semiconductor physics and traveling to the design of the Internet and the World Wide Web. Due to scope and length, the class is only a cursory overview of each topic; the goal is to give an overview so that students understand the general structure of the web, not so that they'd be able to build any part of it.


In the most recent run of this course, Pavel Panchekha has presented the even-indexed sections (semiconductors, gates, assembly, and so on) and David Lawrence has presented the odd-indexed sections (transistors, registers, the kernel, and so on).

The physics of atoms and particles – quantum mechanics. Band-gap theory and doping.
Electricity. How to put semiconductors together into a MOSFET, and the electrical properties of a MOSFET. The digital abstraction.
Gates & ALUs
How transistors can be put together into AND, OR, and NOT gates. How these gates can be combined to perform useful functions. And how an "arithmetical logic unit" – the part of your CPU that does math – can be put together.
Registers & Memory
How state can be kept in a CPU. The design of associated CPU hardware: registers on the CPU, memory to store larger data, busses to connect them, and so forth.
Assembly Language
How programs for computers are written. Assembly language semantics, and perhaps a simple x86 assembly program. The job of an assembler. The job of compilers, which turn higher-level languages into assembly.
The Kernel
Interrupts, Pages, and Processes. How the operating system kernel manages devices and other asynchronous events. How it provides for multiple processes running simultaneously. How each process is isolated from others. Other kernel functions, such as networking.
Layers 1, 2, and 3
How bits are represented on the wire: Layer 0. How they are assembled into packets: Layer 1. How two computers can talk to each other: Layer 2. And how we go from two linked computers to a large network of them. How packets travel across this network, and basic routing algorithms.
How DNS (the domain name system) is used to give symbolic names to computers. How individual packets sent back and forth are combined into the concept of a "connection", and how lossy, slow, or congested networks are worked around: TCP, the transmission control protocol.
The HyperText Transfer Protocol, which is what computers on the world wide web use to request resources and suggest actions to one another. URLs, Universal Resource Locators, which describe these resources. Caching, access control, media types, and encryption.
The Internet
How the entire stack of technologies above enables us to appreciate a global, interconnected, digital web; and the technologies built atop it that we use every day. May delve into HTML, CSS and Javascript; server-side scripting and CGI; XMLHttpRequest and WebSockets; REST and HATEOAS; distributed systems engineering; or any other topics that there is time for.