Compilers: Theory and Practice (Udacity)

Compilers: Theory and Practice (Udacity)

The objective of this course is to learn the theory and practice behind building automatic translators (compilers) for higher level programming languages and to engineer and build key phases of a compiler in Java or C++ for a small language.

Class Deals by MOOC List - Click here and see Udacity's Active Discounts, Deals, and Promo Codes.

Take this course if you need to develop the skills necessary to work on create compilers and similar tools for modern operating systems and devices.

What You Will Learn

Lesson 1
Front End

  • Compiler Phases
  • Scanners & Parsers
  • Semantic Analysis

Lesson 2
Middle End

  • Syntax Directed Translation
  • Control Structures and Back-patching
  • Function and Procedure Calls & Runtime Organization

Lesson 3
Back-end

  • Register Allocation & Instruction Selection
  • Code layout and Code Generation
  • Brief Introduction to Code Optimization

Prerequisites and Requirements
Good knowledge of data structures and algorithms, good programming skills and ability to write sizeable software in Java or C++. Should be able to work in Linux environment.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Software Analysis & Testing (Udacity) Udacity
Georgia Institute of Technology,Udacity

Software Analysis & Testing (Udacity)

This course covers the theory and practice of software analysis, which lies at the heart of many software development processes such as diagnosing bugs, testing, debugging, and more. It presents diverse techniques, each with their own strengths and limitations, for automating tasks such as testing, debugging, and finding bugs in complex real-world programs. These techniques include dataflow analysis, constraint-based analysis, type systems, model checking, symbolic execution, and more. The course teaches the principles underlying these techniques as well as imparts hands-on experience with using and implementing tools based on these techniques.

Self Paced
Self-Paced
Scalable Microservices with Kubernetes (Udacity) Udacity
Udacity,Google

Scalable Microservices with Kubernetes (Udacity)

Master infrastructure management. This course is designed to teach you about managing application containers, using Kubernetes. We've built this course in partnership with experts such as Kelsey Hightower and Carter Morgan from Google and Netflix’s former Cloud Architect, Adrian Cockcroft (current Technology Fellow at Battery Ventures), who provide critical learning throughout the course.

Self Paced
Self-Paced
Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera) Coursera
Hebrew University of Jerusalem

Build a Modern Computer from First Principles: Nand to Tetris Part II (project-centered course) (Coursera)

In this project-centered course you will build a modern software hierarchy, designed to enable the translation and execution of object-based, high-level languages on a bare-bone computer hardware platform. In particular, you will implement a virtual machine and a compiler for a simple, Java-like programming language, and you will develop a basic operating system that closes gaps between the high-level language and the underlying hardware platform.

Nov 9th 2026
5-12 Weeks
Compilers (edX) EdX
StanfordOnline

Compilers (edX)

This self-paced course will discuss the major ideas used today in the implementation of programming language compilers, including lexical analysis, parsing, syntax-directed translation, abstract syntax trees, types and type checking, intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems.

Self Paced
Self-Paced
Architecture, Algorithms, and Protocols of a Quantum Computer and Quantum Internet (edX) EdX
Delft University of Technology,DelftX

Architecture, Algorithms, and Protocols of a Quantum Computer and Quantum Internet (edX)

Learn the basics of quantum algorithms, quantum error-correction, micro-architectures, compilers, and programming languages for quantum processors, and protocols for the quantum internet. In this course we will demonstrate how a large-scale quantum processor could be built using these qubits. Among the topics that we will discuss are micro-architectures, compilers, and programming languages.

Self Paced
Self-Paced
Writing, Running, and Fixing Code in C (Coursera) Coursera
Duke University

Writing, Running, and Fixing Code in C (Coursera)

Building on the course Programming Fundamentals, this course will teach you how to write code by first planning what your program should do—an important approach for novice and professional programmers. You will learn how to compile and run your program, and then how to test and debug it. This course builds on the Seven Steps you have already learned and provides a framework for systematically testing for problems and fixing them, so you can find and fix problems efficiently.

Nov 16th 2026
4 Weeks
Swift for Developers (Udacity) Udacity
Udacity

Swift for Developers (Udacity)

Your Next Programming Language. This course offers a quick practical introduction to Swift basics, including types, variables, constants, and functions. It combines syntax exercises with hands-on iOS development in Xcode. By the end of the course students will build their first iOS app, an app that creates and displays song lyrics customized to user input.

Self Paced
Self-Paced
Refresh Your Resume (Udacity) Udacity
Udacity,Google

Refresh Your Resume (Udacity)

Stand out and land a technical interview. Your resume is the first step in the job search. Through this course, you will identify the companies you want to work for, and showcase your key achievements to align with their roles. With our proven industry framework, you will build a tech-focused resume that will help you get noticed and land the interview.

Self Paced
Self-Paced
Intro to JavaScript (Udacity) Udacity
Udacity

Intro to JavaScript (Udacity)

Learn the fundamentals of JavaScript, the most popular programming language in web development. JavaScript is the most popular programming language for both front-end and back-end web development. Applications for JavaScript span from interactive websites to the Internet of Things, making it a great choice for beginners and experienced developers looking to learn a new programming language.

Self Paced
Self-Paced
Firebase Analytics: Android (Udacity) Udacity
Udacity,Google

Firebase Analytics: Android (Udacity)

Improve your apps with better user data. In this course, you’ll learn how to grow an app's user base using Firebase Analytics, a free and unlimited analytics solution. You'll be able to learn who your users are and how they interact with your app. You can then use this information to make informed decisions to improve your app, such as how difficult to make a level in a game, where to place an advertisement, or what products to stock.

Self Paced
Self-Paced