Informatique et recherche
opérationnelle
IFT2030

Concepts des langages de programmation

Automne 2002


Accueil

Professeur et
Démonstrateurs

Horaires et locaux

Notes de cours

Démonstrations
et devoirs

Examens

Liens utiles

Au sujet du
livre de cours

Consultez vos notes

Foire aux questions
(FAQ)

Accueil

Bienvenue sur le site web du cours IFT2030 - Concepts des langages de programmation.

Consultez la description officielle du cours.
Consultez le plan de cours.

Aux nouvelles...


  • [lundi 23 septembre 2002] L'ensemble de vos notes sera disponible sous peu depuis la page du cours. La moyenne de l'examen final était de 54. Le seuil théorique a été baissé à 45% (vous êtes 71 à passer ce seuil), les personnes ayant une note théorique d'au moins 40% ont été également repêchées avec la note de D (vous êtes donc 77 à passer ce cours: félicitations).

    Je vous souhaite cette fois-ci de manière définitive de bonnes vacances. Vous pourrez venir voir vos notes d'examens et de TP3 à la rentrée.

    Je vous donne la distribution des notes lettrées: A+ 7, A 8, A- 9, B+ 8, B 11, B- 4, C+ 9, C 6, C- 6, D+ 1, D 8


  • [mercredi 11 décembre 2002]

    Vos notes de devoir 2 sont maintenant disponibles sur la page du cours. Pour toute information contactez les démontrateurs qui vous ont corrigé:

    Pour information, Yassir donne une permamence pour accueillir les binômes qu'il a corrigé jeudi 12 décembre à 17h en salle 2267.
    Inutile de venir me voir pour un problème relié au TP2. merci.
    Note: vos notes sont actuellement sur 16, elles seront (comme convenu) maximisée à 15 pour le calcul de la note lettrée.


  • [mardi 10 décembre 2002]

    Je vous souhaite de bonnes vacances. Attendez-vous à ce que vos notes de final (et de TP3) soient disponibles avant Noël, en vous souhaitant que ce soit pour vous un cadeau.
    À toutes fins utiles, j'ai déposé un solutionnaire du final sur la page (section Examens).


  • [mercredi 4 décembre 2002]

    INFO TP3 (last): Vous êtes nombreux à me poser des questions sur le TP3 dont la réponse est clairement décrite dans le sujet. Je vous invite à lire le sujet complètement et de suivre les consignes qui sont claires (en cas ce doute, mais seulement après lecture complète du sujet, passez me voir). Comme il y a plusieurs remises du TP2 qui ne suivent pas du tout les consignes, je souligne quelques points qui reviennent souvent dans vos questions du TP3, mais encore une fois, les consignes complètes sont dans le sujet.

    • Vous ne devez en aucune façon modifier les fichiers transfert.pl,lexique.pl: vous ne devez remettre que tp3.pl.
      Entre-nous, il est inutile de "hard-coder" les solutions possibles car rien ne vous indique que je ne changerai pas de lexique lors des tests !
    • Je considerais que ca faisait parti de votre travail de trouver dans la documentation comment lire des modules,
      mais je vous donne une solution dans le fichier [test.pl] que je vais (et compléter) et utiliser pour tester votre programme.
    • C'est mon fichier test.pl que je vais lancer, pas le votre, d'ailleurs, on ne vous demande pas de remettre un tel fichier,
      ni même (ce qui est pire, car ça oblige le correcteur à intervenir dans votre code, (lisez pénalité)) de copier dans votre programme tp3.pl le contenu de test.
    • Les prédicats qui vous sont demandés sont décrits précisément dans l'énoncé. Ne pas suivre cette description revient à proposer une solution à un problème non demandé.
      En particulier, si vous envisagez d'écrire le prédicat traduit avec quelque chose comme ce qui suit, vous ne répondez pas aux consignes (si vous ne voyez pas pourquoi, lisez le sujet):
      elt_de(X,[X|_]).
      elt_de(X,[Y|S]) :- elt_de(X,S).
      
      traduit([],[]).
      traduit([First|Suite1],[X|Suite2]) :- 
        seTraduit(First,TraductionsPossibles),
        elt_de(X,Liste),
        traduit(Suite1,Suite2).
      
      but: traduit([le,chien,mange],X).
      
    • Ceux qui ont déjà codé le TP ont dû remarqué que le fichier [transfert.pl] contenait une erreur, elle est maintenant corrigée (une virgule en trop).
    • J'ai simplifié les règles sur les compléments d'objets (règle R9) (comme plusieurs l'on remarqué, le genre et le nombre n'a pas d'importance), ceci n'affecte pas votre code.
    • Ne vous étonnez pas que la grammaire que je vous ai donnée accepte des phrases non grammaticales (une grammaire très partielle du français contient plusieurs milliers de règles et de très gros lexiques).
    • Je vous confirme que la solution tient en une trentaine de règles (ceci dépend de la structure que vous utilisez pour coder l'analyse). La notion que ce TP vous fait travailler est celle qui est fondamentale en Prolog: l'unification. Paraphrase: laisser votre binôme faire votre TP3 revient à être noté sur 75 au final. Avoir demandé à votre binome de faire pour vous votre TP2 revient à être noté au final sur 55; avoir demandé à votre binôme de faire le TP1 revient en gros à être noté au final sur 40.

  • [mardi 3 décembre 2002]

    Prenez note qu'il n'y aura pas cours lundi 9, et que mardi 10 a lieu l'examen final (lieu et horaires en section horaire). À propos de l'examen: il porte sur tout ce que nous avons vu en cours depuis le début. Il y aura des questions de cours et des questions de programmation dans les langages que vous êtes supposé maîtriser. Aucune documentation n'est autorisée, vous pouvez cependant venir avec votre dictionnaire (bilingue) préféré.

    Dernière permanence pour consultation de vos copies d'intra: vendredi 6 décembre de 11h00 à 13h00. Prenez note qu'habituellement, une et une seule permanence (normalement de deux heures) est donnée pour consultation de vos copies.

    Les démonstrateurs et moi-même sommes disponibles pour répondre à vos questions sur le cours et le TP3.


  • [lundi 2 décembre 2002]

    info TP3: j'ai modifié le nom de la règle transfert par seTraduit dans le fichier transfert.pl car je vous demande dans le sujet d'écrire un prédicat portant le nom transfert. Désolé pour ceux qui ont traité la question 2 du TP (vous avez du être confronté au problème), et là encore les modifications sont mineures dans votres code (un chercher/remplacer).


  • [vendredi 29 novembre 2002]

    info TP3: j'ai modifié la grammaire du TP3. Merci d'en prendre note. Inutile d'y aller de "oh ben là j'avais presque fini, comment je vais faire, etc..." les modifications à reporter dans votre code (si vous avez déjà commencé) sont très mineures. Merci de votre compréhension.

    La planche de démonstration 11 (la dernière) est disponible.


  • [jeudi 28 novembre 2002]

    Mea Culpa: La démonstration 10 était un peu compliquée (j'avais prévu de commencer les listes en cours cette semaine, mais j'ai bien sûr raté mon coup).
    Pas de panique donc si vous avez séché sur cette planche (je ne mettrais pas d'exercice de ce type à l'examen).
    La planche de démonstration 11 (la dernière) sera représentative du niveau de difficulté auquel vous pouvez vous attendre au final (du moins en ce qui concerne Prolog).


  • [samedi 23 novembre 2002]

    Il faut battre le fer pendant qu'il est encore chaud: le sujet du tp3 est disponible... Bon courage.
    Je reprécise pour ceux qui ne feraient pas eux-même les TPs (mais je sais que personne dans cette session n'est concerné) que le final contiendra des exercices à faire en C, Prolog et Scheme.


  • [mardi 19 novembre 2002]

    Un solutionnaire de la [demo 8] est disponible. Ca serait une mauvaise idée de vous contenter de le lire en guise de pratique de Scheme

    Pour les piqués de la continuation, j'ai ajouté un exercice (avec corrigé) à même les notes de cours.


  • [jeudi 14 novembre 2002]

    Vos notes de tp1 sont disponibles.
    Ceux qui n'ont pas de note mais qui ont remis leur TP doivent passer voir les démonstrateurs qui ont corrigé le TP.
    Pour toute information concernant la notation, prendre contact avec les démonstrateurs.

    Voici la distribution des notes de tp1:


  • [mercredi 6 novembre 2002]

    Vos notes d'intra sont disponibles sur la page du cours. Vous avez besoin du code qui vous a été envoyé par message pour retrouver votre note.
    Une version plus habituelle des notes (sans code, mais en vous connectant à votre compte) sera disponible prochainement (merci d'être patient).

    Vous avez été 94 à composer cet intra (+ 6 malades intempestifs). La moyenne de l'intra est de 64, (la note minimale 25, la note maximale 100).
    74 d'entre-vous avez une note supérieure ou égale à 50/100.

    Je vous indiquerai ultérieurement une date à laquelle vous pourrez venir voir vos copies, inutile de vous présenter à cet effet avant.

    Voici pour info la distribution des notes:

    Quelques commentaires concernant cet intra:

    • Pas trop de problème concernant les questions 1 à 3.
    • Question 4, vous êtes nombreux à ne pas avoir eu vos points (j'ai noté sur 10 points au lieu de 15 cette question). Le calcul était simple et on l'a vu au moins deux fois en cours (probablement la fatigue).
    • Question 5, vous êtes là encore peu nombreux à écrire des exemples C qui ne sont pas du C. Quelques idées fausses:
      • Tout problème de pointeur n'est pas appelé pointeur fou
      • Le code C suivant est une erreur, vous ne devriez plus la faire maintenant. int *p; *p = 5;
    • Question 6: j'ai pris connaissance du fait qu'en plus d'avoir été posée en exercice de démo en IFT2030, la question 6 de l'intra a été résolue également en IFT2010. J'ai accepté les solutions utilisant une pile (comme on vous l'a montré en IFT2010), bien que je souhaitais plutôt tester votre assimilation de la première partie du cours. Cependant, vous êtes nombreux à commettre des erreurs sur cette question:
      • Utiliser une pile est un peu lourd et surtout inutile (ca n'est cependant pas une erreur): il vous suffit seulement d'un entier (que vous incrémentez sur "(", et décrémentez sur ")", puisque ce que vous faites à la fin, c'est de tester que la pile est vide (votre entier à zero)
      • Cette solution n'est valable que si vous testez correctement que c'est légitime de rencontrer un symbole ")" sinon vous acceptez (et vous avez été très nombreux à commettre cette erreur) des chaînes dont le nombre de parenthèses ouvrantes et fermantes est égal, sans pour autant que l'expression soit correctement prenthésée (ex: ))(().
      • Enfin, j'ai trouvé trop peu de personnes qui connaissaient la base de la syntaxe de C, ce qui est étonnant sachant que c'était le langage obligatoire pour le TP1...

  • [mardi 5 novembre 2002]

    Un solutionnaire du TP1 est disponible. Les notes de vos TP1 suivront (merci d'être patient).


  • [mardi 29 octobre 2002]

    J'espère que vous avez trouvé l'intra facile (il l'était). Voici un solutionnaire de l'examen: [ps] [pdf].
    À lire impérativement (et à comprendre) si vous venez voir votre copie après correction (soyez patients).


  • [vendredi 25 octobre 2002]

    La salle d'examen de l'intra est maintenant connue, il s'agit du G-615, Pavillon Principal (faites circuler l'information, merci).


  • [jeudi 24 octobre 2002]

    Le sujet du devoir 2 est disponible. Au programme: des listes, de la récursivité, bref du Scheme. La démonstration de mercredi prochain attaque avec les concepts de base de ce nouveau langage (du moins pour beaucoup d'entre-vous).


  • [lundi 21 octobre 2002]

    Info TP: Vous avez été nombreux a me signaler que phobos était en panne dimanche (merci, mais je ne suis pas responsable du fonctionnement des serveurs du département :-). Il est maintenant réparé et vous pouvez faire vos remises comme indiqué. Vous avez jusqu'à mercredi 23 (minuit) pour faire la remise sans pénalité.

    Note: la similarité de vos projets sera vérifiée automatiquement (comme aide à la détection de plagiat). La procédure officielle en matière de plagiat est la suivante: 0 à tout le monde (aussi bien les copieurs que les auteurs du TP) plus notification à l'université. Mais je suis cependant certain que cela ne vous concerne pas...


  • [vendredi 18 octobre 2002]

    Info TP: Vous êtes plusieurs à me demander des informations à propos de l'option -v: oubliez la ! C'est une vieille habitude que j'ai d'ajouter cette option à tous mes programmes pour m'assurer de leur bon fonctionnement. Ce qu'on vous demande ici c'est d'être capable d'analyser lexicalement, syntaxiquement et sémantiquement. Donc l'option -m est importante. L'option -i est également à gérer (lire depuis l'entrée standard ou depuis un fichier).


  • [jeudi 17 octobre 2002]

    Info intra: Au programme de cet intra, tout ce que nous avons vu jusqu'à la date de l'intra. Ceci concerne donc les pages 1 à 160 des notes de cours de Marc Feeley; les chapitres 1 à 6 et 8 à 10 du livre de Sebesta et les chapitres 1 à 5 du Sethi.

    Note: Seule la matière vue en cours fera vraiment parti de l'examen (il n'est pas possible dans un cours de voir complètement la matière de 9 chapitres, aussi ne vous étonnez pas de lire des choses -- soit dans les notes de cours de Marc Feeley, soit dans votre livre -- que nous n'avons pas abordées).

    Note: Aucun document ne sera autorisé; attendez-vous donc à des questions de cours aux réponses ponctuelles testant votre compréhension globale.


  • [mercredi 16 octobre 2002]

    Le solutionnaire de la démonstration 5 est maintenant disponible


  • [mardi 15 octobre 2002]

    À tous ceux qui ont tenté de me questionner la semaine dernière sur le TP, désolé de mon silence mais j'étais en conférence. La consigne était de toute façon d'envoyer vos questions à dift2030 plutôt qu'à moi.
    Je suis disponible cette semaine pour vos questions concernant le TP ou le cours.
    Pour ceux qui ont des problèmes avec la modularité en C/C++, des liens sont disponibles depuis la planche de démonstration 5, prenez le temps de la lecture, les choses devraient devenir plus claires.


  • [vendredi 27 septembre 2002]

    Correction (++) dans la BNF du sujet du tp1. Certains d'entre-vous ont remarqué (encore) des coquilles dans la BNF. J'ai modifié en conséquence la BNF à même le sujet.

    Pour ceux qui ont commencé le codage de l'étape 2, les modifications concernent essentiellement l'appel de méthode (autorisation d'appel d'une procédure sans paramètre). J'ai également supprimé les règles vides en utilisant systématiquement la notation EBNF.


  • [jeudi 26 septembre 2002]

    Correction dans la BNF du sujet du tp1, le mot expression était (par erreur) en caractères gras dans la dernière règle. Merci à celui qui me l'a signalé. La règle est donc bien la suivante:

    facteur -> identificateur {[expression]} | literal_entier | ( expression )
    

  • [mardi 24 septembre 2002]

    Mea culpa: il y a effectivement un problème avec l'impression des pages html depuis le navigateur netscape. En revanche le navigateur konqueror disponible sous votre environnement Linux départemental imprime correctement les pages web de ce cours.

    Voici tout de même -- pour cette fois-ci -- le sujet du tp1 en version ps et pdf

    Prenez note que les modifications (compléments, clarifications, etc.) seront reportées uniquement dans le fichier html que vous pouvez imprimer (encore une fois) avec konqueror.


  • [vendredi 20 septembre 2002]

    Le sujet du TP1 est disponible sur le site du cours.

    Conseil d'usage (qui s'adresse d'autant plus aux nouveaux programmeurs en C): ne tardez pas à commencer le projet ! Les devoirs de IFT2030 sont plus conséquents que ceux réalisés en IFT1010.

    Merci d'avance de lire complètement le sujet au moins une fois avant de venir poser des questions. Bon courage.


  • [lundi 16 septembre 2002]

    Avez-vous des angoisses pour votre futur professionnel ?
    Si oui, précipitez-vous sur l'article paru le 14 septembre 2002 dans le journal Les Affaires: un must !


  • [mardi 10 septembre 2002]

    Pas de panique !
    L'objet de la première partie du cours n'est pas de faire de la théorie des langages (il existe un cours dédié), mais de voir ce qu'implique un compilateur (nous en verrons un exemple concret).


  • [mercredi 4 septembre 2002]

    La page du cours est normalement à jour. Prenez note que les salles de démonstration (tp) ont changées (voir Horaires et locaux).


  • [mardi 3 septembre 2002]

    Premier cours: 13h30--15h30, salle PA-1140





Dernière mise à jour : Sun Jan 5 13:40:51 EST 2003
dift2030@iro.umontreal.ca