CS-320 / 6 crédits

Enseignant: Kuncak Viktor

Langue: Anglais


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

Dans les plans d'études

  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Computer language processing
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Exercices: 2 Heure(s) hebdo x 14 semaines
  • Projet: 2 Heure(s) hebdo x 14 semaines
  • Type: optionnel
  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Computer language processing
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Exercices: 2 Heure(s) hebdo x 14 semaines
  • Projet: 2 Heure(s) hebdo x 14 semaines
  • Type: optionnel
  • Semestre: Printemps
  • Forme de l'examen: Pendant le semestre (session d'été)
  • Matière examinée: Computer language processing
  • Cours: 2 Heure(s) hebdo x 14 semaines
  • Exercices: 2 Heure(s) hebdo x 14 semaines
  • Projet: 2 Heure(s) hebdo x 14 semaines
  • Type: optionnel

Semaine de référence

Cours connexes

Résultats de graphsearch.epfl.ch.