Lundi, le 16 Juillet, 2003
CSI 3525, Automne 2003: syllabus
(Copie non-officielle,
derniere modification: le 16 Juillet, 2003)
CSI 3525. CONCEPTS DES LANGAGES DE PROGRAMMATION
(3 heures de cours par semaine, 2 heures de labo par semaine, 4 credits).
Classification de langages de programmation. Description syntaxique de langages
de programmation. Langages de programmation imperatifs: objets de donnees,
types de donnees, structures de controle, sous-programmes, principes
d'implantation. Programmation logique. Programmation fonctionnelle.
Programmation orientee objet. Modules. Prealables: CSI2514, deux laboratoires
de langage de programmation choisis parmi CSI2565, (CSI2571 ou CSI2572 ou
CSI2573) et CSI2574. Ne peut etre combine avec CSI2515 pour l'obtention de
credits.
Manuel de cours & materiel distribue
| Cours & laboratoires
| Mode d'evaluation
| Devoirs--details
Sujets & lectures
| Plan des cours
| Plan des laboratoires
| Evitez le plagiat...
La presentation des problemes fondamentaux a la creation et a
l'utilisation des langages de programmation principaux. L'introduction
de quelques langages de programmation importants et differents .
La preparation a l'etude approfondie des langages de programmation, le
developpement d'une appreciation d'un langage en tant qu'outil pour la
construction de logiciel, l'apprentissage du "savoir-faire" qui vous
permettra d'evaluer et de choisir un langage qui correspond bien au
probleme que vous voulez resoudre.
Voir Sujets pour plus de details sur les objectifs du cours.
Dr. Nathalie Japkowicz
Bureau: STE 5029
Telephone: 562-5800 ext. 6693 (Note Importante: il est plus sur de correspondre
avec moi par e-mail que par telephone)
e-mail: nat@site.uottawa.ca
Heures de consultations: seront determines le premier jour de classe
N'hesitez pas a me poser des questions par courrier electronique. Elles
vous y seront repondues, le plus souvent, dans le courant de la journee.
Normalement, j'arrive egalement en avance du cours et suis disponible
pour repondre a vos questions a ce moment la. Si les heures de bureau ne
vous conviennent pas, il est egalement possible de me consulter dans mon
bureau par rendez-vous. Veuillez, s'il vous plait, prendre rendez-vous par
e-mail.
http://www.site.uottawa.ca/~nat/Courses/csi3525_2003/
Robert W. Sebesta,
Concepts
of Programming Languages,
6th ed., Addison-Wesley, 2004
[Le livre sera disponible a Benjamin Books sur la rue Osgoode.]
Certains d'entre vous pourraient peut-etre se
procurer la 5eme edition (d'occasion). Bien que
cette edition pourrait suffir, je vous recommenderais
d'acheter la nouvelle edition. Dr. Sebesta
ameliore son manuel de cours regulierement et sa
version la plus recente est bien reussie.
D'abord, vous recevez un code personnel qui vous donne
acces aux ressources pour etudiants sur le site Web du
manuel.
Ensuite, la nouvelle version contient des entrevues tres
interessantes avec des chercheurs qui ont developpe 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).
Il y a beaucoup plus de Perl -- et vous devrez apprendre
le Perl dans ce cours. Le livre couvre les nouveaux
developpements, 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'entrainement. Et, en general, ce
livre est une tres bonne reference qui vous servira egalement
plus tard.
Les notes de cours (en PowerPoint) seront postees sur le
site Web du cours sur la page Materiel distribue. Nous discuterons de deux sujets dans la description de langages, et
introduirons trois nouveaux langages. Nous passerons beaucoup de temps sur
les sujets difficiles, et beaucoup moins de temps sur les sujets plus aises.
Certains sujets seront traites (principalement) comme devoirs de lecture.
Du materiel supplementaire apparaitra, au fur et a mesure qu'il deviendra
utile, sur la page de Materiel distribue.
Les trois nouveaux langages de programmation introduit dans ce cours ne
sont pas tres bien couverts dans le manuel de cours, mais il y a un
enorme montant d'information les decrivants sur le Web. Voici quelques
indicateurs qui vous aideront a prendre un bon depart:
Cours
CSI 3525:
Lundi 14:30-15:50, Jeudi 16:00-17:20, LMX 221
Laboratoires
LAB
Vendredis, 8:00-10:00, STE 0130
Un maximum de 100 points sera disponible. La division se fait comme suit:
[AS] devoirs
|
36 points
|
[MD] examen de mi-session (livres fermes, 80 minutes)
|
20 points
|
[FN] examen final (livres fermes, 3 heures)
|
44 points
|
Les devoirs, avec leurs sujets projetes, sont decrit en plus de detail un
peu plus tard dans ce document. Tous les devoirs seront postes sur le
site Web, generalement une semaine en avance. Les points seront probablement
distribues comme il suit: 6 + 9 + 9 + 12. Notez que le 4eme devoir sera presque
un petit projet et il sera fait en equipe de deux.
L'examen de mi-session aura lieu le Samedi
18 Octobre
, de 9h30 a 11h00, en salle STE B0138. Veuillez, s'il
vous plait, faire vos plans d'avance afin de vous assurer d'etre present ce
jour la. Veuillez egalement vous arranger pour arriver en avance afin
d'eviter les problemes au moment de l'assignation de place dans la salle.
Vous devez ecrire l'examen de mi-session. Il n'y aura pas d'examen make-up.
Si vous avez une raison medicale valide qui explique votre abscence a l'examen
(cette raison doit etre confirmee par les services de sante de l'Universite),
j'ajouterais le pourcentage representant la valeur de l'examen de mi-session
a celui de l'examen final.
L'examen de mi-session couvrira les sujets 1-5.
(Les Sujets
sont decrits un peu plus loin dans ce document.)
L'examen final couvrira tous les sujets, avec une emphase legere sur les
sujets 6-14.
Les deux examens seront principalement composes de questions a choix multiple
avec quatre choix possibles. Il y aura egalement quelques questions a reponse
ouverte.
Contrairement a ce que beaucoup de gens pensent, les examens composes de
questions a choix multiples ne sont pas necessairement facile.
En effet, les deux examens vous demanderont une comprehension profonde
du materiel, et il testera toutes vos connaissance, mis a part votre
aptitude a la programmation. Celle-ci sera exercee principalement dans
vos devoirs.
A l'examen de mi-session, vous aurez le droit a une feuille de rappel.
Celle-ci devra avoir le format suivant: US Letter size (8.5 par 11 pouces),
ecrite a la main des deux cotes. Les loupes ne sont pas permises!
A l'examen final, vous aurez le droit a 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
numerique sera calculee comme ceci:
Si (Mi_Session + Final) < 32
Alors Note_Numer = (Mi_Session + Final) * 1.5
Sinon Note_Numer = Mi_Session + Final + Devoirs
La note
alphabetique finale sera calculee en fonction de l'echelle en vigueur a
l'Universite d'Ottawa (90% ou plus = A+; moins de 55% = D ou moins =
Echec).
Sujets tentatifs
|
Poste - Rendu
|
Preliminaires; Histoire; Prolog; Unix
[6 points, individuel]
|
11 Sep. - 25 Sep.
|
Grammaires; Semantique axiomatique
[9 points, individuel]
|
29 Sep. - 14 Oct.
|
Scheme
[9 points, individuel]
|
16 Oct. - 30 Oct.
|
Perl et XML
[12 points, equipes de deux]
|
6 Nov. - 20 Nov.
(or Nov. 24)
|
Les devoirs 1 et 2 seront principalement par ecrit. Les deux autres devoirs
seront purement des devoirs de programmation; nous determinerons et annoncerons
plus tard le mode de retour du code de vos devoirs.
Les devoirs en retard seront acceptes avec une penalite de 0.5 points
par jour pendant les semaines et 0.25 points par jour pendant les fins de
semaine et jours feries. (Cela correspond a 0.5% ou 0.25% de votre note
finale puisque chaque point correspond a 1% de votre note finale.).
Si vous n'etes pas d'accord avec la note qui vous a ete assignee a un devoir,
discutez-en, s'il vous plait, avec votre assistant a l'enseignemnet. Les appels
ne seront consideres pas plus tard que deux semaines apres le retour des notes.
Si vous n'etes toujours pas d'accord avec les explications supplementaires de
votre assistant a l'enseignement, alors a ce moment la, venez me parler du
probleme.
Veuillez prendre note du fait que le devoir de Scheme doit etre rendu apres
l'examen de mi-session. Cela signifie que vous devrez preparer la section
sur le Scheme sans le benefice d'une solution. Il y aura des examples de
programmes en Scheme sur le site Web, donc vous aurez beaucoup d'opportunites
pour vos revisions. Veuillez noter egalement que les sujets 9-13 ne seront
pas couvert par les devoirs. Neanmoins, ils seront amplement couverts
pendant les laboratoires. Finalement, le sujet 14 sera discute en grand detail
en classe, et sera laisse ensuite pour etude independante.
Remarques
On vous demande de lire les chapitres indiques ou leurs sections
immediatement apres la discussion en classe du materiel. Bien entendu,
vous pouvez egalement 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 devote a la
programmation, les structures de donnees ou aux langages de programmation
que vous connaissez deja (Java, C++ et Prolog). Ces choses la sont des
prealables -- et en particulier, le
Prolog! L'un des objectifs du cours est de vous
montrer une nouvelle methods d'apprender le materiel que vous avez deja
rencontre, et d'en faire une bonne synthese. Les sujets 10-14, en particulier,
sont dans cette categorie.
Bien entendu, nous introduirons beaucoup de materiel nouveau, ou, tout du moins,
nouveau pour une grande majorite de la classe. Ces sujets sont les sujets
3-8, 14 et une partie du sujet 2. L'apprentissage de ces connaissances sera
substantiellement supporte par les laboratoires. De plus, puisque la
plupart d'entre vous ne connait pas Unix/Linux et devra se familiariser avec
ce superbe systeme d'exploitation. il y aura deux laboratoires sur l'Unix.
Veuillez, neanmoins, noter que le Unix ne sera pas discute en classe.
Naturellement, egalement, ces nouveaux sujets, et en particulier, les langages
presentes dans les sujets 6-8, seront aussi important a notre synthese que
les connaissances que vous apportez au cours.
De meme que vous devez assister aux cours, la presence aux laboratoires
est obligatoire.
Liste des sujets
-
Survol du cours
Revue des connaissances prealables
(chapitre 16, un devoir de lecture).
-
Preliminaires
(chapitre 1).
-
Evolution des langages de programmation principaux
(chapitre 2, principalement, un devoir de lecture).
-
Description de la syntaxe des langages de programmation
(sections 3.1-3.4).
-
Description de la semantique des langages de programmation
(section 3.5.2).
-
Une introduction au Scheme
(sections 15.1-15.6; beaucoup d'information sur le Web, en commencant
par les sites Scheme principaux).
-
Une introduction au Perl
(materiel distribue, et enormement de choses sur le Web,
en commencant par les sites
Perl principaux).
-
Une introduction au XML
(materiel distribue, et encore enormement de choses sur le Web, en
commencant par les sites XML principaux).
-
Noms, attachements, verification de type, et etendues
(chapitre 5).
-
Types de donnees
(chapitre 6).
-
Expressions et la commande d'assignation
(chapitre 7).
-
Structures de control
(chapitre 8).
-
Sous-programmes
(chapitre 9).
-
L'implantation de sous-programmes
(sections 10.3-10.4).
Date
|
Sujet
|
Date
|
Sujet
|
4 Sep., Jeu.
|
1
|
20 Oct., Lun.
|
7
|
8 Sep., Lun.
|
2
|
23 Oct., Jeu.
|
7
|
11 Sep., Jeu.
|
2, 3 [DEV 1 poste]
|
27 Oct., Lun.
|
7, 8
|
15 Sep., Lun.
|
4
|
30 Oct., Jeu.
|
8 [DEV 3 a rendre]
|
18 Sep., Jeu.
|
4
|
3 Nov., Lun.
|
8
|
22 Sep., Lun.
|
4, 5
|
6 Nov., Jeu.
|
9 [DEV 4 poste]
|
25 Sep., Jeu.
|
5 [DEV 1 a rendre]
|
10 Nov., Lun.
|
9, 10
|
29 Sep., Lun.
|
5 [DEV 2 poste]
|
13 Nov., Jeu.
|
10
|
2 Oct., Jeu.
|
6
|
17 Nov., Lun.
|
11
|
6 Oct., Lun.
|
6
|
20 Nov., Jeu.
|
12 [DEV 4 a rendre]
|
9 Oct., Jeu.
|
6
|
24 Nov., Lun.
|
13
|
16 Oct., Jeu.
|
[DEV 2 a rendre 14 Oct.]
review, 7 [DEV 3 poste]
|
27 Nov., Jeu.
|
14
|
Oct. 18, Sat.
|
midterm
|
1 Dec., Lun.
|
14, review
|
La date pour laisser tomber un cours ce semestre est le 3 Novembre.
-
Semaine du 8 Sep.: Revue des connaissances prealables; Unix.
-
Semaine du 15 Sep.: Unix.
-
Semaine du 22 Sep.: Grammaires.
-
Semaine du 29 Sep.: Semantique Axiomatique.
-
Semaine du 6 Oct.: Scheme.
-
Semaine du 13 Oct.: Scheme.
-
Semaine du 20 Oct.: revue pour l'examen de mi-session; Perl.
-
Semaine du 27 Oct.: Perl.
-
Semaine du 3 Nov.: XML.
-
Semaine du 10 Nov.: XML; sujet 9.
-
Semaine du 17 Nov.: sujets 10, 11.
-
Semaine du 24 Nov.: sujets 12, 13.
Regardez notre reglement, s'il vous plait.
|