Compilers

Provided by:
9/10 stars
based on  15 reviews
Provided by:
Cost FREE
Start Date TBA

Course Details

Cost

FREE

Upcoming Schedule

  • TBA

Course Provider

Coursera online courses
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with yo...
Coursera's online classes are designed to help students achieve mastery over course material. Some of the best professors in the world - like neurobiology professor and author Peggy Mason from the University of Chicago, and computer science professor and Folding@Home director Vijay Pande - will supplement your knowledge through video lectures. They will also provide challenging assessments, interactive exercises during each lesson, and the opportunity to use a mobile app to keep up with your coursework. Coursera also partners with the US State Department to create “learning hubs” around the world. Students can get internet access, take courses, and participate in weekly in-person study groups to make learning even more collaborative. Begin your journey into the mysteries of the human brain by taking courses in neuroscience. Learn how to navigate the data infrastructures that multinational corporations use when you discover the world of data analysis. Follow one of Coursera’s “Skill Tracks”. Or try any one of its more than 560 available courses to help you achieve your academic and professional goals.

Provider Subject Specialization
Humanities
Sciences & Technology
4679 reviews

Course Description

This course will discuss the major ideas used today in the implementation of programming language compilers. 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!
Reviews 9/10 stars
15 Reviews for Compilers

Ratings details

  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.

Sort By
Gavin Conran profile image
Gavin Conran profile image
10/10 starsCompleted
  • 25 reviews
  • 25 completed
6 years, 4 months ago
Probably the most innovative and one of the most demanding of MOOCs. With 4 ways to test your learning - quizzes, exams, programming assignments and online logic exercises - there was no hiding place for those not fully committed. Although the mid-term and final exams were difficult, they were an effective way to reinforce learning. In turn, the knowledge I gained from Alex during the class helped me learn other languages such as Python, Ruby and Scala. At the time, I wish I had been a better Java programmer as I found the assignments demanding.
Was this review helpful? Yes5
 Flag
Student profile image
Student profile image

Student

10/10 starsTaking Now
3 years, 7 months ago
1. The content of the course is outstanding. There is a lot of useful information in one place here. 2. The assignments are useful. 3. Unfortunately, the organization of information in the assignment documents is frustrating and incoherent. It requires a lot of brain power just to figure out what they are saying. The first assignment, for example, is not terribly difficult, but the objective in the assignment is unclear which leaves a student fumbling around trying to figure out what needs to be done to complete the assignment. I left 3 starts for the instructor for not tightening up the assignments materials. Each assignment should be concise, have a clear goal, and provide a clear plan for accomplishing that goal. I believe that's what makes the difference between a good instructor and a great instructor. I also find the connection between the lectures and the assignments to be a bit too loose.
Was this review helpful? Yes0
 Flag
Daniel Savard profile image
Daniel Savard profile image
5/10 starsDropped
  • 1 review
  • 0 completed
4 years, 7 months ago
I expected to learn how to write a compiler, how to use the lexical analyzer, the parser and which algorithms are needed to produce executable code. I was taking this class because I did want to learn about parsing a language and integrates it into my programs. So, producing executable code was not really my goal. Parsing the language was what I was really seeking for. I did abandon this course before reaching my goal. I found the course frustrating. It requires much more time than expected and not enough examples and practical problems were give to make sure you master the concepts required. And partly, the choice to force you to learn a toy language and make a compiler for it was the problem. It is like teaching a language and assuming you are mastering it at the same time. It introduces unecessary complications. This course should be split in two, one part focusing on basic concepts without the COOL language and the goal to w... I expected to learn how to write a compiler, how to use the lexical analyzer, the parser and which algorithms are needed to produce executable code. I was taking this class because I did want to learn about parsing a language and integrates it into my programs. So, producing executable code was not really my goal. Parsing the language was what I was really seeking for. I did abandon this course before reaching my goal. I found the course frustrating. It requires much more time than expected and not enough examples and practical problems were give to make sure you master the concepts required. And partly, the choice to force you to learn a toy language and make a compiler for it was the problem. It is like teaching a language and assuming you are mastering it at the same time. It introduces unecessary complications. This course should be split in two, one part focusing on basic concepts without the COOL language and the goal to write a compiler for it. Then the second part, taught as a second course could have for sole goal to teach you the COOL language and guide you in writing a compiler for it. I found also the fora was not that helpful because that is a lot of extra readings you have to do beside everything else: flex, bison documentation, course documentation, COOL documentation, etc. Too much stuff at the same time. I am still seeking for a good course teaching this material, or at least language parsing. I haven't find anything yet.
Was this review helpful? Yes1
 Flag
