CS-320 / 6 credits

Teacher: Kuncak Viktor

Language: English


Summary

We teach the fundamental aspects of provably correct analysis and interpretation of computer languages, including the techniques to build compilers and to demonstrate correctness of key compiler phases. The course may require presence in many weeks due to in-class examinations.

Content

For more accurate description see course web page. Non-exhaustive sample of topics, some of which may be covered:

1. Overview, source languages and run-time models

2. Review of formal languages

3. Lexical analysis

4. Syntactic analysis (parsing)

5. Name analysis

6. Type checking

7. Code generation

8. Correctness of compilers

 

Keywords

programming language; compiler; interpreter; regular expression; context-free grammar;
type system; code generation; static code analysis

 

Learning Prerequisites

Recommended courses

MATH-260(a) Discrete Mathematics

CS-251 Theory of Computation

CS-214 Software Construction

CS-200 Computer Architecture

 

Learning Outcomes

By the end of the course, the student must be able to:

  • Design a programming language
  • Construct a compiler
  • Coordinate development with project partner
  • Formulate correctness conditions for compiler
  • Estimate time to implement a programming language feature
  • Produce a working programming language implementation
  • Decide which language features make implementation difficult
  • Specify programming language and compiler functionality
  • Design a programming language
  • Construct a compiler
  • Coordinate development with project partner
  • Formulate correctness conditions for compiler
  • Estimate time to implement a programming language feature
  • Produce a working programming language implementation
  • Decide which language features make implementation difficult
  • Specify programming language and compiler functionality

Transversal skills

  • Assess progress against the plan, and adapt the plan as appropriate.
  • Evaluate one's own performance in the team, receive and respond appropriately to feedback.
  • Respect the rules of the institution in which you are working.
  • Continue to work through difficulties or initial failure to find optimal solutions.
  • Demonstrate a capacity for creativity.
  • Take feedback (critique) and respond in an appropriate manner.
  • Make an oral presentation.
  • Write a scientific or technical report.

Teaching methods

Lectures, exercises, labs

Expected student activities

Follow lectures, exercises, labs, and take exams during the semester

Assessment methods

During the semester.

Supervision

Office hours Yes
Assistant.e.s Yes
Forum Yes

Resources

Bibliography

See https://gitlab.epfl.ch/lara/cs320/-/blob/main/info/books.md

including

Andrew W. Appel, Modern compiler implementation in Java (or ML), Addison-Wesley 1997 (full PDF available from EPFL library)

Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman: Compilers: Principles, Techniques, and Tools (2nd Edition, 2006)

 

Ressources en bibliothèque

Notes/Handbook

See slides on the course web page

Websites

Videos

Prerequisite for

Advanced compiler construction

Recommended for Foundations of software

In the programs

  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Computer language processing
  • Courses: 2 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Project: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Computer language processing
  • Courses: 2 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Project: 2 Hour(s) per week x 14 weeks
  • Type: optional
  • Semester: Spring
  • Exam form: During the semester (summer session)
  • Subject examined: Computer language processing
  • Courses: 2 Hour(s) per week x 14 weeks
  • Exercises: 2 Hour(s) per week x 14 weeks
  • Project: 2 Hour(s) per week x 14 weeks
  • Type: optional

Reference week

Related courses

Results from graphsearch.epfl.ch.