Lundi, le 6 août, 2007             


CSI 3520, Automne 2007: syllabus
 

 

CSI 3520. CONCEPTS DES LANGAGES DE PROGRAMMATION
(3 heures de cours par semaine, 1.5 heures de laboratoire par semaine, 3 crédits).

Critères de conception et d évaluation pour langages de programmation. Introduction à leur description syntaxique et sémantique. Principes d’implantation. Langages de script. Comparaison de choix de conception selon le paradigme de programmation: objets, types, structures de contrôle, sous-programmes. Éléments de concurrence. Préalables: CSI2501, CSI2520


Objectifs du cours

La présentation des problèmes fondamentaux à la création et à l'utilisation des langages de programmation principaux. La présentation de conceptions et de techniques d’implémentations de différents paradigmes. L'introduction d’un langage script important: Perl .   La préparation à l'étude approfondie des langages de programmation, le développement d'une appréciation d'un langage en tant qu'outil pour la construction de logiciel, l'apprentissage du "savoir-faire" qui vous permettra d'évaluer et de choisir un langage qui correspond bien au problème que vous voulez résoudre.

Professeur

Dr. Nathalie Japkowicz

Bureau: STE 5029
Téléphone: 562-5800 ext. 6693 (Note Importante: il est plus sûr de correspondre avec moi par courriel que par téléphone)
Courriel:
nat@site.uottawa.ca
Heures de consultations:

  • Lundi, 14h45-15h45
  • Mercredi, 13h15-14h15

N'hésitez pas à me poser des questions par courrier électronique. Elles vous y seront répondues, le plus souvent, dans le courant de la journée. Normalement, j'arrive également en avance du cours et suis disponible pour répondre a vos questions à ce moment là. Si les heures de bureau ne vous conviennent pas, il est également possible de me consulter dans mon bureau par rendez-vous. Veuillez, s'il vous plait, prendre rendez-vous par email.

Manuel de Cours et Matériel distribué

Robert W. Sebesta, Concepts of Programming Languages, 8th ed., Addison-Wesley, 2007

 Je vous recommanderais d'acheter le livre.  Il a beaucoup d’avantages. D'abord, vous recevez un code personnel qui vous donne accès aux ressources pour étudiants sur le site Web du manuel.  Ensuite, le livre contient des entrevues très intéressantes avec des chercheurs qui ont développe de nouveaux langages: Alan Cooper (Mr. Visual Basic), Rasmus Lerdorf (Mr. PHP), Larry Wall (Mr. Perl), le Professeur Niklaus Wirth (Mr. Euler, Algol-W, Pascal, Modula, Oberon, et un laureat du prix ACM Turing), Bjarne Stroustrup (Mr. C++), et James Gosling (Mr. Java).

 Le livre couvre les nouveaux développements, dont le C#. Il y a des notes historiques pour les curieux. Il y a des exercices de programmation pour ceux qui veulent plus d'entraînement. Et, en général, ce livre est une très bonne référence qui vous servira également plus tard.

Les notes de cours (en PowerPoint) seront postées sur le site Web du cours sur la page Matériel distribué. Nous passerons beaucoup de temps sur les sujets difficiles, et beaucoup moins de temps sur les sujets plus aisés. Certains sujets seront traités (principalement) comme devoirs de lecture.

Du matériel supplémentaire apparaîtra, au fur et à mesure qu'il deviendra utile, sur la page de Matériel distribué.

Nous feront une revue de deux langages de programmation que vous connaissez déjà, et introduiront un nouveau langage (un langage script) : PERL. PERL est bien décrit dans le manuel de cours, mais a également de bonnes descriptions sur le WEB. Voici quelques indicateurs qui vous aideront à prendre un bon départ:

·  learn.perl.org

·  CGI Programming 101

·  Oreilly's perl.com

·  Leeds Perl  

·  Ebb.org Perl

Cours, Laboratoires et Tutoriels

Cours

CSI 3520:
Lundi 13h00-14h20, Mercredi 11h30-12h50, MNT 204

Laboratoires

LAB : Mardi, 8h30-10h00, STE 2052

Tutoriels

TUT :   Lundi, 11h30-13h00, VNR 062

Mode d'évaluation

Un maximum de 100 points sera disponible. La division se fait comme suit:

[AS] devoirs

35 points

[MD] examen de mi-session (livres fermés, 80 minutes)