Equanimous Creativity profile image
Equanimous Creativity profile image
6/10 starsCompleted
  • 33 reviews
  • 32 completed
4 years, 10 months ago
Do you want to know how a compiler works? or do you want to make your own general purpose programming language ? If the answer is yes to the first question and no to the second question then this course is for you. While it gives fundamental of implementing a compiler it feels like the course don't teach you what you need to make  a compiler for a modern programming language. It feels like we are only taught enough to implement the COOL language and the COOL language itself feels a little dated. Also the deadlines for midterm and final exam collide with deadlines for the programming assignments, making following the line with the programming assignments almost impossible for people which is not full-time students. Be aware that have around an equal amount of time to each programming assignments but the workload is more like 1 :1:3 :5. Get started early on the last 2.
Was this review helpful? Yes1
 Flag
Emanuel Evans profile image
Emanuel Evans profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
4 years, 11 months ago
The course covered a huge amount of information--highly recommended. The programming assignments were fun and challenging, although there were some unnecessary difficulties working with the support code (I did the assignments in C++, but I'd definitely recommend using Java instead unless you're quite comfortable in C++).
Was this review helpful? Yes0
 Flag
Robin Sinclair profile image
Robin Sinclair profile image
10/10 starsCompleted
  • 4 reviews
  • 4 completed
5 years, 4 months ago
Contents: This course is a fairly conventional academic compiler course. It covers the lexical analysis, semantics analysis, optimization and code generation ( mainly for MIPS processors ). It covers in detail a number of serious theoretical concepts like finite state automata ( used in lexical analysis ) and parsing of contexts free grammars ( used in semantic analysis ). Some of these topics are quite difficult. Presentation: The lecturer is very competent and things are explained clearly without being dumbed down. Resources: They provide a virtual image of a Linux systems with all the required software ( Bison and Flex, plus a MIPS simulator ) installed. The systems is about 750 MB so you will need a good internet link to fetch it. Coursework: The coursework is option and involves writing as compiler for a minimal object oriented language ( Cool ). It take a lot of time ( for the later tasks about 20 to 30 hours each ) but if you ... Contents: This course is a fairly conventional academic compiler course. It covers the lexical analysis, semantics analysis, optimization and code generation ( mainly for MIPS processors ). It covers in detail a number of serious theoretical concepts like finite state automata ( used in lexical analysis ) and parsing of contexts free grammars ( used in semantic analysis ). Some of these topics are quite difficult. Presentation: The lecturer is very competent and things are explained clearly without being dumbed down. Resources: They provide a virtual image of a Linux systems with all the required software ( Bison and Flex, plus a MIPS simulator ) installed. The systems is about 750 MB so you will need a good internet link to fetch it. Coursework: The coursework is option and involves writing as compiler for a minimal object oriented language ( Cool ). It take a lot of time ( for the later tasks about 20 to 30 hours each ) but if you have the time it is very rewarding. There is a choice of C++ and Java frameworks. All coursework is machine marked. Summary: This is a serious academic course for skilled programmers. If your are interested in compilers this course is definitely worth doing.
Was this review helpful? Yes2
 Flag
Maciej Pilichowski profile image
Maciej Pilichowski profile image
10/10 starsCompleted
  • 9 reviews
  • 9 completed
5 years, 5 months ago
The course that changed my life like no other course. Interesting, solid, informative with plenty of quizzes and homeworks. Pity it has also exams -- I don't like them (in general). If you are interested in this topic this course is must-take.
Was this review helpful? Yes1
 Flag
username profile image
username profile image
5/10 starsDropped
  • 3 reviews
  • 0 completed
5 years, 4 months ago
The choice of the COOL language ruined it for me. The language feels obsolete. If the reason you'd like to learn to write compilers is to make yet another Java compiler, this course is for you. Otherwise, I'd look for some other one.
Was this review helpful? Yes0
 Flag
John profile image
John profile image
8/10 starsCompleted
  • 1 review
  • 1 completed
5 years, 6 months ago
Great course! Really enjoyed the course. My teacher taught us some basics in compilers, but this really went in depth. Look forward to using my new found knowledge.
Was this review helpful? Yes0
 Flag
ayush profile image
ayush profile image
10/10 starsCompleted
  • 2 reviews
  • 2 completed
