Compilers

开始时间: 03/17/2014 持续时间: 11 weeks

所在平台: Coursera

课程类别: 计算机科学

大学或机构: Stanford University(斯坦福大学)

授课老师: Alex Aiken

   

课程主页: https://www.coursera.org/course/compilers

Explore 1600+ online courses from top universities. Join Coursera today to learn data science, programming, business strategy, and more.

课程评论: 2 个评论

评论课程        关注课程

课程详情

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.

课程评论(2条)

0

大吃一惊异 2014-06-06 10:48 0 票支持; 0 票反对

终于上完了。大学的时候compiler没有好好上,非常后悔,故来补坑。Aiken教授讲东西很清楚。每周的quiz基本上是不限制attempt次数,自己理解会做了就能拿满分。编程作业是比较传统的四个stage,lexing/parsing/type-checking/codegen。后面两个作业比较花时间,但是不难。编译器最有趣的优化部分也没有要求,实现个one register stack machine就可以通过最后一个作业了。他提供的codebase比较古老,给的是non-modern C++/Java。我因为想熟悉一下Java 8就执意用上了各种新功能(所以花了不少时间查文档,不做死就不会死啊)

0

123去网上 2013-05-16 21:09 0 票支持; 0 票反对

一门特别有用的课,学完之后会对程序语言有了更深的了解。这门课的要做的编译器是cool语言编译器,可以用c++或java写,cool语言相当于是一个很小型的java, 编程作业分4个,词汇分析,句法分析,类型检查,代码生成,难度逐次提高,每次做作业我觉得必须对这方面的概念都掌握才能做完,还有个额外作业推理的东西也挺好玩,平时的作业和考试量大耗时又长,但是做完又会加深理解。

Deep Learning Specialization on Coursera

课程简介

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!

课程标签

编译 编译器 编译原理 龙书 斯坦福大学

68人关注该课程

主题相关的课程

An Introduction to Interactive Programming in Python 关注

Computer Networks 关注

High Performance Scientific Computing 关注

Computer Architecture 关注

Introduction to Systematic Program Design - Part 1 关注

C++ For C Programmers 关注

Programming Languages 关注

Creative, Serious and Playful Science of Android Apps 关注

Learn to Program: Crafting Quality Code 关注

Computer Security 关注