projects

Things I have built, grouped by kind. Self-study course work is listed at the bottom.

Self-study course work

Alongside my degree I work through public course materials from other universities. These repositories hold my own solutions to those assignments; they are listed for completeness rather than as original projects. Everything else, including forks, is in the repository catalog.

AI & Agent Systems (9)
  • WEIPING_WHALE — A terminal-native DeepSeek coding agent with snapshots, session branching, model routing, sub-agents, diagnostics, and cost tracking, based on CodeWhale.
  • aics-labs — Self-study implementations based on the AI Computing Systems labs, covering operators, a compact deep-learning framework, and style transfer.
  • cmu11667-llms — Self-study implementations based on CMU 11-667, covering transformers, retrieval and tool use, in-context learning, calibration, and efficiency.
  • cmu11711-anlp — Self-study assignments based on CMU 11-711, including a compact BERT implementation for sentiment, paraphrase, and similarity tasks.
  • cs224n-nlp — Self-study NLP assignments based on Stanford CS224N, covering word vectors, dependency parsing, neural machine translation, and Transformer pretraining.
  • cs231n-assignments — Self-study computer-vision assignments based on Stanford CS231N, covering classifiers, convolutional networks, captioning, and generative models.
  • cs50-ai — Self-study projects based on Harvard CS50 AI, covering search, logic, probabilistic inference, optimization, machine learning, computer vision, and NLP.
  • deep-learning-specialization — Self-study implementations based on the DeepLearning.AI Deep Learning Specialization, covering optimization, convolutional networks, and sequence models.
  • lhy-ml-homeworks — Self-study machine-learning assignments based on Hung-yi Lee’s public course materials, spanning supervised, generative, and reinforcement-learning topics.
Recommenders, Models & Data (19)
  • cmu-17803-empirical — Self-study analyses based on CMU 17-803 materials, covering empirical study design, statistics, and reproducible software-engineering research.
  • cmu10708-pgm — Self-study implementations based on CMU 10-708, covering inference, parameter learning, and structured probabilistic models.
  • cmu11785-idl — Self-study deep-learning systems based on CMU 11-785, including automatic differentiation, neural-network components, sequence models, and attention.
  • cs189-ml — Self-study machine-learning assignments based on UC Berkeley CS189, covering classification, regression, trees, neural networks, clustering, PCA, and kernels.
  • cs224w-graph-ml — Self-study graph-learning assignments based on Stanford CS224W, covering node embeddings, message-passing networks, classification, and link prediction.
  • cs229-machine-learning — Self-study programming assignments based on Stanford CS229, covering regression, generative classifiers, SVMs, clustering, PCA, and reinforcement learning.
  • cs229m-ml-theory — Self-study theory exercises based on Stanford STATS 214 and CS229M, covering concentration, complexity, margins, kernels, and online learning.
  • cs285-deep-rl — Self-study deep-RL assignments based on UC Berkeley CS285, covering imitation, policy gradients, value methods, model-based learning, and offline RL.
  • eecs498-deep-vision — Self-study vision assignments based on Michigan EECS 498/598, covering classifiers, convolutional and recurrent networks, detection, and generative models.
  • flow-matching-6s184 — Self-study generative-model implementations based on MIT 6.S184 materials, covering flow matching and score-based diffusion.
  • mit-6s7960-dl — Self-study deep-learning assignments based on MIT 6.S7960, focused on implementing and analyzing neural-network components and training methods.
  • ml-specialization-labs — Self-study Machine Learning Specialization work covering regression, neural networks, trees, clustering, anomaly detection, recommendation, and deep Q-learning.
  • needle-dl-system — A self-study Needle framework based on CMU 10-414/714, covering autodiff, neural-network modules, optimization, array backends, and sequence models.
  • neural-networks-zero-to-hero — Self-study implementations based on Andrej Karpathy’s Neural Networks: Zero to Hero series, including micrograd, makemore, a compact GPT, and BPE tokenization.
  • nyu-dl-2021 — Self-study work based on NYU’s 2021 deep-learning course, covering backpropagation, CNNs, RNNs, attention, and energy-based models.
  • sta4273-min-expectations — Self-study work based on University of Toronto STA4273, covering variational methods, gradient estimators, and latent-variable models.
  • stanford-ee364a-convex — Self-study numerical exercises based on Stanford EE364A, using CVXPY for linear, quadratic, second-order-cone, and semidefinite optimization.
  • stat8201-dgm — Self-study assignments based on Columbia STAT8201, covering variational autoencoders, normalizing flows, GANs, autoregressive models, and diffusion.
  • ucb-data100 — Self-study Data 100 labs covering regression, optimization, classification, dimensionality reduction, clustering, and applied projects.