5 years, 7 months ago
Best MOOC Course i have ever taken. Among great ones i have taken like Machine learning, Automata theory, Artificial intelligence, Programming Languages , this one was the best in my view. Everything in this course for me was perfect. I liked the idea of development of a COOL compiler as a course project . Prof.Alex was awesome.
Was this review helpful? Yes1
 Flag
Anna Nachesa profile image
Anna Nachesa profile image
10/10 starsCompleted
  • 13 reviews
  • 13 completed
5 years, 11 months ago
Great course and a must for a professional coder. It helps to understand how the programming languages work by taking you through all stages of writing a compiler, from the code parsing and lexical analysis to the generation of the machine code, and exposing you to the theory behind these stages. The only regret I have is that I couldn't spend more time on this course due to circumstances, and the very last assignment was quite time consuming. I did earn enough credit for completion, but I would still redo this course if time allows. One of the most technically challenging, yet very rewarding experiences!
Was this review helpful? Yes2
 Flag
Daniel Danciu profile image
Daniel Danciu profile image
10/10 starsCompleted
  • 3 reviews
  • 3 completed
5 years, 11 months ago
Beautifully presented material, rigorous yet not pedantic. Takes the learner from nothing to building a fully functional compiler for a Scala-like language.
Was this review helpful? Yes0
 Flag
Sai profile image
Sai profile image
8/10 starsCompleted
  • 14 reviews
  • 13 completed
6 years, 3 months ago
This course eventually let you complete a compiler for a language somewhat like Scala. Its target architecture is a simple stack machine but some advanced topics such as register allocation and code optimization were also briefly covered in the lecture. You can choose to not work on the programming assignments but I think you get the most out of this course by doing them. They are either in C++ or in Java and you are supposed to use Amazon's EC2 (sufficient machine hours were offered by Amazon) or download a virtual machine image and work on your local machine. Either way, you need to have some minimum experience of using Linux. What I liked most was that the programming assignments provided a lot of test cases and gave me instant feedback as to what went wrong. What I did not like was also about the programming assignments: The skeleton code seemed pretty old-fashioned and hard to read. I worked with the C++ code but it was from a p... This course eventually let you complete a compiler for a language somewhat like Scala. Its target architecture is a simple stack machine but some advanced topics such as register allocation and code optimization were also briefly covered in the lecture. You can choose to not work on the programming assignments but I think you get the most out of this course by doing them. They are either in C++ or in Java and you are supposed to use Amazon's EC2 (sufficient machine hours were offered by Amazon) or download a virtual machine image and work on your local machine. Either way, you need to have some minimum experience of using Linux. What I liked most was that the programming assignments provided a lot of test cases and gave me instant feedback as to what went wrong. What I did not like was also about the programming assignments: The skeleton code seemed pretty old-fashioned and hard to read. I worked with the C++ code but it was from a pre-STL era with hand-written list data structure, not using "const" anywhere, etc. From the discussions in the forum, Java skeleton code seems more or less the same. Other than that, I am pretty satisfied with the course.
Was this review helpful? Yes1
 Flag
Vitor Carreira profile image
Vitor Carreira profile image
10/10 starsCompleted
  • 1 review
  • 1 completed
6 years, 4 months ago
Great course. So far the best course at Coursera. Professor Aiken is a great teacher. The presentations are very clear and ideology-free. Programming assignments are hard but no pain no gain. For me it was the best part of the course. I wrote a compiler from scratch :)
Was this review helpful? Yes1
 Flag
Chris Simmons profile image
Chris Simmons profile image
8/10 starsCompleted
  • 7 reviews
  • 7 completed
6 years, 6 months ago
Compilers was one of the courses offered at my university that I never had a chance to do during my degree, so I was pleased to see it offered on Coursera. I found this course challenging, although I didn't have any Java experience (which was technically a prerequisite) and being a new father put some constraint on the amount of time I could spend on the homework. I did manage to complete the programming assignment, which was by far the most challenging Coursera programming challenge that I've seen. Since I took this course, I started learning Scala via Coursera, and I find myself analyzing the syntax and semantics in a whole new way thanks to what I've learned.
Was this review helpful? Yes1
 Flag

Rating Details


  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars
  • 5 stars
  • 4 stars
  • 3 stars
  • 2 stars
  • 1 stars

Rankings are based on a provider's overall CourseTalk score, which takes into account both average rating and number of ratings. Stars round to the nearest half.