- > ~ [✓] A scrappy lab for curious engineers. - > ~ [✓] Learn by ***building* real systems from scratch**. - > ~ [✓] Gain **deep intuition** by working from first principles. - > ~ [✓] Projects, interactive tutorials and rigorous content to **master your craft.** ## Join a course Apply for a course by filling in our [application form](https://form.typeform.com/to/Xo8YD51M). ## Courses #### AI & LLMs - **▸ Coding with AI: Ship Backends at the Speed of Thought** - Architect robust systems in natural language and higher level of abstraction using AI. Craft quality prompts, develop intuition for when to use AI, techniques for verifying output. You'll internalize best practices for prompt engineering, structuring projects to maximize AI effectiveness, and develop critical evaluation skills that help you wield tools like Claude Code like a 10x engineer. - **▸ Prompt Engineering: The Art of Talking to Machines** - Prompting is the new programming, raising devs from the level of implementation to the level of specification and verification. Learn to communicate with AI systems. Through systematic exploration of prompting techniques—from few-shot learning to chain-of-thought reasoning and ReAct patterns—you'll develop an intuitive understanding of how LLMs interpret instructions. Master effective methods like role prompting, constraint specification, output formatting, and error correction strategies. - **▸ Build an LLM from Scratch: From Backprop to GPT** - Ever wondered what's actually happening inside ChatGPT? Stop treating neural networks as magic boxes and build one yourself. Following Andrej Karpathy's legendary zero-to-hero curriculum, you'll implement backpropagation from scratch in micrograd, construct attention mechanisms by hand, and train your own GPT model that generates coherent text—this is deep work. By the end, you'll have deployed a working chatbot you built from the ground up, and you'll understand LLMs at a level that puts you in the top 1% of AI practitioners. - **▸ LLM Engineering: Ship AI Products That Use LLMs** - You know how to call an LLM API. Now learn to build production systems with them. Master RAG, semantic search, prompt chaining, fine-tuning, and function calling—the techniques powering real AI applications. Navigate model trade-offs, optimize for cost and latency, and develop the engineering discipline to ship AI products that actually work at scale. - **▸ MLOps: Platform Engineering for AI Deployments** - AI models are useless without infrastructure to serve them. Build the production platforms that power AI at scale: design model serving architectures, implement ML CI/CD pipelines, orchestrate training with Kubernetes, and build A/B testing frameworks. Master the stack that separates prototypes from products: container orchestration, feature stores, model registries, observability systems, and cost optimization. This is infrastructure engineering for the AI age—where understanding both distributed systems and model behavior is your competitive advantage. - **▸ Bare Metal AI: Systems & GPUs for Neural Networks** - Want to understand why PyTorch is fast? Write the kernels yourself. Dive into CUDA programming, GPU memory hierarchies, and parallel algorithm design. Profile and optimize matrix operations, implement custom kernels for attention mechanisms, understand memory coalescing and bank conflicts, and squeeze every TFLOP from modern hardware. This is for systems hackers who work at the level where nanoseconds matter and understand the hardware constraints that shape neural network training. By the end, you'll read NVIDIA optimization guides for fun. ##### Reference Materials - [Claude Code Best Practices](https://nikiforovall.blog/claude-code-rules/best-practices) - [Prompt Engineering Guide](https://www.promptingguide.ai/) - [Andrej Karpathy's Zero to Hero](https://karpathy.ai/zero-to-hero.html) - [Cohere's LLM University](https://cohere.com/llmu/) #### Distributed Systems & Concurrency - **▸ Build a Distributed Consensus Algorithm** - Follow MIT 6.824: implement the Raft consensus protocol from the paper, build fault-tolerant key-value stores, and debug distributed systems with network partitions. - **▸ Concurrency & Lock-Free Data Structures** - Build a task-stealing work queue from scratch or dig into Rust tokio's scheduler internals. Learn how lock-free algorithms achieve blazing performance without mutexes. #### Advanced: Hard Mode For Fun & Profit - **▸ NAND to Tetris** - Build a computer from scratch: start with NAND gates, design your own CPU, assembler, and compiler. End with a functioning operating system running Tetris you wrote yourself. - **▸ Build an LLM from Scratch** - Guided version of Andrej Karpathy's series: implement backpropagation in micrograd, build attention mechanisms, train your own GPT model, and deploy a working chatbot. - **▸ Build a Distributed Consensus Algorithm** - Follow MIT 6.824: implement the Raft consensus protocol from the paper, build fault-tolerant key-value stores, and debug distributed systems with network partitions. - **▸ Concurrency & Lock-Free Data Structures** - Build a task-stealing work queue from scratch or dig into Rust tokio's scheduler internals. Learn how lock-free algorithms achieve blazing performance without mutexes. - **▸ Structure and Interpretation of Computer Programs** - Mind-bending deep dive into computation: build metacircular evaluators, lazy interpreters, and logic programming systems. Experience the paradigm shifts that will fundamentally change how you think about code. - **▸ Build an Operating System from Scratch in Rust** - Follow MIT 6.828 theory and Phil Opp's Rust OS tutorial: implement memory management, process scheduling, system calls, and filesystems. Build a bootable OS kernel that runs on bare metal. - **▸ How to Design & Invent New Algorithms** - Go beyond interview prep and learn techniques to invent algorithms for problems in the wild. Using Manber and CLRS, master induction, recursion, and strengthening-of-hypotheses to design solutions from first principles—see failed attempts and how to fix them. - **▸ Distributed Control Systems** - Design real-time control software for physical machines using 80 proven patterns: architect systems for forestry machinery, mining drills, and elevators that handle distribution, fault tolerance, and long lifecycles. Learn trade-offs between performance and maintainability in a simulated environment where machines actually break. #### Intermediate: Build Real Tools, Learn Real Skills - **▸ Designing Scalable Web Services** - Build web services that scale to millions using patterns from Kleppmann and AWS Builder's Library: design Twitter-scale architectures, simulate cascading failures, and make consistency/latency trade-offs in a realistic environment. See your designs under production load before writing a single line of code. - **▸ Algorithms in the Wild** - Learn foundational algorithms by building real tools: create a search engine, implement a diff algorithm, build a database from scratch, clone git, and write a load balancer. Discover data structures through curiosity and construction, not memorization. - **▸ Beautiful Code** - Study elegance and clarity in programming through classic examples of well-crafted software. Learn to recognize and write code that's not just functional, but beautiful—readable, maintainable, and artful. - **▸ Build a Text-Adventure Game in Lisp** - Follow Land of Lisp and create an interactive fiction game while learning functional programming. Master recursion, macros, and AI techniques through playful exploration. - **▸ Deploy Infrastructure the Old Way with Raspberry Pis** - Deploy applications from bare metal: provision servers, configure networks, set up load balancers, and automate deployments without cloud abstractions. Understand what Kubernetes is actually doing under the hood. - **▸ Command-Line Rust** - Learn Rust by building practical CLI tools: grep clones, file parsers, and system utilities. Master ownership, borrowing, and lifetimes through hands-on projects that compile to blazing-fast binaries. ## Course Format The course format is inspired by that of [FabAcademy](https://fabacademy.org/). #### Delivery - Weekly group lecture, for a group of 4-6 per course - Lecture timings that suit your group's commitments - Weekly project, with an option to do your own - Optional weekly discussion session between students - Facilitators are course-dependent - Each course runs for a span of 3 months #### Assessment No exams, quizzes or grades, but you're expected to build stuff and maintain a very well-documented portfolio of the things you build. This might be an open-source code repository, or in some courses, actual products or objects you built (e.g. a logic circuit). To complete the course, it is important that your final project is functional and easy to understand with documentation. #### Tools Outside the live sessions, you will receive access to the following learning tools: - **▸ Pedagogic IDE** - An IDE that provides tutorials for the projects and gives you hints when you're stuck, tracks your progress, and adapts to your learning style. It maximizes skill and knowledge retention using visualizations, the "I do / you do" style of instruction and a spaced repetition practice schedule. - **▸ System Design Explorer & Interactive Textbooks** - An interactive and animated boxes-and-arrows UI that lets you visualize and simulate the systems you're building. Course content delivered to you as text, image, audio, visualizations, including tutorials that you can try to 're-write without looking' to test your memory and understanding. - **▸ Personalized AI Tutor** - An AI chatbot that keeps track of your understanding and mental models, and corrects misconceptions and provides direction so you're not stuck or lost for longer than optimal for effective learning. - **▸ Learning Dashboard & Community Forum** - A dashboard of your learning, achievements, notes and links to your portfolio that you can publish as a static website to showcase your growth. A private subreddit per course will be provided for chats and discussions.