Coursebooks

Computer language processing

CS-320

Lecturer(s) :

Kuncak Viktor

Language:

English

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

See https://lara.epfl.ch/w/cc

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

Discrete Mathematics

Theory of computation

Functional Programming

Computer architecture

Learning Outcomes

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

Transversal skills

Teaching methods

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

In the programs

    • Semester
       Fall
    • Exam form
       During the semester
    • Credits
      6
    • Subject examined
      Computer language processing
    • Lecture
      2 Hour(s) per week x 14 weeks
    • Exercises
      2 Hour(s) per week x 14 weeks
    • Practical work
      2 Hour(s) per week x 14 weeks
    • Semester
       Fall
    • Exam form
       During the semester
    • Credits
      6
    • Subject examined
      Computer language processing
    • Lecture
      2 Hour(s) per week x 14 weeks
    • Exercises
      2 Hour(s) per week x 14 weeks
    • Practical work
      2 Hour(s) per week x 14 weeks

Reference week

 MoTuWeThFr
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     
 
      Lecture
      Exercise, TP
      Project, other

legend

  • Autumn semester
  • Winter sessions
  • Spring semester
  • Summer sessions
  • Lecture in French
  • Lecture in English
  • Lecture in German