EdX

Compilers (edX)

Offered by 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.

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

As a result, you will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines. Along the way we will also touch on how programming languages are designed, programming language semantics, and why there are so many different kinds of programming languages.
The course lectures will be presented in short videos. To help you master the material, there will be in-lecture questions to answer, quizzes, and two exams: a midterm and a final. There will also be homework in the form of exercises that ask you to show a sequence of logical steps needed to derive a specific result, such as the sequence of steps a type checker would perform to type check a piece of code, or the sequence of steps a parser would perform to parse an input string. This checking technology is the result of ongoing research at Stanford into developing innovative tools for education, and we're excited to be the first course ever to make it available to students.
An optional course project is to write a complete compiler for COOL, the Classroom Object Oriented Language. COOL has the essential features of a realistic programming language, but is small and simple enough that it can be implemented in a few thousand lines of code. Students who choose to do the project can implement it in either C++ or Java.

What you'll learn
Everything that computers do is the result of some program, and all of the millions of programs in the world are written in one of the many thousands of programming languages that have been developed since the 1950’s. Designing and implementing a programming language turns out to be difficult; some of the best minds in computer science have thought about the problems involved and contributed beautiful and deep results. Learning something about compilers will show you the interplay of theory and practice in computer science, especially how powerful general ideas combined with engineering insight can lead to practical solutions to very hard problems. Knowing how a compiler works will also make you a better programmer and increase your ability to learn new programming languages quickly.

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

Related Courses

Introduction to Programming with MATLAB (Coursera) Coursera
Vanderbilt University

Introduction to Programming with MATLAB (Coursera)

This course teaches computer programming to those with little to no previous experience. It uses the programming system and language called MATLAB to do so because it is easy to learn, versatile and very useful for engineers and other professionals. MATLAB is a special-purpose language that is an excellent choice for writing moderate-size programs that solve problems involving the manipulation of numbers.

Jun 22nd 2026
5-12 Weeks
Introduction to Java as a Second Language (Coursera) Coursera
LearnQuest

Introduction to Java as a Second Language (Coursera)

This course is meant to be an introduction to Java as a second language, if you are familiar with any computer programming language. It could be shell scripting, knowledge of older Java versions, JavaScript, etc. This course will allow you to quickly pick up the Java programming language. You will learn Java Object Orientation, and see the parallels with other programming paradigms. This is course 1 of a 3 course Specialization titled Java as a Second Language. It assumes that you know some programming and want to transfer that knowledge into learning Java.

Jun 22nd 2026
2 Weeks
Online Course Development: Planning and Implementation (edX) EdX
The University of British Columbia,UBCx

Online Course Development: Planning and Implementation (edX)

Determine key considerations for preparing and developing an online course or program, from technology selection to change management. Successful online education requires substantial groundwork before instructors can get started on course design and delivery. Designed for educators, administrators and educational leaders required to make decisions about digital learning technologies and frameworks, this short course prepares you to confidently navigate this process and build the crucial foundations for rewarding remote learning experiences.

Self Paced
Self-Paced
Getting Started with Go (Coursera) Coursera
University of California, Irvine

Getting Started with Go (Coursera)

Learn the basics of Go, an open source programming language originally developed by a team at Google and enhanced by many contributors from the open source community. This course is designed for individuals with previous programming experience using such languages as C, Python, or Java, and covers the fundamental elements of Go.

Jun 22nd 2026
4 Weeks
Shell Programming - A necessity for all Programmers (edX) EdX
IIT Bombay,IITBombayX

Shell Programming - A necessity for all Programmers (edX)

Unleash your Linux scripting skills and amaze others with your productivity level. Various programming languages have gained popularity since 1970. Starting with Assembly, C, C++, and moving towards Java, Python, and finally building of backend and frontend frameworks, all of these became popular and were or getting replaced with some other language or framework. Shell programming (scripting) is the only programming language that has been popular and the choice of programmers, testers, system administrators, etc., from 1970 to date (21st century).

Self Paced
Self-Paced
Intermediate Object-Oriented Programming for Unity Games (Coursera) Coursera
University of Colorado System

Intermediate Object-Oriented Programming for Unity Games (Coursera)

This course is the third course in the specialization about learning how to develop video games using the C# programming language and the Unity game engine on Windows or Mac. Why use C# and Unity instead of some other language and game engine? Well, C# is a really good language for learning how to program and then programming professionally. Also, the Unity game engine is very popular with indie game developers; Unity games were downloaded 16,000,000,000 times in 2016! Finally, C# is one of the programming languages you can use in the Unity environment.

Jun 22nd 2026
4 Weeks
Mobile Application Experiences (edX) EdX
MIT,MITx

Mobile Application Experiences (edX)

Learn to create a novel mobile application in this MIT course - from research to design, usability, implementation and field evaluation. How do you design a mobile app that truly changes people's lives? How can you understand how a new service is being used, both quantitatively and qualitatively? How can you use all of the rich sensing and I/O capabilities of mobile devices to create experiences that go far beyond what's possible on a traditional computer?

No session available
5-12 Weeks
Introduction to Web Development with HTML5, CSS3, and JavaScript (edX) EdX
IBM

Introduction to Web Development with HTML5, CSS3, and JavaScript (edX)

Learn the key tools and programming languages to bootstrap your career as a Cloud Developer. Get started with web development using HTML5, CSS3, JavaScript and GitHub. Want to take the first steps to become a Cloud Application Developer? This self-paced online course will lead you through the programming languages and tools you will need to develop your own Cloud and Web Applications.

Self Paced
Self-Paced