/compiler-sdu.github.io

'Compilers: Principles and Techniques' (SDU, Spring 2022) course website

Course Description

Programming languages are notations for describing computations to people and to machines. The world as we know it depends on programming languages, because all the software running on all the computers was written in some programming language. But, before a program can be run, it first must be translated into a form in which it can be executed by a computer.

The software systems that do this translation are called compilers.

This course is about how to design and implement compilers. We shall discover that a few basic ideas can be used to construct translators for a wide variety of languages and machines. Besides compilers, the principles and techniques for compiler design are applicable to so many other domains that they are likely to be reused many times in the career of a computer scientist. The study of compiler writing touches upon programming languages, machine architecture, language theory, algorithms, and software engineering.

Teaching Staff

Instructor

Prof. Zhongxing Yu(余仲星)

Teaching Assistants

TA Responsibility
Yejian Liang(梁叶剑) 129(131)
Lantian Li(李蓝天) 137(139)
Yali Du(杜雅莉) 133(135)

Textbook and Resources

  • Textbook:

    • 《程序设计语言编译原理》(第3版)

      陈火旺 刘春林 等编著, 国防工业出版社 [PDF Download]

  • Recommended Reading Materials:

    • Compilers: Principles, Techniques, & Tools (Second Edition)

      Alfred V. Aho, Monica S. Lam, Ravi Sethi, & Jeffrey D. Ullman. Addison-Wesley

    • Modern Compiler Implementation in Java (Second Edition)

      Andrew Appel and Jens Palsberg. Cambridge University Press

  • Recommended Online Courses:

    • Compilers Stanford School of Engineering [Link]

Assignments and Lab

⚠️ WARNING: Plagiarism is definitely unacceptable in this course! All codes submitted will be examined through Stanford MOSS system. There will be severe consequences for those who have plagiarism detected!
📝 ATTENTION: Do make sure to read the lab requirements before programming since your code will be judged by an Auto-Grading System. Detailed information will be announced soon.

Labs

  • Old version of lab requirements [PDF Download]
  • Description of PL-0 Grammar
Lab Content Suggested Time Requirements Percentage
Lab 1 Lexical Analyzer 2 hours [PDF] 40%
Lab 2 Syntactic Parser 4 hours [PDF] 40%
Lab 3 PL0 Compiler 6 hours [PDF] 20%
  • 通过OJ的不需要人工验收,无法通过OJ的可以最终采取人工验收,但是会酌情扣分。实验得分与提交先后顺序无关,截止日期前完成即可。

Note-sharing Project

项目介绍:往届同学在学习过程中整理的笔记,供学弟学妹参考,欢迎补充和指正!

🎉🎉第一版笔记(初稿)下载 [PDF]