Mardi, le 23 août, 2005
CSI 3525, Automne 2005: syllabus
CSI 3525. CONCEPTS DES LANGAGES DE
PROGRAMMATION
(3 heures de cours par semaine, 2 heures de labo par semaine, 4 crédits).
Classification
de langages de programmation. Description syntaxique de langages de
programmation. Langages de programmation impératifs: objets de données, types
de données, structures de contrôle, sous-programmes, principes
d'implantation. Programmation logique. Programmation fonctionnelle.
Programmation orientée objet. Modules. Préalables: CSI2514, deux laboratoires
de langage de programmation choisis parmi CSI2565, (CSI2571 ou CSI2572 ou
CSI2573) et CSI2574. Ne peut être combine avec CSI2515 pour l'obtention de crédits.
Manuel de cours & matériel distribue | Cours & laboratoires | Mode d'évaluation | Devoirs--détails
Sujets & lectures | Plan des cours | Plan des laboratoires | Evitez le plagiat...
La présentation des problèmes
fondamentaux a la création et a l'utilisation des langages de programmation
principaux. L'introduction de quelques langages de programmation importants et
differents. La préparation a 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.
Voir Sujets pour plus de détails sur les objectifs du
cours.
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 email que par téléphone)
email: nat@site.uottawa.ca
Heures de consultations:
- Lundi, 13h15-14h15
- Jeudi,
14h45-15h45
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 la. 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.
http://www.site.uottawa.ca/~nat/Courses/csi3525_2005/
Robert
W. Sebesta, Concepts of Programming Languages, 7th ed.,
Addison-Wesley, 2006
[Le livre sera disponible à la librairie Agora. Vous pouvez acheter vos
livres électroniquement à www.agorabookstore.ca
et les mettre en réserve jusqu’à ce que vous alliez les chercher. Les livres
peuvent aussi vous être livrés la nui même n’importe où à Ottawa pour la
somme de $3. Les commandes électroniques de $200 ou plus sont livrées
gratuitement.]
Je vous recommanderais d'acheter le
livre (la librairie le vend à $100 plus taxes). 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).
Il y a beaucoup de Perl -- et vous devrez apprendre le Perl dans ce cours. 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.
[Si vous avez déjà la 6ème
édition, vous pouvez également l’utiliser]
Les notes de cours (en
PowerPoint) seront postées sur le site Web du cours sur la page Matériel distribué. 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 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é.
Les trois nouveaux langages de
programmation introduit dans ce cours ne sont pas très
bien couverts dans le manuel de cours, mais il y a un énorme montant
d'information les décrivants sur le Web. Voici
quelques indicateurs qui vous aideront à prendre un bon départ:
Cours
CSI 3525:
Lundi 11:30-12:50, Jeudi 13:00-14:20, FTX, 316
Laboratoires
LAB
Mardi, 8:00-10:00, STE 0131
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, généralement une semaine en avance. Les
points seront probablement distribués comme suit: 5 + 9 + 9 + 12. Notez que
le 4ème devoir sera presque un petit projet et il sera fait en équipe de
deux.
L'examen de mi-session aura
lieu en classe le Lundi 24 Octobre, en classe. 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-5, ainsi que Unix et certaines connaissances de base, telles que
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 6-12.
Les deux examens seront
principalement composés de questions à choix multiple avec quatre choix
possibles. Il y aura également quelques questions a réponse ouverte.
Contrairement a ce que beaucoup de gens pensent, les
examens composés de questions à choix multiples ne sont pas nécessairement
facile. En effet, les deux examens vous demanderont une compréhension
profonde du matériel, et ils testeront toutes vos connaissances, mis à part
votre aptitude à la programmation. Celle-ci sera exercée principalement dans
vos devoirs.
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).
Sujets
tentatifs
|
Poste - Rendu
|
Préliminaires; Histoire; Prolog; Unix
[Sujets 1-2, 5 points, individuel]
|
15 Sep. - 29 Sep.
|
Grammaires; Sémantique axiomatique
[Sujets 3-4, 9 points, individuel]
|
29 Sep. - 20 Oct.
|
Scheme
[Sujet 5, 9
points, individuel]
|
20 Oct. - 7 Nov.
|
Perl et XML
[Sujets 6-7, 12 points, équipes de
deux]
|
7 Nov. - 24 Nov.
|
Les devoirs 1 et 2 seront
principalement par écrit. Les deux autres devoirs seront purement des devoirs
de programmation; 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 a 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
a l'enseignement, alors à ce moment là, venez me
parler du problème.
Veuillez prendre note que les
sujets 8-11 ne seront pas couverts par les devoirs. Néanmoins, ils seront
amplement couverts pendant les laboratoires. Finalement, le sujet 12 sera
discuté en grand détail en classe, et sera laissé ensuite pour étude indépendante.
Le dernier devoir doit être
rendu le 24 Nov. Je préférerais garder cette date puisqu'elle nous aidera à
noter les devoirs a temps et elle vous permettra de vous concentrer sur vos
autres cours a la fin du semestre. Néanmoins, je prendrais en considération
les demandes d'extension raisonnables, lorsque la date de remise approchera.
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++ et Prolog). Ces choses là sont des préalables -- et en particulier, le 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-12, 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 2-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 discute en classe.
Naturellement, également, ces
nouveaux sujets, et en particulier, les langages présentés dans les sujets
5-7, seront aussi important à notre synthèse que les connaissances que vous
apportez au cours.
De même que vous devez assister
aux cours, la présence aux laboratoires est obligatoire.
Liste des sujets
Nous
commencerons par un survol du cours et une revue des connaissances préalables
(Veuillez lire le
chapitre 16 afin de rafraîchir vos connaissances du Prolog).
- Critères,
classification, applications
(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.3).
- Description de la sémantique 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 le site
principal du MIT/GNU Scheme).
- Une introduction au Perl
(matériel
distribue, et énormément de choses sur le Web, en commencant par
le site principal Perl).
- Une introduction au XML
(matériel
distribue, et encore énormément de choses sur le Web, en
commencant par le site principal XML).
- Noms, attachements, vérification de type,
et étendues
(chapitre
5).
- Types de doneness
(chapitre 6).
- Expressions et la commande d'assignation
(chapitre
7).
- Structures de control
(chapitre 8).
- L'implantation de sous-programmes
(sections
10.3-10.4).
Date
|
Sujet
|
Date
|
Sujet
|
8 Sep., Jeu.
|
Preliminaires
|
24
Oct., Lun.
|
Examen de Mi-Session
|
12 Sep., Lun.
|
1
|
27 Oct., Jeu.
|
6
|
15 Sep., Jeu.
|
1, 2
[DEV 1 Posté]
|
31 Oct., Lun.
|
6
|
19 Sep., Lun.
|
3
|
3 Nov., Jeu.
|
7
|
22 Sep., Jeu.
|
3
|
7 Nov., Lun.
|
[DEV 3 A rendre] 7
[DEV 4 Posté]
|
26 Sep., Lun.
|
3, 4
|
10 Nov., Jeu.
|
7
|
29 Sep., Jeu.
|
[DEV 1 A rendre] 4
[DEV 2 Posté]
|
14 Nov., Lun.
|
8
|
3 Oct., Lun.
|
4
|
17 Nov., Jeu.
|
9
|
6 Oct., Lun.
|
5
|
21 Nov., Lun.
|
9
|
10
Oct., Lun.
|
Action de Grace
|
24 Nov., Jeu.
|
10
[DEV 4 A
rendre]
|
13 Oct., Jeu.
|
5
|
28 Nov., Lun.
|
11
|
17 Oct., Lun.
|
5
|
1 Dec.,
Jeu.
|
12
|
20
Oct., Jeu.
|
[DEV 2 A rendre]
6, revue
[DEV 3 Posté]
|
5 Dec., Lun.
|
revue
|
La date pour laisser tomber un
cours ce semestre est le 2 Novembre.
- Semaine du 12 Sep.: Introduction a
Unix/Linux.
- Semaine du 19 Sep.: Introduction a
Unix/Linux.
- Semaine du 26 Sep.: Grammaires.
- Semaine du 3 Oct.: Sémantique Axiomatique.
- Semaine du 10 Oct.:
Scheme.
- Semaine du 17 Oct.:
Scheme.
- Semaine du 24 Oct.:
Perl.
- Semaine du 31 Oct.:
Perl.
- Semaine du 7 Nov.:
XML.
- Semaine du 14 Nov.: XML.
- Semaine du 21 Nov.:
sujets 9, 10.
- Semaine du 28 Nov.:
sujets 11, 12.
Regardez notre règlement, s'il vous plait.
![[a small smiley]](%20)
|