Systems, Security & Infrastructure (37)
  • asu-cse365 — Self-study security exercises based on ASU CSE365 and pwn.college materials, spanning Linux permissions, shellcode, debugging, and web vulnerabilities.
  • asu-cse466 — Self-study systems-security exercises based on ASU CSE466 and pwn.college materials, covering reverse engineering, memory corruption, and sandboxing.
  • caltech-cs122-nanodb — A self-study NanoDB implementation based on Caltech CS122, covering storage, buffer management, B+ trees, query planning, and transactions.
  • cmu-15445-bustub — A self-study BusTub database implementation based on CMU 15-445, covering buffer management, B+ trees, query execution, and concurrency.
  • cmu-15799 — Self-study work based on CMU 15-799 database-systems materials, focused on query optimization and DBMS internals.
  • cmu11868-llm-systems — Self-study systems work based on CMU 11-868, covering attention kernels, memory and quantization techniques, and parallel training and serving.
  • cs110l-rust — Self-study Rust exercises based on Stanford CS110L, including systems-programming practice, a ptrace debugger, and an asynchronous load balancer.
  • cs144-tcp — A self-study TCP/IP stack based on Stanford CS144, covering byte streams, reassembly, TCP send and receive paths, network interfaces, and routing.
  • cs149-parallel — Self-study parallel-computing assignments based on CMU 15-418 and Stanford CS149, using ISPC, pthreads, OpenMP, and CUDA.
  • cs162-pintos — Self-study Pintos operating-system projects based on UC Berkeley CS162, covering scheduling, system calls, user programs, and file systems.
  • cs168-internet — Self-study networking projects based on UC Berkeley CS168, covering reliable transport, routing, and traceroute.
  • cs186-rookiedb — A self-study RookieDB implementation based on UC Berkeley CS186, covering B+ trees, joins, query optimization, concurrency, and recovery.
  • csapp-labs — Self-study systems exercises based on CMU 15-213 and CS:APP, covering data representation, assembly, caching, shells, memory allocation, and network proxies.
  • cse234-ml-data-systems — Self-study assignments based on UC San Diego CSE234, covering automatic differentiation, graph and operator optimization, and parallel machine-learning systems.
  • hit-os — Self-study operating-system labs based on HIT materials, modifying Linux 0.11 components such as boot, system calls, scheduling, IPC, terminals, and procfs.
  • kaist-cs220-rust — Self-study Rust assignments based on KAIST CS220, focused on programming-language principles and functional abstraction.
  • kaist-cs420 — A self-study Rust compiler based on KAIST CS420, covering intermediate representation, optimization, and assembly generation for C.
  • kaist-cs431-concurrent-rust — Self-study Rust assignments based on KAIST CS431, covering lock-based and lock-free structures, hazard pointers, and concurrent hash maps.
  • kurose-wireshark-labs — Self-study packet-analysis labs based on Kurose and Ross networking materials, using Python and Scapy across common Internet protocols.
  • missing-semester — Self-study exercises based on MIT’s Missing Semester, covering shell tools, editors, data wrangling, version control, debugging, build systems, and security.
  • mit-6.1600 — Self-study security labs based on MIT 6.1600, covering hashing, Merkle trees, cryptographic attacks, side channels, sandboxing, and fuzzing.
  • mit-6824-raft — Self-study distributed-systems labs based on MIT 6.824/6.5840, covering MapReduce, Raft, fault-tolerant key-value services, and sharding.
  • mit-6858 — Self-study MIT 6.858 labs using Zoobar to explore memory safety, isolation, symbolic execution, browser security, and secure storage.
  • mlc-exercises — Self-study exercises based on the MLC course, covering TensorIR, model compilation, program optimization, and Apache TVM integration.
  • nju-compilers — A self-study compiler based on Nanjing University materials, covering lexing, parsing, semantics, IR, and code generation.
  • nju-os — Self-study operating-system labs based on Nanjing University materials, spanning host-side tools, concurrency, process management, memory, and file systems.
  • pku-sysy-compiler — A self-study SysY compiler based on Peking University materials, lowering a C-like language through Koopa IR to RISC-V assembly.
  • seed-labs — Self-study security exercises based on Syracuse SEED Labs, covering selected software, cryptography, network, and web-security topics.
  • sjtu-compilers — A self-study compiler based on Shanghai Jiao Tong University materials, covering the standard stages for a C-like language.
  • stanford-cs110-syscore — Self-study C++ systems projects based on Stanford CS110, including filesystems, processes, shells, thread pools, proxies, and MapReduce.
  • stanford-cs143-cool — A self-study Cool compiler based on Stanford CS143, covering lexical analysis, parsing, semantic analysis, and MIPS code generation.
  • stanford-cs346-db — A self-study RedBase relational database based on Stanford CS346, covering paged storage, B+ trees, catalogs, query execution, optimization, and aggregation.
  • sysadmin-decal — Self-study work based on Berkeley OCF’s Linux System Administration DeCal, covering command-line operations, services, networks, and security.
  • top-down-labs — Self-study networking labs based on USTC materials and a top-down networking curriculum, covering sockets, protocols, and Mininet experiments.
  • ucb-cs161 — Self-study security projects based on UC Berkeley CS161, covering memory safety, cryptography, network security, and vulnerable web applications.
  • ustc-compilers — A self-study Cminus-f compiler based on USTC materials, covering lexical and syntax analysis, LightIR and LLVM IR, and code generation.
  • xv6-labs — Self-study xv6 labs based on MIT 6.S081/6.1810, covering system calls, virtual memory, traps, copy-on-write, networking, synchronization, filesystems, and mmap.
