CS-320 / 6 crédits

Enseignant: Kuncak Viktor

Langue: Anglais


Summary

We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language into the new web standard for portable binaries called WebAssembly ( https://webassembly.org/ )

Content

Keywords

programming language;

compiler;

interpreter;

regular expression;

context-free grammar;

type system;

code generation;

static code analysis

Learning Prerequisites

Recommended courses

Discrete Mathematics

Theory of computation

Functional Programming

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

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

  • Follow lectures
  • Project work, indepdently and under supervision of assistants

Assessment methods

The grade is based on the programming, testing, documentation, and presentation of projects done on student's own laptops during the semester.

Different groups of students may be assigned different variants of projects. There may be small but unavoidable variations in the difficulty of different variants.

Supervision

Office hours Yes
Assistants Yes
Forum Yes

Resources

Bibliography

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)

Niklaus Wirth: Compiler Construction, neat textbook from a prominent classical authority. Freely available  http://www.ethoberon.ethz.ch/WirthPubl/CBEAll.pdf

Ressources en bibliothèque

Notes/Handbook

http://lara.epfl.ch/w/cc

Faboulous and gently paced videos: https://www.coursera.org/course/compilers

Websites

Prerequisite for

Advanced compiler construction

Recommended for Foundations of software

Dans les plans d'études

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

Semaine de référence

 LuMaMeJeVe
8-9  INM202INF119 
9-10   
10-11     
11-12     
12-13     
13-14CE1100    
14-15    
15-16     
16-17     
17-18     
18-19     
19-20     
20-21     
21-22     

Mercredi, 8h - 10h: Exercice, TP INM202

Jeudi, 8h - 10h: Exercice, TP INF119

Lundi, 13h - 15h: Cours CE1100