Programming Languages & Compiler Engineering — Skills Plan
Planned skill map for Programming Languages & Compiler Engineering. The curriculum will be developed and released in stages.
Build a language toolchain from lexing and parsing through type checking, intermediate representation, optimization, code generation, and runtime behavior.
Potential roles: Compiler Engineer · Programming Languages Engineer · Developer Tools Engineer
Before you start
- Programming in a systems language
- Data structures and discrete mathematics
- Computer architecture and operating-system basics
What you’ll build
- Implement a small typed language
- Build a bytecode virtual machine
- Create a static-analysis or compiler tool
Prerequisites
PLANNED- Programming in a systems language
Build the Programming in a systems language knowledge needed to follow the Programming Languages & Compiler Engineering foundations.
- Data structures and discrete mathematics
Build the Data structures and discrete mathematics knowledge needed to follow the Programming Languages & Compiler Engineering foundations.
- Computer architecture and operating-system basics
Build the Computer architecture and operating-system basics knowledge needed to follow the Programming Languages & Compiler Engineering foundations.
Foundations
PLANNED- Lexing, parsing, and abstract syntax trees
Explain how Lexing, parsing, and abstract syntax trees works and where it fits in the Programming Languages & Compiler Engineering learning path.
- Operational semantics and type systems
Explain how Operational semantics and type systems works and where it fits in the Programming Languages & Compiler Engineering learning path.
- Interpreters and virtual machines
Explain how Interpreters and virtual machines works and where it fits in the Programming Languages & Compiler Engineering learning path.
- Runtime memory and calling conventions
Explain how Runtime memory and calling conventions works and where it fits in the Programming Languages & Compiler Engineering learning path.
Core Skills
PLANNED- Static analysis and type checking
Use Static analysis and type checking to implement a working capability and verify its behavior in Programming Languages & Compiler Engineering.
- Intermediate representations and optimization
Use Intermediate representations and optimization to implement a working capability and verify its behavior in Programming Languages & Compiler Engineering.
- Code generation and linking
Use Code generation and linking to implement a working capability and verify its behavior in Programming Languages & Compiler Engineering.
- Language tooling and diagnostics
Use Language tooling and diagnostics to implement a working capability and verify its behavior in Programming Languages & Compiler Engineering.
Advanced / Production
PLANNED- Garbage collection and runtime performance
Evaluate Garbage collection and runtime performance trade-offs against the performance, reliability, and safety needs of Programming Languages & Compiler Engineering systems.
- Incremental compilation and build systems
Evaluate Incremental compilation and build systems trade-offs against the performance, reliability, and safety needs of Programming Languages & Compiler Engineering systems.
- JIT and ahead-of-time compilation trade-offs
Evaluate JIT and ahead-of-time compilation trade-offs trade-offs against the performance, reliability, and safety needs of Programming Languages & Compiler Engineering systems.
- Fuzzing and compiler correctness testing
Evaluate Fuzzing and compiler correctness testing trade-offs against the performance, reliability, and safety needs of Programming Languages & Compiler Engineering systems.
Real-World Projects
PLANNED- Implement a small typed language
Deliver a working outcome with Implement a small typed language, then test it against the project requirements.
- Build a bytecode virtual machine
Deliver a working outcome with Build a bytecode virtual machine, then test it against the project requirements.
- Create a static-analysis or compiler tool
Deliver a working outcome with Create a static-analysis or compiler tool, then test it against the project requirements.
Career / Interview Preparation
PLANNED- Parsing and type-system exercises
Explain your approach to Parsing and type-system exercises, defend key trade-offs, and discuss what you learned.
- Compiler pipeline design review
Explain your approach to Compiler pipeline design review, defend key trade-offs, and discuss what you learned.
- Developer-tooling project walkthrough
Explain your approach to Developer-tooling project walkthrough, defend key trade-offs, and discuss what you learned.
Discussion
0Have a better approach? Found something outdated? Share it — your knowledge helps everyone learning here.