Robotics, Embedded & Hardware (7)
  • cs61c — Self-study computer-architecture projects based on UC Berkeley CS61C, covering C, RISC-V, pipelined processors, and parallel matrix computation.
  • ethz-computer-architecture — Self-study simulator exercises based on ETH Zürich computer-architecture materials, covering caches, branch prediction, prefetching, and memory systems.
  • mit-6007-signals — Self-study Python work based on MIT 6.007, covering LTI systems, Fourier analysis, sampling, transforms, filtering, modulation, and feedback.
  • nand2tetris — Self-study implementations based on Nand2Tetris, progressing from logic gates and a CPU to an assembler, virtual machine, Jack compiler, and operating system.
  • tinyml-efficient-dl — Self-study labs based on MIT 6.5940, covering pruning, quantization, neural-architecture search, and efficient deep-learning techniques.
  • ucb-ee120-signals — Self-study Python labs based on UC Berkeley EE120, covering convolution, LTI systems, sampling, Fourier analysis, biomedical signals, denoising, and feedback.
  • ucb-ee16ab — Self-study Python labs based on UC Berkeley EE16A and EE16B, covering imaging, localization, classification, dynamics, estimation, control, and matrix methods.
Graphics, Games & Creative Computing (9)
  • cmu-15462-scotty3d — A CPU-oriented Python and NumPy reimplementation based on CMU 15-462/662 Scotty3D, covering rasterization, mesh processing, path tracing, and animation.
  • cs188-pacman-ai — Self-study Pacman AI projects based on UC Berkeley CS188, covering search, games, reinforcement learning, probabilistic inference, and ML.
  • duke-intro-c — Self-study C projects based on Duke University’s Introductory C Programming Specialization, including card-game and image-data exercises.
  • games101 — Self-study graphics assignments based on GAMES101, covering rasterization, shading, Bézier curves, ray tracing, acceleration structures, and path tracing.
  • games103 — Self-study GAMES103 implementations covering rigid bodies, mass-spring cloth, finite-element elasticity, and shallow-water simulation.
  • games202 — Self-study GAMES202 rendering work covering soft shadows, radiance transfer, screen-space effects, energy compensation, and denoising.
  • mit-6031-software-construction — Self-study Java projects based on MIT 6.031, focused on specifications, abstract data types, testing, parsers, graphs, and collaborative applications.
  • stanford-cs148 — A self-study CPU renderer based on Stanford CS148, covering rasterization, Whitted ray tracing, bounding-volume hierarchies, and Monte Carlo path tracing.
  • ustc-cg — Self-study USTC graphics work covering image and mesh processing, parameterization, deformation, simplification, rasterization, and path tracing.
