Logo EPFL
LAMP
Ecole Polytechnique Fédérale de Lausanne
Compilation 2004/2005
French only
Cours: mercredi 10:15-12:00, salle INM 202
Exercices: vendredi 13:15-15:00, salle INF 3

Les notes de l'examen écrit de compilation, avec détails des notes pour chaque exercice, et les notes finales pour le cours (celles transmises au service académique), sont affichées sur le tableau blanc situé à côté du bureau du professeur Odersky (INR 319). Pour reconnaître vos notes, il vous faut connaître votre numéro CAMIPRO.

La note finale est calculée en appliquant la formule suivante et en arrondissant au demi-point le plus proche.

     1 + 5 * (N1 / M1 * P1 + ... + N7 / M7 * P7) / 87
    
Dans cette formule Ni est le nombre de points obtenu à l'examen i, Mi le nombre de points total de l'examen i et Pi la pondération associée à l'examen i :
  • Examen 1 = Exercice. M1 = 45, P1 = 5.
  • Examen 2 = Projet Scanner. M2 = 10, P2 = 5.
  • Examen 3 = Projet Parser. M3 = 10, P3 = 7.
  • Examen 4 = Projet Tree. M4 = 10, P4 = 8.
  • Examen 5 = Projet Analyzer. M5 = 10, P5 = 10.
  • Examen 6 = Projet Generator. M6 = 10, P6 = 15.
  • Examen 7 = Examen écrit. M7 = 70, P7 = 45.

Ce cours est un cours de construction de compilateurs. Il aborde les aspects fondamentaux de l'analyse des langages de programmation et de leur traduction en une forme exécutable. À la fin du cours, l'étudiant devrait :

  • pouvoir définir la syntaxe formelle d'un langage de programmation,
  • pouvoir définir la sémantique d'un langage avec un interpréteur,
  • connaître les structures internes et l'architecture des compilateurs,
  • être capable d'écrire un compilateur qui traduit un langage simple en un code exécutable,
  • connaître les structures et les motifs de constructions (design patterns) utilisées dans la construction d'un compilateur,
  • connaître la représentation en mémoire à l'exécution des principales constructions d'un langage de programmation.

Quelques buts moins tangibles mais tout aussi importants sont :

  • Améliorer la compréhension des langages de programmation,
  • comprendre les compromis entre pouvoir d'expression, simplicité, et performance d'un langage de programmation,
  • participer à la conception et à la réalisation d'un logiciel où la théorie est essentielle pour la réussite.

Bibliographie

Partie 1 (20 octobre):
Partie 2 (22 et 27 octobre):
Partie 3 (3 et 10 novembre):
Partie 4 (17 et 24 novembre):
Partie 5 (1er décembre):
Partie 6 (8 et 15 décembre):
Partie 7 (22 décembre):
Partie 8 (12 janvier):
Partie 9 (19 janvier):
Partie 10 (2 février):
Partie 11 (2 février):

Les exercices sont notés et rentre en compte dans l'évaluation de l'étudiant pour ce cours. Contrairement au projet, chaque étudiant doit rendre une copie individuelle et personnalisée.

Série 1 (22 octobre):
Nouvelle version de l'énoncé en (pdf) ou (ps). A rendre jusqu'au 5 novembre 2004.
  Projet
Rendu de la dernière partie du projet

Comme vous le savez déjà, la dernière séance de projet de ce vendredi est remplacée par un examen écrit. Pour que nous puissions malgré tout évaluer la dernière partie du projet, vous devez nous faire parvenir votre compilateur par courrier électronique. Officiellement vous devez l'envoyer avant vendredi 4 février à minuit. Etant donné que nous ne travaillons pas le week-end, faites seulement en sorte qu'il soit là lundi 7 février à 8 h 00 du matin.

Voici la procédure à suivre pour nous envoyer votre compilateur:

  1. Faites en sorte que votre compilateur compile avec le Makefile que l'on vous donnait (ceci ne s'adresse qu'aux groupes ayant utilisé jusqu'ici une technique différente pour compiler leur compilateur). Vérifiez que vous arrivez à exécuter votre compilateur.
  2. Vérifiez que vous avec bien indiqué le numéro de votre groupe dans ce Makefile, à la ligne GROUP_NUMBER.
  3. Envoyez une archive de votre compilateur par courrier électronique en tapant simplement: gmake submit

Voilà, c'est tout. Nous ne vous demandons pas d'expliquer votre code dans un rapport.

Survol

Le but de ce projet est d'écrire un petit compilateur pour le langage de programmation eins. Les documents suivants fournissent les détails concernant eins :

Etapes Mesures contre la copie

La note de ce cours est en partie déterminée par un projet que vous aller réaliser par groupes de 2 ou 3 étudiants. Il est parfaitement autorisé (et même recommandé) que les membres d'un groupe échangent leur code ou lisent le code des autres. Par contre, il est strictement interdit de copier du code d'autres groupes ou de projets des années précédentes (qui sont de toute façon différents du projet de cette année).

Cette année, tous les étudiants devront soumettre leur projet par voie électronique. Nous testerons chaque programme avec un logiciel de détection de copies. Si nous détectons deux soumissions très semblables, nous interrogerons les groupes concernés. Si nous parvenons à déterminer qui a copié sur qui, le groupe qui a copié, recevra 0 points pour cette partie de l'exercice. Si nous ne parvenons pas à déterminer qui a copié sur qui, alors tous les groupes concernés recevront 0 points. Pour cette raison, il est très important que vous protégiez le code que vous écrivez.

Pour terminer, un groupe qui copie à plusieurs reprises échouera l'ensemble du projet.

Le cours est géré par Sygeco2. Sygeco2 est un service web qui vous permet de vous inscrire au cours, de former des groupes pour le projet et de consulter vos notes durant le semestre.

Sygeco2 utilise votre numéro et votre mot de passe Camipro pour vous authentifier. L'accès à Sygeco2 est restreint à l'EPFL. Si vous voulez y accéder depuis l'extérieur, vous devez utiliser un VPN.

Si vous avez besoin d'aide pour Sygeco2, n'hésitez pas à contacter un des assistants. Il y a aussi un manuel qui n'est plus très à jour (certaines parties ne s'appliquent plus à la version courante).

Le cours a maintenant son forum de discussion : epfl.ic.cours.compilation.

N'hésitez pas à y exprimer vos interrogations, vos problèmes. D'autres étudiants pourront peut-être vous aider et les assistants s'engagent à traiter régulièrement les nouveaux messages. C'est aussi par ce biais que nous vous communiquerons des annonces générales concernant le cours.

Le plus simple pour accéder au forum est de le faire :

Enfin, si vous avez des questions générales concernant l'utilisation des forums de discussion à l'EPFL vous trouverez tout sur le site : Usenet News

Professeur

Assistants

Assistants étudiants