Descriptif Algorithmique Structures Données
Descriptif Algorithmique Structures Données
Préalables : INF104
Objectif(s) de l’UE : Cette UE vise la maîtrise d’une variété de structures de données classiques
existantes et des principaux algorithmes sur celles-ci.
Contenu : Initiation à l'algorithmique et aux bases de la programmation, Structures de
données (liste, pile, file, tableau, arbre, table de hachage, graphe), Analyse
de performance des algorithmes, Techniques de base de conception d'algo-
rithmes (récursivité, algorithmes gloutons, etc.), Algorithmes de recherche et
d'extraction de l'information, Algorithmes de tri classiques, Introduction aux
algorithmes parallèles et distribués, Pratique en BASIC/C et Visual Basic 6.0.
Compétences professionnelles CP1, CP2, CP3, CP7, CP9, IN1, IN2, IN3
et disciplinaires visées :
Approches pédagogiques : Activités pratiques au laboratoire, Ateliers et exposés magistraux, Travaux
individuels ou équipe, Learning Lab.
Modalités d’évaluation : Evaluation continue et formative. Au moins la moitié des travaux des étu-
diants doivent être supervisés (travaux dirigés en classe).
Page | 1
Institut Supérieur Pédagogique
PLAN DE COURS
INF202 – Algorithmique et structures des données
Semestre 3
Année académique 2021 – 2022
Code Google classroom : rsy6he3
Coordonnées du titulaire
Ruffin-Benoît M. NGOIE, PhD.
Email : [email protected]
Téléphone : +243(0) 89 71 11 489
Disponibilités
Sur rendez-vous uniquement, par téléphone ou par courriel. Le courriel est préférablement le
meilleur moyen de me joindre. Sauf en cas d’extrême urgence, je n’accepte pas de SMS, ni
des messages ou voice des réseaux sociaux. C’est plus simple de m’envoyer un courriel et de
prendre rendez-vous si besoin.
Page | 1
Ce cours obligatoire s’adresse à tous les étudiants de premier cycle en Informatique toutes men-
tions confondues. Il exige comme préalable la maîtrise du premier cours d’algorithmique
(INF104) et de la programmation (INF104 et INF20). Il est un préalable pour la maîtrise de la
programmation orientée-objet. L’étudiant devra faire montre de la capacité d’analyse rigou-
reuse et méthodique.
Page | 2
Descripteur du cours
Page | 3
Calendrier des activités pédagogiques
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 1 Présentation du cours et vue d’en- Situer le cours dans le programme et dans Design pédagogique Exercices en classe (évaluation con-
semble la formation. tinue)
Exposé magistral interactif Cormen, T., Leiserson, C., Rivest, R., and Stein, C.
Introduction à l’algorithmique Formaliser son raisonnement. Introduction à l’algorithmique – Cours et exercices.
Définition des concepts 2ème édition, Dunod, Paris, 2004.
Analyser un problème dans le but d’y trou-
ver une solution informatique. (Disponible en numérique chez l’enseignant)
Séance 2 Introduction aux graphes Modéliser un algorithme en respectant une Exposé magistral interactif. Cormen, T., Leiserson, C., Rivest, R., and Stein, C. TD1 :
convention textuelle ou graphique. Introduction à l’algorithmique – Cours et exercices.
Définition 2ème édition, Dunod, Paris, 2004. Lire (Cormen et al., 2004 : 513-516)
Typologie Manipuler des structures de données com- et (West, 2002 : 1-7) pour préparer
Problèmes plexes. West, D. B. Introduction to graph theory. 2nd edi- la séance 3.
tion, Pearson education, India, 2002.
Implémenter un algorithme à l’aide d’un Déterminer le degré entrant, le degré
langage de programmation. Erciyes, K. Guide to graph algorithms – Sequential, sortant et le degré de chaque sommet
parallel and distributed. Springer, Switzerland, d’un graphe donné. Rédiger un algo-
2018. rithme en respectant les conventions
et traduire dans un langage de pro-
Bretto, A., Faisant, A., Hennecart, F. Eléments de grammation au choix (QB ou PAS-
théorie des graphes. Springer, France, 2012. CAL). A renvoyer sur Google
classroom au plus tard la veille de
séance 3.
Séance 3 Introduction aux graphes (suite) Modéliser un algorithme en respectant une Pédagogie inversée, Exposé Cormen, T., Leiserson, C., Rivest, R., and Stein, C. Exercices en classe (évaluation con-
convention textuelle ou graphique. magistral interactif, Buzz Introduction à l’algorithmique – Cours et exercices. tinue)
Problèmes de parcours group. 2ème édition, Dunod, Paris, 2004.
Problèmes de couplage Manipuler des structures de données com- TP1 :
Coloration plexes. West, D. B. Introduction to graph theory. 2nd edi-
tion, Pearson education, India, 2002. Implémenter les algorithmes de
Implémenter un algorithme à l’aide d’un Kruskal, de Dijkstra et de Welsh-Po-
langage de programmation. Sache, A. La théorie des graphes. « Que sais-je ? », wel en QB. Le travail est à rendre au
PUF, Paris, 1974. plus tard à la veille de la séance 6
(sur Google classroom).
Jungnickel, D. Graphs, Networks and algorithms.
Springer, Berlin Heidelberg, 2005.
Page | 4
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 4 Introduction aux graphes (suite) Modéliser un algorithme en respectant une Exposé magistral interactif, Cormen, T., Leiserson, C., Rivest, R., and Stein, C. Exercices en classe (évaluation con-
convention textuelle ou graphique. Buzz group. Introduction à l’algorithmique – Cours et exercices. tinue).
Mariages stables 2ème édition, Dunod, Paris, 2004.
Flots Manipuler des structures de données com-
plexes. West, D. B. Introduction to graph theory. 2nd edi-
tion, Pearson education, India, 2002.
Implémenter un algorithme à l’aide d’un
langage de programmation. Sache, A. La théorie des graphes. « Que sais-je ? »,
PUF, Paris, 1974.
Jungnickel, D. Graphs, Networks and algorithms.
Springer, Berlin Heidelberg, 2005.
Séance 5 Fondamentaux sur le langage Py- Implémenter un algorithme à l’aide d’un Laboratoire, Exposé magistral Casamayou-Boucau, A., Chauvin, P. and Connan, Bricollage au laboratoire, exercices
thon langage de programmation. interactif, Pédagogie du bi- G. Programmation en Python pour les mathéma- pratiques et analyses des pseudo-
douillage, Learning lab. tiques. 2ème édition, Dunod, Paris, 2016. codes et codes.
Hetland, M. L. Python algorithms, Mastering basic
algorithms in the Python language. Apress, New-
York, 2010.
Mueller, J. P. Beginning programming with Python,
for dummies. 2nd edition, John Wiley and Sons,
USA, 2018.
Swimmen, G. Apprendre à programmer avec Py-
thon. Eyrolles, Paris, 2009.
Ziadé, T. Programmation Python, Conception et op-
timisation. 2ème édition, Eyrolles, Paris, 2009.
Séance 6 Discussions, mises au point et ob- Implémenter un algorithme à l’aide d’un Laboratoire, Exposé magistral Teghem, J. Recherche Opérationnelle. Tome 1 : Mé- TD2 :
servations sur le TP1 langage de programmation. interactif, Pédagogie du bi- thodes d'optimisation. Ellipses, Paris, 2012.
douillage, Learning lab. Lire les notes de cours mises en ligne
Problème de transport Balakrishnan, V.K. Theory and problems of graph sur Google classroom et préparer la
Problème d’affectation theory. Schaum’s outlines series, McGrawHill, séance 7. Répondre aux questions en
USA, 1997. ligne au plus tard la veille de la
séance 7.
TP2 :
Implémenter les algorithmes de
Coin Nord-Ouest, Moindres coûts,
Balas-Hammer et Khun-Munkres en
Python. A rendre au plus tard la
veille de la séance 9.
Page | 5
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 7 Problème de transport Implémenter un algorithme à l’aide d’un Classe inversée, Buzz group, Cormen, T., Leiserson, C., Rivest, R., and Stein, C. Exercices en classe (évaluation con-
Problème d’affectation langage de programmation. Exposé magistral. Introduction à l’algorithmique – Cours et exercices. tinue).
2ème édition, Dunod, Paris, 2004.
Vérifier le bon fonctionnement d’un pro-
gramme. Teghem, J. Recherche Opérationnelle. Tome 1 : Mé-
thodes d'optimisation. Ellipses, Paris, 2012.
Respecter des normes et des standards de
programmation.
Séance 8 Complexité algorithmique Formaliser son raisonnement. Exposé magistral interactif. Cormen, T., Leiserson, C., Rivest, R., and Stein, C. Exercices en classe (évaluation con-
Etude de complexité Introduction à l’algorithmique – Cours et exercices. tinue).
Analyser un problème dans le but d’y trou- 2ème édition, Dunod, Paris, 2004.
ver une solution informatique. TD3 :
Teghem, J. Recherche Opérationnelle. Tome 1 : Mé-
Elaborer une solution formelle (algorith- thodes d'optimisation. Ellipses, Paris, 2012. Etudier la complexité de l’algo-
mique) à un problème. rithme de Welsh-Powel pour la colo-
Karumanchi, N. Data structures and algorithmic ration d’un graphe de n sommets. A
Manipuler des structures de données com- thinking with Python. CareerMonk Publications, rendre au plus tard sur la plateforme
plexes. Bombay, 2016. Google classroom la veille de la
Vérifier le bon fonctionnement d’un pro- séance 9.
gramme.
.
Séance 9 Correction de TD3 Formaliser son raisonnement. Exposé magistral interactif. Cormen, T., Leiserson, C., Rivest, R., and Stein, C. TD4 :
Discussions et mise au point Introduction à l’algorithmique – Cours et exercices.
Analyser un problème dans le but d’y trou- 2ème édition, Dunod, Paris, 2004. Lire (Cormen et al., 2004 : 933 –
ver une solution informatique. 945) ainsi que différents documents
Teghem, J. Recherche Opérationnelle. Tome 1 : Mé- sur Internet sur les classes de com-
Elaborer une solution formelle (algorith- thodes d'optimisation. Ellipses, Paris, 2012. plexité (privilégier les vidéos You-
mique) à un problème. tube). Préparer un exposé à remettre
Karumanchi, N. Data structures and algorithmic sur Google classroom au plus tard la
Manipuler des structures de données com- thinking with Python. CareerMonk Publications,
plexes. veille de la séance 10.
Bombay, 2016.
Vérifier le bon fonctionnement d’un pro-
gramme.
Page | 6
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 10 Classes de complexité Formaliser son raisonnement. Classe inversée, Exposé magistral Cormen, T., Leiserson, C., Rivest, R., and Stein, Exercices en classe (évaluation con-
Classe P interactif. C. Introduction à l’algorithmique – Cours et exer- tinue).
Analyser un problème dans le but d’y cices. 2ème édition, Dunod, Paris, 2004.
Classe NP trouver une solution informatique.
Conjecture P=NP ? Erciyes, K. Guide to graph algorithms – Sequen-
tial, parallel and distributed. Springer, Swit-
zerland, 2018.
Séance 11 Algorithmes gloutons Formaliser son raisonnement. Exposé magistral interactif. Cormen, T., Leiserson, C., Rivest, R., and Stein, Exercices en classe (évaluation con-
Récursivité C. Introduction à l’algorithmique – Cours et exer- tinue).
Analyser un problème dans le but d’y cices. 2ème édition, Dunod, Paris, 2004.
Programmation dynamique trouver une solution informatique.
Ngoie, R.-B. M, Mpemba, L.N. Complexity study
Elaborer une solution formelle (algorith- on Fibonacci’s sequence. International Journal of
mique) à un problème. Scientific and Innovative Mathematical Research,
Respecter des normes et des standards de 3(10) : 5-13, 2015.
programmation.
Séance 12 Problème de tri Formaliser son raisonnement. Exposé magistral interactif Cormen, T., Leiserson, C., Rivest, R., and Stein, TD5 :
C. Introduction à l’algorithmique – Cours et exer-
Analyser un problème dans le but d’y cices. 2ème édition, Dunod, Paris, 2004. Implémenter les différents algo-
trouver une solution informatique. rithmes de tri en Python. L’utilisa-
Hubbard, J.R. Structures de données en Java. Du- tion de l’internet est autorisée. Ce
Elaborer une solution formelle (algorith- nod, Paris, 2005. travail se fait en classe.
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 13 Algorithmes probabilistes Formaliser son raisonnement. Exposé magistral interactif. Mitzenmacher, M., and Upfal, E. Probability and TD6 :
computing. 2nd edition, Cambridge university
Analyser un problème dans le but d’y press, 2017. Préparer les exposés à présenter à
trouver une solution informatique. partir de la séance 14.
Elaborer une solution formelle (algorith- Algorithmes numériques, Sher-
mique) à un problème. wood, Monte-Carlo, Las Vegas,
Graphe aléatoire, Générateurs
Respecter des normes et des standards de pseudo-aléatoires, Expérience de
programmation. Georges Louis Leclerc. S’appuyer
sur les vidéos Youtube pour avoir
une version simplifiée des présen-
tations.
Page | 7
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 14 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 15 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 16 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 17 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 18 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Page | 8
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 19 Exposés sur les algorithmes pro- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
babilistes aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Séance 20 Introduction aux automates et Formaliser son raisonnement. Exposé magistral interactif. - TP3 :
machine de Turing
Analyser un problème dans le but d’y Exposer sur la théorie de Turing.
trouver une solution informatique. Etablir un lien entre cette théorie et
celle des langages formels établie
Elaborer une solution formelle (algorith- par Chomsky. Exposé à rendre sur la
mique) à un problème. plateforme Google classroom au
Respecter des normes et des standards de plus tard la veille de la séance 23.
programmation.
Séance 21 Parallélisme et distribution Formaliser son raisonnement. Exposé magistral interactif. Erciyes, K. Guide to graph algorithms – Sequen- TD7 :
Exposé introductif tial, parallel and distributed. Springer, Swit-
Analyser un problème dans le but d’y zerland, 2018. Préparer les exposés à présenter à
trouver une solution informatique. partir de la séance 22.
Trobec, R., Slivnik, B., Bulic, P., Robic, B. Intro-
duction to parallel computing. Springer, Swit- Taxonomie de Flynn, Ordinateurs
zerland, 2018. SISD, SIMD, MISD, MIMD, Sys-
tèmes distribués, PRAM, Com-
Gebali, F. Algorithms and parallel computing. Wi- plexité computationnelle parallèle,
ley & sons, New-Jersey, 2011. Théorème de Brent, Loi de Amdhal,
loi de Gustafson-Barsis, Processus
MPI, Parallélisation des boucles.
Séance 22 Exposés sur la programmation Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
parallèle et distribuée aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Séance 23 Exposés sur la programmation Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
parallèle et distribuée aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Page | 9
Séance Contenu Objectifs Activités pédagogiques Références Travaux de l’étudiant
Séance 24 Exposés sur la programmation Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
parallèle et distribuée aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Séance 25 Exposés sur la programmation Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
parallèle et distribuée aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Séance 26 Discussion et mise au point sur Formaliser son raisonnement. Exposé magistral interactif. - Jeux de questions réponses et exer-
les exposés cices.
Analyser un problème dans le but d’y
trouver une solution informatique.
Elaborer une solution formelle (algorith-
mique) à un problème.
Respecter des normes et des standards de
programmation.
Séance 27 Exposés sur les machines de Tu- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
ring aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Séance 28 Exposés sur les machines de Tu- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
ring aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Séance 29 Exposés sur les machines de Tu- Formaliser son raisonnement. Buzz group. - Exposés en groupe et participation
ring aux activités.
Analyser un problème dans le but d’y
trouver une solution informatique.
Séance 30 Evaluation et auto-évaluation Evaluer l’efficacité de l’action pédago- Panel de discussion - Participation au débat.
gique
Page | 10
Description des travaux pratiques et critères de correction
Implémenter des algorithmes sur les graphes en QB
Etudier chacun des algorithmes vus au cours avec minutie. Ensuite, les traduire en pseudocodes
puis en QB, recopier les codes dans un fichier texte et, enfin, envoyer ledit fichier sur la plate-
forme Google Classroom. Ce travail est à rendre après 2 semaines.
Critères d’évaluation : Syntaxe du QB bien respecté, correction du code, élégance dans le
style du programmeur, documentation du code (présence des commentaires).
Page | 11
Pénalités sur les travaux
Aucun retard dans la remise des travaux n’est permis. Tout travail pratique remis en retard est
sujet à une pénalité. La note sera réduite de 25% pour chaque jour de retard. En conséquence,
la note attribuée après 3 jours de retard sera zéro. Si l’étudiant n’a pas pu terminer le travail à
temps, il devra le notifier au Professeur par courrier électronique.
Mini-tests
Les mini-tests sont des tests comprenant des questions à développement court. Leur durée est
d’au plus 20 minutes. En considération des objectifs du cours et des compétences visées, des
restrictions peuvent être imposées sur l’usage ou non des calculateurs.
Examen final
L’examen final interviendra à la fin du semestre. Il comprend des questions à développement
court et des questions à développement long. Sa durée est d’au plus deux heures. Aucune do-
cumentation n’est permise. Par contre, l’usage des calculateurs électroniques est autorisé.
Document obligatoire
Les notes de cours (syllabus) sont disponibles en ligne sur la plateforme Google Classroom.
Des documents supplémentaires peuvent être fournis sur demande des étudiants ou quand le
besoin s’impose.
Plagiat
Un document dont le texte et la structure se rapportent à des textes intégraux tirés d'un livre,
d'une publication scientifique ou même d'un site Internet, doit être référencé adéquatement.
Lors de la correction de tout travail individuel ou de groupe une attention spéciale sera portée
au plagiat, défini comme « le fait, dans une activité pédagogique évaluée, de faire passer indû-
ment pour siens des passages ou des idées tirées de l’œuvre d'autrui. »
Est aussi considéré comme plagiat « tout acte ou manœuvre visant à tromper quant au rende-
ment scolaire ou quant à la réussite d'une exigence relative à une activité pédagogique. » À titre
de sanction disciplinaire, les mesures suivantes peuvent être imposées:
Page | 12
a) Obligation de reprendre un travail, un examen ou une activité pédagogique et
b) Attribution de la note 0 pour un travail, un examen ou une activité évaluée.
Tout travail suspecté de plagiat sera référé au chargé de l'enseignement du département d’In-
formatique.
Bibliographie
Balakrishnan, V.K. Theory and problems of graph theory. Schaum’s outlines series, McGrawHill, USA, 1997.
Bretto, A., Faisant, A., Hennecart, F. Eléments de théorie des graphes. Springer, France, 2012.
Casamayou-Boucau, A., Chauvin, P. and Connan, G. Programmation en Python pour les mathématiques. 2 ème édition, Dunod,
Paris, 2016.
Cormen, T., Leiserson, C., Rivest, R., and Stein, C. Introduction à l’algorithmique – Cours et exercices. 2ème édition, Dunod,
Paris, 2004.
Erciyes, K. Guide to graph algorithms – Sequential, parallel and distributed. Springer, Switzerland, 2018.
Gebali, F. Algorithms and parallel computing. Wiley & sons, New-Jersey, 2011.
Hetland, M. L. Python algorithms, Mastering basic algorithms in the Python language. Apress, New-York, 2010.
Hubbard, J.R. Structures de données en Java. Dunod, Paris, 2005.
Karumanchi, N. Data structures and algorithmic thinking with Python. CareerMonk Publications, Bombay, 2016.
Mitzenmacher, M., and Upfal, E. Probability and computing. 2 nd edition, Cambridge university press, 2017.
Mueller, J. P. Beginning programming with Python, for dummies. 2 nd edition, John Wiley and Sons, USA, 2018.
Ngoie, R.-B. M, Mpemba, L.N. Complexity study on Fibonacci’s sequence. International Journal of Scientific and Innovative
Mathematical Research, 3(10) : 5-13, 2015.
Sache, A. La théorie des graphes. « Que sais-je ? », PUF, Paris, 1974.
Swimmen, G. Apprendre à programmer avec Python. Eyrolles, Paris, 2009.
Teghem, J. Recherche Opérationnelle. Tome 1 : Méthodes d'optimisation. Ellipses, Paris, 2012.
Trobec, R., Slivnik, B., Bulic, P., Robic, B. Introduction to parallel computing. Springer, Switzerland, 2018.
West, D. B. Introduction to graph theory. 2nd edition, Pearson education, India, 2002.
Ziadé, T. Programmation Python, Conception et optimisation. 2 ème édition, Eyrolles, Paris, 2009.
Page | 13