Get started with custom lists to organize and share courses.

Sign up

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

  • Provider Coursera
  • Cost Free Online Course (Audit)
  • Language English
  • Certificate Certificate Available
  • Effort 8-10 hours a week
  • Start Date
  • Duration 11 weeks long
  • Learn more about MOOCs

Taken this course? Share your experience with other students. Write review

Overview

Sign up to Coursera courses for free Learn how

This 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. 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.
I hope you enjoy the course!

Why Study Compilers?

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 over the last 60 years. 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.

Taught by

Alex Aiken

Tags

Help Center

Most commonly asked questions about Coursera Coursera

Reviews for Coursera's Compilers
4.8 Based on 8 reviews

  • 5 stars 75%
  • 4 stars 25%
  • 3 star 0%
  • 2 star 0%
  • 1 star 0%

Did you take this course? Share your experience with other students.

Write a review
  • 1
Steven F
5.0 6 months ago
Steven completed this course, spending 15 hours a week on it and found the course difficulty to be very hard.
Stanford's "CS1 Compilers" is less a course than a way of life -- thank goodness it's self-paced! The experience is like being asked to translate a novel into a sequence of foreign languages you're learning for the first time. The amount of work is prodigious. But this course deserves its reputation as the best there is on the subject.

The instructor, Alex Aiken, is fantastic. His articulate, conversational style is easy to follow and he assumes a minimal CS background, just C and exposure to assembly language. The course material is broadly organized around four key components o…
Was this review helpful to you? Yes
Kartik K
5.0 5 years ago
Kartik completed this course.
The course discusses 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. It teaches 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. It also discusses how programming languages are designed, programming language semantics, and why there are so many different kinds of programming languages.
3 people found
this review helpful
Was this review helpful to you? Yes
Anonymous
5.0 6 years ago
Anonymous completed this course.
Excellent course, not for beginners though. Assignments are a lot of work but in the end you get a pretty good understanding of the whole compilation process, assembly, and executables. Prof. Aiken's teaching is outstanding. Thank you!
4 people found
this review helpful
Was this review helpful to you? Yes
Rey C
4.0 4 years ago
by Rey completed this course.
0 person found
this review helpful
Was this review helpful to you? Yes
Hadrien Z
5.0 4 years ago
by Hadrien is taking this course right now.
0 person found
this review helpful
Was this review helpful to you? Yes
Christopher P
5.0 3 years ago
by Christopher completed this course.
Was this review helpful to you? Yes
Juliano I
5.0 3 years ago
by Juliano completed this course.
Was this review helpful to you? Yes
Colin K
4.0 3 years ago
by Colin completed this course.
0 person found
this review helpful
Was this review helpful to you? Yes
  • 1

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free

Never stop learning Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.