Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF1573  Gr. 01
Titre : Programmation II
Session : Hiver 2016  Horaire et local
Professeur : Benyahia, Ilham
1. Description du cours paraissant à l'annuaire :

Objectifs

Approfondir les concepts de la programmation orientée-objet. Sensibiliser au développement de programmes de qualité.

Contenu

Types abstraits, polymorphisme, généricité, événements. Utilisation de librairies (JDK, STL ou similaire). Récursivité. Vérification, tests et documentation de programmes. Présentation des langages C et C++, discussion de certains concepts dans le contexte du langage Java : passage de paramètres, pointeurs, structures, "templates", etc. Notions d'analyse numérique: précision. Ce cours comporte des séances obligatoires de travaux dirigés (TD) de deux heures par semaine.
2. Objectifs spécifiques du cours :

Le cours couvre 2 des 12 qualités requises des diplômés telle que définies dans les normes d'agrément des programmes de génie au Canada. (http://www.engineerscanada.ca/sites/defaults/files/w_Accreditation_Criteria_Procedures_2012.pdf)) :

  • Qualité 1 : Connaissance en génie
  • Qualité 2 : Analyse de problèmes
La qualité 2 est mesurée dans ce cours pour fins de rétroaction.
Objectifs spécifiques Qualité Indicateurs Introduit Développé Appliqué
  1. Être capable d'analyser les conséquences d'utilisation des concepts objet
  2. Distinguer la différence de la résolution de problèmes par les méthodes itératives et les méthodes récursives
2
2 - Formuler un processus de résolution de problème, comprenant des approximations et des hypothèses.
x
x
4 - Évaluer les résultats obtenus et formuler des conclusions.
x
x
3. Stratégies pédagogiques :
Les formules pédagogiques suivantes seront utilisées :
  • L'enseignement est dispensé sous forme magistrale (3h/semaine). Des exercices seront donnés durant ces séances pour illustrer les notions nouvellement introduites.
  • Les étudiants doivent participer en classe pour mieux saisir les notions qui seront présentées pendant le cours.
  • Des séances de travaux dirigés (2h/séance) viendront appuyer les séances de cours. Ces séances se font en présence d'un assistant. La présence des étudiants est obligatoire.
4. Heures de disponibilité ou modalités pour rendez-vous :
Consultations : mardi : 10 h à 12 h ou sur rendez-vous. Courriel : ilham.benyahia@uqo.ca
5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1    Introduction
  • Plan du cours
  • Présentation des concepts objets :
    1. Concepts de classes et objets
    2. Concepts d'héritage et polymorphisme
    3. Concepts d'encapsulation
  • Notions de généricité
  • Notions sur les types abstraits
13 jan. 2016 
2    Programmation orientée objet: Différentes formes d'héritage et notions sur la réutilisation
  • Introduction
  • Relation d'héritage
  • Étude de cas

Travail dirigé #1 : Le lundi 18 janvier ou le jeudi 21 janvier 2016 : Les Concepts objet

20 jan. 2016 
3    Programmation orientée objet (suite) : Polymorphisme
  • Introduction
  • Classes et méthodes abstraites
  • Études de cas
  • Énoncé du devoir 1

Travail dirigé #2 : Le lundi 25 janvier ou le jeudi 28 janvier 2016 : Les Concepts objet (Suite - TD 1)

27 jan. 2016 
4    Programmation par événements
  • Les composantes graphiques
  • Les Applets
  • Les swings
  • Études de cas
  • Test 1

Travail dirigé #3 : Le lundi 1er ou le jeudi 4 février 2016 : Applications : relations entre les classes et héritage

03 fév. 2016 
5    Principes de qualité de la programmation
  • Introduction
  • Tests de vérification

Travail dirigé #4 : Le lundi 8 février ou le jeudi 11 février 2016 : Utilisation du polymorphisme

10 fév. 2016 
6    Qualité de la programmation (suite)
  • Étude de cas
  • Révision pour l'examen intra
  • Énoncé du devoir 2 et Test 2

Travail dirigé #5 : Le lundi 15 février ou le jeudi 18 février 2016 : La programmation par événements

17 fév. 2016 
7    Qualité de la programmation (suite)
  • Documentation des programmes

Travail dirigé #6 : Le lundi 22 février ou le jeudi 25 février 2016 : Analyse de la qualité de la programmation

24 fév. 2016 
8    Semaine d'études 02 mars 2016 
9    Examen de mi-session (2 heures)
  • Le traitement des exceptions
09 mars 2016 
10    Le traitement des exceptions
  • Bases de traitements des exceptions
  • Exemples de classes d'exceptions
  • Déclarations de nouveaux types d'exception

