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.
Topics
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).
- Semiconductors
- The physics of atoms and particles – quantum mechanics. Band-gap theory and doping.
- Transistors
- 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
, andNOT
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.
- TCP and DNS
- 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.
- HTTP
- 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.