20 points

[FN] examen final (livres fermés, 3 heures)

45 points

Les devoirs, avec leurs sujets projetés, sont décrits en plus de détail un peu plus tard dans ce document. Tous les devoirs seront postés sur le site Web. Les points seront probablement distribués comme suit: 8 + 9 + 9 + 9.

L'examen de mi-session aura lieu le Jeudi 25 Octobre, 8h30-10h00 dans la salle STE J 0106. Veuillez, s'il vous plait, faire vos plans d'avance afin de vous assurer d'être présent ce jour là. Veuillez également vous arranger pour arriver en avance afin d'éviter les problèmes au moment de l'assignation de place dans la salle.

Vous devez écrire l'examen de mi-session. Il n'y aura pas d'examen make-up. Si vous avez une raison médicale valide qui explique votre abscence a l'examen (cette raison doit être confirmée par les services de santé de l'Université), j'ajouterais le pourcentage représentant la valeur de l'examen de mi-session à celui de l'examen final.

L'examen de mi-session couvrira les sujets 1-6, ainsi que Unix et certaines connaissances de base, telles que Scheme et Prolog. (Les Sujets sont décrits un peu plus loin dans ce document.)

L'examen final couvrira tous les sujets, avec une emphase légère sur les sujets 7-11.

A l'examen de mi-session, vous aurez le droit à une feuille de rappel. Celle-ci devra avoir le format suivant: US Letter size (8.5 par 11 pouces), écrite a la main des deux côtés. Les loupes ne sont pas permises! A l'examen final, vous aurez le droit à deux feuilles de rappel.

L'Ecole d'Ingenierie et de Technologie de l'Information exige l'obtention d'une note d'un minimum de 50% aux examens. La note numérique sera calculée comme ceci:

Si (Mi_Session + Final) < 32.5
Alors Note_Numer = (Mi_Session + Final) * 1.5
Sinon Note_Numer = Mi_Session + Final + Devoirs

La note alphabétique finale sera calculée en fonction de l'échelle en vigueur a l'Université d'Ottawa (90% ou plus = A+; moins de 55% = D ou moins = Echec).

Devoirs -- details

Sujets tentatifs

Posté - Rendu

Préliminaires; Histoire; Scheme, Prolog; Unix
[Sujets 1-3,
8 points, individuel]

17 Sep. -        1 Oct.

Grammaires; Sémantique axiomatique ; Analyse Syntaxique
[Sujets 4-6,
9 points, individuel]

1 Oct. -        29 Oct.

Perl
[Sujet 7,
9 points, individuel]

5 Nov. -       19 Nov.

Caractéristiques de Conception
[Sujets 8-11,
9 points, individuel]

19 Nov. -       3 Dec.

Les devoirs 2 et 4 seront par écrit. Devoir 3 sera purement un devoir de programmation; Devoir 1 sera mixte. Nous déterminerons et annoncerons plus tard le mode de retour du code de vos devoirs.

Les devoirs en retard seront acceptés avec une pénalité de 0.5 points par jour pendant les semaines et 0.25 points par jour pendant les fins de semaine et jours fériés. (Cela correspond à 0.5% ou 0.25% de votre note finale puisque chaque point correspond a 1% de votre note finale.).

Si vous n'êtes pas d'accord avec la note qui vous a été assignée à un devoir, discutez-en, s'il vous plait, avec votre assistant a l'enseignement. Les appels ne seront considérés pas plus tard que deux semaines après le retour des notes. Si vous n'êtes toujours pas d'accord avec les explications supplémentaires de votre assistant à l'enseignement, alors à ce moment là, venez me parler du problème.

Sujets et Lectures

Remarques

On vous demande de lire les chapitres indiqués ou leurs sections immédiatement après la discussion en classe du matériel. Bien entendu, vous pouvez également faire la lecture en avance des cours (:>). Il y aura des notes de cours plus riches pour les quelques sujets qui ne sont pas bien couverts dans le manuel de cours.

Veuillez noter, s'il vous plait, que ce cours n'est pas dévoté à la programmation, aux structures de données ou aux langages de programmation que vous connaissez déjà (Java, C++, Scheme et Prolog). Ces choses là sont des préalables -- et en particulier, le Scheme et Prolog! L'un des objectifs du cours est de vous montrer une nouvelle methods d'apprendre le matériel que vous avez déjà rencontre, et d'en faire une bonne synthèse. Les sujets 8-11, en particulier, sont dans cette catégorie.

Bien entendu, nous introduirons beaucoup de matériel nouveau, ou, tout du moins, nouveau pour une grande majorité de la classe. Ces sujets sont les sujets 3-7 et une partie du sujet 1. L'apprentissage de ces connaissances sera substantiellement supporté par les laboratoires. De plus, puisque la plupart d'entre vous ne connaît pas Unix/Linux et devra se familiariser avec ce superbe système d'exploitation. il y aura deux laboratoires sur l'Unix. Veuillez, néanmoins, noter que l’Unix ne sera pas discuté en classe.

De même que vous devez assister aux cours, la présence aux laboratoires et tutorials est obligatoire.

Liste des sujets

Nous commencerons par un survol du cours et une revue des connaissances préalables (Veuillez lire les chapitres 15 et 16 afin de rafraîchir vos connaissances du Prolog).

  1. Critères, classification, applications
    (chapitre 1).
  2. Revue du Scheme et du Prolog  (chapitres 15 et 16, principalement, devoir de lecture.)
  3. Evolution des langages de programmation principaux
    (chapitre 2, principalement, un devoir de lecture).
  4. Description de la syntaxe des langages de programmation
    (sections 3.1-3.3).
  5. Description de la sémantique des langages de programmation
    (section 3.5.2).
  6. Analyse Syntaxique ; Parsing
    (chapitre 4 (mains section 4.2 ne sera pas traitée en grande profondeur)).
  7. Une introduction au Perl
    (matériel distribué, et énormément de choses sur le Web, en commencant par le site principal Perl).
  8. Noms, attachements, vérification de type, et étendues ; Types de données ; Expressions et la commande d’assignation ; Structure de control
    (chapitres 5, 6, 7 et 8.).
  9. L'implantation de sous-programmes
    (sections 10.1-10.4).
  10. Parallelisme                                            (sections 13.1-5, 13.7)
  11. Traitement de l’Exception                      (sections 14.1, 14.3-14.6)

Plan des cours

Date

Sujet

Date

Sujet

6 Sep., Mer.

Preliminaires, 1

25 Oct., Jeu.

Examen de Mi-Session

10 Sep., Lun.

1, 2

29 Oct., Lun.

7 [Dev 2 A rendre]

12 Sep., Mer.

 3

 

31 Oct., Mer.

7

17 Sep., Lun.

4

 [DEV 1 Posté]

5 Nov.,  Lun.

8
[DEV 3 Posté]

19 Sep., Mer.

4

7 Nov., Mer.

8

24 Sep., Lun.

4, 5 

12 Nov., Lun.

8

26 Sep., Mer.

5                         

14 Nov., Mer.

8

1 Oct.,  Lun.

5                       [DEV 1 A rendre] [DEV 2 Posté]

 

19 Nov., Lun.

9                          [DEV 3 A rendre] [DEV 4 Posté]

3 Oct., Lun.

6

21 Nov., Mer.

10                           

10 Oct., Mer.

6

26 Nov., Lun.

10, 11

 

15 Oct., Lun.

7                            

28 Nov., Mer.

11

17 Oct., Mer.

6                        

3 Dec.,

Lun.

11                          [DEV 4 A rendre]

22 Oct., Lun.

Revue

 

5 Dec., Mer.

Revue           

La date pour laisser tomber un cours ce semestre est le 5 Novembre.

Plan des laboratoires

  1. Semaine du 17 Sep.: Introduction a Unix/Linux.
  2. Semaine du 24 Sep.: Introduction a Unix/Linux.
  3. Semaine du 1 Oct.: Grammaires.
  4. Semaine du 8 Oct.: Sémantique Axiomatique.
  5. Semaine du 15 Oct.: Analyse Syntaxique.
  6. Semaine du 22 Oct.: Analyze Syntactique.
  7. Semaine du 29 Oct.: Perl.
  8. Semaine du 5 Nov.: Perl.
  9. Semaine du 12 Nov.: sujet 8.
  10. Semaine du 19 Nov.: sujet 8, 9.
  11. Semaine du 26 Nov.: sujets  10.
  12. Semaine du 3 Dec.: sujets 11.

Evitez le plagiat...

Regardez notre règlement, s'il vous plait.


Bonne chance!