Coursework, Reproductions & Notes (33)
  • aut-ap1400 — Self-study C++ assignments based on Amirkabir University AP1400-2, covering object-oriented programming and data structures.
  • cambridge-semantics — Self-study exercises based on Cambridge programming-language semantics materials, including operational and mechanized treatments of small languages.
  • cornell-cs3110-ocaml — Self-study OCaml assignments based on Cornell CS3110, covering functional programming, modules, testing, and a course-scale final project.
  • cs106b — Self-study C++ assignments based on Stanford CS106B, covering recursion, backtracking, abstract data types, trees, graphs, and algorithms.
  • cs106l — Self-study assignments based on Stanford CS106L, focused on modern C++ including the STL, RAII, templates, iterators, and move semantics.
  • cs169-agile — Self-study web-engineering assignments based on UC Berkeley CS169, using Ruby on Rails with behavior- and test-driven development.
  • cs170 — Self-study work based on UC Berkeley CS170, combining written analysis with implementations of algorithms for tractable and intractable problems.
  • cs50p — Self-study Python exercises based on Harvard CS50P, spanning core language features, testing, file handling, regular expressions, and object-oriented design.
  • cs50x — Self-study projects based on Harvard CS50x, using C, Python, SQL, and web technologies across introductory computer-science topics.
  • cs571-react-native — A self-study full-stack chat application based on UW–Madison CS571, with a REST API and React web and React Native clients.
  • cs61a-sicp — Self-study projects based on UC Berkeley CS61A, covering functional abstraction, data structures, interpreters, and a Scheme implementation in Python.
  • cs61b — Self-study Java projects based on UC Berkeley CS61B, covering data structures, algorithms, a version-control system, and a tile-based world generator.
  • ethz-ddca — Self-study SystemVerilog labs based on ETH Zürich digital-design materials, focused on constructing and simulating MIPS and RISC-V processors.
  • full-stack-open — Self-study applications based on Helsinki’s Full Stack Open course: a React and Express blog app and an Apollo GraphQL library service.
  • haskell-mooc — Self-study functional-programming exercises based on the University of Helsinki Haskell MOOC, spanning the course’s sixteen topic sets.
  • info-theory-mackay — Self-study Python implementations based on David MacKay’s information-theory text, covering coding, channels, error correction, MCMC, and EM.
  • mit-1801-1802-calculus — Self-study numerical checks and worked exercises based on MIT 18.01 and 18.02, covering single- and multivariable calculus.
  • mit-1806-linear-algebra — Self-study NumPy implementations based on MIT 18.06, covering matrix factorizations, least squares, eigenvalue methods, SVD, PageRank, and the DFT.
  • mit-18330-numerical — Self-study Julia exercises based on MIT 18.330, covering foundational numerical-analysis methods and convergence behavior.
  • mit-6006 — Self-study programming exercises based on MIT 6.006, covering data structures, graph algorithms, dynamic programming, and related algorithmic problems.
  • mit-6042j — Self-study code and proof notes based on MIT 6.042J, covering number theory, graphs, counting, generating functions, probability, and random walks.
  • mit-6046 — Self-study written and programming exercises based on MIT 6.046, focused on algorithm design, analysis, and implementation.
  • mit-6050j-info-theory — Self-study Python work based on MIT 6.050J, covering entropy, mutual information, coding, channel capacity, error correction, and maximum entropy.
  • mit-6092-java — Self-study Java exercises based on MIT 6.092, covering introductory programming, object-oriented design, collections, and basic application development.
  • mit-6100l — Self-study Python exercises based on MIT 6.100L, covering introductory programming, problem decomposition, algorithms, and data structures.
  • mit-web — A self-study MERN social application based on MIT web.lab materials, with authentication, real-time chat, and a React, Express, MongoDB, and Socket.IO stack.
  • nju-software-analysis — Self-study static analysis based on Nanjing University materials and Tai-e, covering dataflow, call graphs, pointers, and taint analysis.
  • pku-software-analysis — Self-study assignments based on Peking University software-analysis materials, covering static and dynamic analysis, dataflow, and symbolic execution.
  • princeton-algorithms — Self-study Java assignments based on Princeton Algorithms I and II, spanning union-find, sorting, graphs, string algorithms, and compression.
  • stanford-cs142 — A self-study MERN photo application based on Stanford CS142, covering sessions, registration, uploads, comments, and activity feeds.
  • stanford-cs242 — Self-study assignments based on Stanford CS242, covering lambda calculus, type systems, and programming-language implementation.
  • ucb-cs126 — Self-study exercises based on UC Berkeley EECS 126, covering probability, coding, random graphs, stochastic processes, detection, and filtering.
  • ucb-cs70 — Self-study code and notes based on UC Berkeley CS70, covering discrete mathematics, number theory, coding, matching, probability, and Markov chains.