Harvard
Systems
Reading Group
2022/09 — 2023/05
reading about computer systems: the building blocks of our applications
✨ curation criteria
- broad interest to systems and application designers
- excellent quality of prose
- opportunity for hands-on learning (i.e., actually used)
- not so serious: programming should be fun, dang it!
But more seriously…
All are invited to join us, regardless of past background — we believe that having diverse thoughts is important to learning together as a collective.
All you need is a computer. We'll read during the session. This is because sharing knowledge with others is more fun, provides helpful context, and builds a community deeply valuing curiosity and individual empowerment.
You're not expected to have attended previous weeks.
Okay fine, so whatd'ya got?
Computer networks “speedrun”
ethernet, 802.11 wifi, bluetooth, switched Ethernet, the Internet, brief intro to BGP, and IPv6
Networking redux
UDP, TCP, congestion control, TLS, HTTP, QUIC, multicast, WebRTC, and DNS
Concurrency in Swift
design of a structured concurrency model; for better, safer, clearer, and more reliable code
Distributed OLTP SQL
what makes scalable, robust distributed database engines so hard?
Fuzzing with AFL
how to find vulnerabilities in complex software, and validate its correctness
Fuzzing: Breaking Things with Random Inputs •mykter/afl-training •Fuzzing-101
The essence of graph databases
building a graph database from the ground up, writing an original, minimal system in Rust
Learn Cypher in Y Minutes •arXiv: GQL @ SIGMOD '22 •ByteGraph paper
Storage-level systems engineering
diving into embedded database design: lessons about reliability, hardware, & performance
Practical authenticated encryption
what is AEAD? dive into ChaCha20-Poly1305, and make your own end-to-end encrypted chat
It takes two to ChaCha (Poly) •The design of ChaCha20 •The design of Poly1305
WebAssembly
an exciting new portable binary format. what is it, and how do we use it? is it just for the web?
Wasmtime •Understanding WAST •Build your own WebAssembly Compiler
Nix: Reproducible builds
it's a language, it's a package manager, it's an OS! isolated and declarative environments
Nix White Paper •Nix Pills •NixOS Paper
Hosted by Conrad Kramer, HKS TAPP '22-'23
Ethereum
systems engineering in the world's largest signed, distributed code execution platform
Yellow Paper •Deconstructing a Solidity Contract •EVM Deep Dives •Ethereum in numbers •EIP-1153
Hosted by Hao Wang '23
Regular expressions
regex are everywhere, but how do they actually work? let's learn the algorithms and do some alchemy
Regex can be simple and fast •Regex as a VM •CVE-2022-24713 •qntm/greenery
Containers
containers let us run and distribute applications. how do they work under the hood?
Docker Tutorial •What even is a container? •How Containers Work!
GPU computing with WebGL
websites can touch GPUs and be >100x faster, from graphics & ML to generative art
The Book of Shaders •Fluid Simulation •swissgl •TF.js backends •The Case for Use.GPU
JAX
inner workings of a high-performance ML library with roots in functional programming
DeepMind on JAX •Tutorial: JAX 101 •Autodidax: JAX core from scratch
Software architecture via Lichess
case study on a large-scale webapp, with live updates for 100,000,000 rated games / month
Twitter's recommendation algorithm
how does Twitter decide what to show you? let's find out together!
Gossip Glomers
solving distributed systems challenges by Fly.io and Kyle Kingsbury
Dataframe libraries
dataframes as embedded OLAP databases and in-memory query engines
Numeric performance optimization
we will write and tune matrix multiplication on CPU, then on the GPU as a CUDA kernel
CUDA Tutorial •Fast Matrix Multiplication on CPU •Optimizing a CUDA Matmul Kernel •Live Code
LangChain
friendly gadgets for turning large language models into useful applications
Question Answering over Docs •ChatGPT Clone •Auto-GPT
Hosted by Hao Wang '23
Organized by your host, Eric Zhang (@ekzhang1), with help from @Asherjnoel and others.