Travail dirigé #7 : Le lundi 14 mars ou le jeudi 17 mars 2016 : Concepts objet en C++ - Partie 1

16 mars 2016 
11    Récursivité
  • Concepts de récursivité
  • Exemples utilisant la récursivité
  • Récursivité vs itération
  • Énoncé du devoir 3 et Test 3

Travail dirigé #8 : Le lundi 21 mars ou le jeudi 24 mars 2016 : Concepts objet en C++ - Partie 2

23 mars 2016 
12    Étude de cas
  • Résolution de problèmes d'analyse numérique

Travail dirigé #9 : Le lundi 31 mars : Concepts objet en C++ - Partie 3

30 mars 2016 
13    Java vs C++ : héritage multiple, amies, fonctions virtuelles, surcharge des opérateurs, templates, pointeurs

Travail dirigé #10 : Le lundi 4 avril (partie 3) ou le jeudi 7 avril 2016 : Concepts objet en C++ - Partie 4

06 avr. 2016 
14    Révision et préparation de l'examen final

Le lundi 11 avril 2016 : Concepts objet en C++ - Partie 4 (suite)

13 avr. 2016 
15    Examen final 20 avr. 2016 
6. Évaluation du cours :

Il faut obtenir au moins 50 % de la note aux examens (mi-session et final) pour que les notes des autres travaux (devoirs et tests en classe) soient prises en compte dans le calcul de la moyenne finale.

Outils d'évaluation Pondération Indicateurs évalués
Devoirs (3)*
35 %
2.2 et 2.4
Examen intra
20 %
2.2 et 2.4
Examen final
30%
1.4
Examen final
25 %
2.2 et 2.4
Travaux dirigés
5 %
2.2
Tests en classe**
15 %
2.2

* Devoirs : Deux devoirs doivent être faits obligatoirement par équipe (maximum de trois étudiants) et un devoir individuel. Les détails et spécifications seront fournis avec les énoncés. Il est important de noter que les retards seront pénalisés et la note sera diminuée de 5% par jour de retard. Les travaux ne seront pas acceptés après trois jours de la date limite.

** Tests en classe : Trois tests (pratique et théorie) seront faits en classe.

Par indicateur mesuré, on entend qu'à la fin du cours, un niveau de performance (0, 1, 2, 3) est donné pour chaque indicateur et pour chaque étudiant selon la grille ci-dessous :

Indicateurs Niveau 0 Niveau 1 Niveau 2 Niveau 3
2.2 - Formuler un processus de résolution de problème, comprenant des approximations et des hypothèses. Formulation du processus de résolution inacceptable et traitement inadéquat des approximations et des hypothèses Formulation du processus de résolution acceptable, mais traitement partiel des approximations et des hypothèses Formulation du processus de résolution et traitements des approximations et des hypothèses acceptables Formulation du processus de résolution e traitement des approximations et des hypothèses remarquable
2.4 - Évaluer les résultats obtenus et formuler des conclusions Évaluation et/ou conclusions inexistantes Évaluation et conclusions partielles Évaluation et conclusions acceptables Évaluation et conclusions remarquables
7. Politiques départementales et institutionnelles :
8. Principales références :
Les notes de cours représentent la principale référence. Les étudiants doivent aussi consulter régulièrement des documents parmi ceux qui seront suggérés et particulièrement ceux qui seront mis en réserve à la bibliothèque.

    Non-obligatoires mais fortement recommandés :

    1. Object-Oriented Problem Solving. Java, Java, Java. Ralph Morelli, Prentice-Hall. ISBN 0-13-033370-0.
    2. Java Comment Programmer, 6e édition. H. M. Deitel et P.J. Deitel. Reynald Goulet, 2002. ISBN 2893772544.

    Autres références - à consulter:

  • On To Java. P. H. Winston et S. Narasimhan, 3rd Edition (version en ligne).
  • Object-Oriented Programming with Java An Introduction, D. J. Barnes, Prentice-Hall, ISBN 0-13-086900-7.
  • Understanding Object-Oriented Programming with Java. T. Budd, Addison-Wesley, ISBN 0-201-61273-9.
  • An Introduction to Object-Oriented Programming third edition, T. Budd, Addison-Wesley. ISBN: 0-201-76031-2.
  • The Java Class Libraries Second Edition, Volume 1. P. Chan, R. Lee and D. Kramer. Addison-Wesley, ISBN:0-201-31002-3.
  • Object-Oriented Programming with C++ and Smalltalk, Caleb Drake, Prentice-Hall. ISBN: 0-13-103797-8.
  • Bertrand Meyer : Object Oriented Software Construction : Prentice Hall.
9. Page Web du cours :
https://moodle.uqo.ca