Expert level Compilers and Programming Languages

Optimising Compilers, JITs, Garbage Collection and Language Tooling

Work at the level of production language implementations: dataflow and SSA optimisation, register allocation, LLVM and MLIR pass pipelines, just-in-time compilers with inline caches and deoptimisation, modern garbage collectors, debug information, language servers, and compiler testing with fuzzing and translation validation.

  • 49hours of work
  • 13parts
  • Reviewedcapstone
  • Lifetimeaccess
  • SSA optimisation
  • Register allocation
  • LLVM and MLIR
  • JIT compilation
  • Garbage collector design
  • Language servers and debug information
  • Compiler fuzzing and verification

At a glance

Who it is for

Engineers who have built a typed compiler with an IR, a bytecode VM and a native back end and now want to understand and build the machinery of industrial-strength language implementations.

Before you start

The intermediate programme in this track or equivalent: type checking, bytecode VMs, three-address code and CFGs, a simple code generator and a mark-sweep collector. Working knowledge of C or Rust, comfortable reading LLVM IR and x86-64 assembly, and basic computer architecture (caches, pipelines, branch prediction).

How you finish

Pass the quizzes and labs, then submit a capstone project. The NIBVEDA team reviews it and either accepts it or sends it back with comments you can act on.

What you will be able to do

  1. 01Implement SSA-based optimisations, global value numbering and a linear-scan or graph-colouring register allocator
  2. 02Write and run custom LLVM passes and explain how MLIR dialects lower to machine code
  3. 03Build a baseline JIT with inline caches, type feedback, tiering and deoptimisation
  4. 04Compare and implement tracing, generational and concurrent garbage collection strategies
  5. 05Build language tooling: a language server, tree-sitter style incremental parsing and debug information
  6. 06Test compilers rigorously with differential testing, fuzzing, reducers and translation validation

Curriculum 49 hours in 13 parts

Select a kind to highlight its parts.

Stage 1An optimising VM with inline caches, a baseline JIT and a generational collector7 parts · 21 h
  1. 1
    How production compilers and runtimes are really builtWorkshop · Follow along and build, with the steps and the traps written out.
    2 hFree
  2. 2
    Dataflow, SSA optimisation and register allocation in depthWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  3. 3
    Working with LLVM and MLIR: custom passes, pipelines and dialect loweringWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  4. 4
    Check yourself: dataflow, SSA, register allocation, LLVM and MLIRQuiz · Twelve questions, marked at once, with the reason behind each answer.
    1 h
  5. 5
    Just-in-time compilation: tiering, inline caches, type feedback and deoptimisationWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  6. 6
    Garbage collector design: concurrent, generational and region-based collectorsWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  7. 7
    An optimising VM with inline caches, a baseline JIT and a generational collectorLab · Hands-on work. Many labs are checked automatically against what must exist.
    6 h
Stage 2A language server, formatter and an adversarial test harness for your language4 parts · 13 h
  1. 8
    Check yourself: JIT compilation and garbage collector designQuiz · Twelve questions, marked at once, with the reason behind each answer.
    1 h
  2. 9
    Language tooling: language servers, incremental parsing and debug informationWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  3. 10
    Language semantics, compiler testing, fuzzing and translation validationWorkshop · Follow along and build, with the steps and the traps written out.
    3 h
  4. 11
    A language server, formatter and an adversarial test harness for your languageLab · Hands-on work. Many labs are checked automatically against what must exist.
    6 h
Stage 3Language tooling, semantics and compiler testing1 part · 1 h
  1. 12
    Check yourself: language tooling, semantics and compiler testingQuiz · Twelve questions, marked at once, with the reason behind each answer.
    1 h
FinishCapstone project1 part · 14 h
  1. 13
    A production-grade implementation of a language with optimiser, JIT or native back end, GC and toolingCapstone · A full project for your portfolio.
    14 h
Free lessonHow production compilers and runtimes are really built
What you take away

An internship certificate with your skills on it.

Made for you automatically when you finish the last part, it names the internship programme, the level and the 49 hours, lists what you showed, and carries a number and a QR code. Anyone can check it on the NIBVEDA verification page, and it shows as withdrawn there if it is ever revoked.

  • Proof you completed all 49 hours of this internship programme
  • An Internship badge for your profile, CV or portfolio
  • Not a job, a stipend or an academic degree, and it says so
More in Compilers and Programming Languages

Keep building.

3 programmes in this track, from beginner to expert. Buy the learning path and save 15%.

IntermediateIntermediate43 h Type Systems, Bytecode Virtual Machines, Intermediate Representations and Code Generation

Build a real compiler: architecture of front, middle and back ends, symbol tables and static type checking with inference, a bytecode compiler and a stack virtual machine with calls and closures, intermediate representations and basic optimisations, memory management and garbage collection, and code generation to LLVM IR, WebAssembly or assembly.

  • Compiler architecture
  • Type checking and inference
  • Bytecode virtual machines
Rs. 649 + GST
BeginnerBeginner41 h Lexers, Parsers and Interpreters from Scratch

Learn how programming languages work by building one: tokenising source text, parsing with recursive descent and Pratt precedence, building syntax trees, evaluating with environments, functions and closures, reporting good errors, testing the language and finishing with your own complete interpreter.

  • Lexing
  • Parsing and ASTs
  • Interpreters
Rs. 299 + GST

See all 3 programmes in Compilers and Programming Languages Take the placement test

Before you enrol

Quick answers.

The policies have the full detail.

Is this a real internship?

It is a virtual internship programme: a structured, self-paced course built around a real project, with checked assessments and a certificate. It is not employment, it does not carry a stipend and it is not an academic or AICTE-approved qualification. What it gives you is verified, project-based evidence of skills.

How does self-paced work?

You start when you like and move at your own speed. Each part unlocks when you finish the one before it. There are no live classes and no deadlines. Your access is shown on each programme page.

How is my work checked?

Quizzes are marked as soon as you submit them. Labs use a tick-list of tasks. Intermediate and Expert programmes finish with a capstone that the NIBVEDA team reviews and either accepts or sends back with comments.

Can I get a refund?

Please read the refund policy before you buy. It explains when a refund is possible.

Ready to start?

Rs. 1,178.82 including GST. Lifetime access. Read the first lesson free before you decide.