{"id":484,"date":"2026-01-06T10:13:33","date_gmt":"2026-01-06T08:13:33","guid":{"rendered":"https:\/\/members.loria.fr\/EKerrien\/?page_id=484"},"modified":"2026-01-06T11:23:18","modified_gmt":"2026-01-06T09:23:18","slug":"initdev","status":"publish","type":"page","link":"https:\/\/members.loria.fr\/EKerrien\/initdev\/","title":{"rendered":"Initiation au D\u00e9veloppement"},"content":{"rendered":"<p>Les supports propos\u00e9s sur ce site correspondent \u00e0 l&#8217;enseignement Initiation au D\u00e9veloppement, qui correspond \u00e0 la ressource R1.01 du PPN des IUT en informatique. La partie du cours que j&#8217;enseigne propose une introduction aux structures de donn\u00e9es et les algorithmes de base qui y sont associ\u00e9s. L&#8217;ordre suivi ici reproduit celui suivi en cours: la logique suit une pr\u00e9sentation formelle des notions en cours magistral (2h), suivi d&#8217;une premi\u00e8re manipulation en TD (2h) o\u00f9 les algorithmes sont \u00e9crits en pseudo-langage algorithmique, et enfin un ou deux TP (4h) pour les impl\u00e9menter en C. Les premiers TD et TP correspondent \u00e0 des cours magistraux donn\u00e9s par mon coll\u00e8gue Abdel Bourjij.<\/p>\n<p>Je ne rends bien \u00e9videmment pas disponibles les corrig\u00e9s des TD et TP, mais vous pouvez me contacter si vous d\u00e9sirez y avoir acc\u00e8s. De m\u00eame, je ne fournis ici que les versions pdf des supports de cours, mais je peux fournir sur demande les versions odp comprenant les animations.<\/p>\n<div class=\"content\">\n<h3 class=\"sectionname\">TD1 et 2 : Algorithmes de base<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<ul>\n<li><a href=\"\/EKerrien\/files\/data\/DEV_TD1.pdf\">Texte du TD #1<\/a> sur les premi\u00e8res \u00e9critures d&#8217;algorithmes en pseudo-langage avec les fonctions d&#8217;entr\u00e9e-sortie de base, les tests et la manipulation d&#8217;entiers.<\/li>\n<li><a href=\"\/EKerrien\/files\/data\/DEV_TD2.pdf\">Texte du TD #2<\/a> sur les boucles, et la manipulation de r\u00e9els. Seule la boucle while est autoris\u00e9e.<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">CM4 : Rappels sur complexit\u00e9, types abstraits de donn\u00e9es et tableaux<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_CM4.pdf\">Supports du cours #4<\/a> o\u00f9 sont faits ce qui sont essentiellement des rappels sur la notion de complexit\u00e9 &#8212; en particulier complexit\u00e9 poynomiale en temps &#8211;, une br\u00e8ve introduction aux types abstraits de donn\u00e9es, pour finir sur les tableaux &#8212; en particulier l&#8217;impact sur la m\u00e9moire de l&#8217;utilisation (cr\u00e9ation, modification, destruction) d&#8217;une variable tableau en m\u00e9moire.<\/div>\n<\/div>\n<h3 class=\"sectionname\">TD5 : Complexit\u00e9 et tableaux<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_TD5.pdf\">Texte du TD #5<\/a> abordant la complexit\u00e9 via des algorithmes de comptage, et proposant quelques exercices de manipulation de tableaux.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TD7 et 8 : Fonctions et r\u00e9cursivit\u00e9<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_TD0708.pdf\">Texte des TD #7 et 8<\/a> introduisant aux fonctions, et proposant quelques exercices sur la r\u00e9curvist\u00e9.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TP13-14 : Pointeurs en C<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_TP_pointeurs.pdf\">Enonc\u00e9 du TP<\/a> sur les pointeurs en C, passage par variable, passage d&#8217;arguments \u00e0 un programme, fonctions d&#8217;entr\u00e9e sortie standard et dans les fichiers. Ce TP se base sur un ensemble de <a href=\"\/EKerrien\/files\/data\/TP_pointeurs.zip\">fichiers de code source \u00e0 t\u00e9l\u00e9charger<\/a>.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">CM5 : Listes cha\u00een\u00e9es et consorts<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_CM5.pdf\">Supports du cours #5<\/a>. Les listes r\u00e9cursives sont introduits comme type abstrait de donn\u00e9es et leur impl\u00e9mentation en tant que listes cha\u00een\u00e9es, ainsi que les variantes classiques de liste doublement cha\u00een\u00e9e, liste circulaire, pile et file sont expos\u00e9s. Les algorithmes fondamentaux qui y sont associ\u00e9s sont d\u00e9crits et analys\u00e9s en termes de complexit\u00e9, ce qui permet une comparaison avec les tableaux. La session se termine sur une activit\u00e9 d\u00e9branch\u00e9e sur les listes cha\u00een\u00e9es r\u00e9alis\u00e9e en amphi.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TD9 et 10 : Listes cha\u00een\u00e9es<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<p><a href=\"\/EKerrien\/files\/data\/DEV_TD0910.pdf\"><span class=\"autolink\">Enonc\u00e9 des TD11 et 12<\/span><\/a> portant sur l&#8217;implantation d&#8217;une liste r\u00e9cursive au moyen d&#8217;une liste cha\u00een\u00e9e. Algorithmes de base sur cette structure.<\/p>\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TP18 et 19 : les structures en C<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<p><a href=\"\/EKerrien\/files\/data\/DEV_TP_structures.pdf\">Enonc\u00e9 des TP<\/a> sur les structures en C : apr\u00e8s une premi\u00e8re pr\u00e9sentation et manipulation d&#8217;une structure encodant un temps, on demande la structure et l&#8217;implantation des op\u00e9rations de la sorte Liste R\u00e9curvise vue en cours. Les <a href=\"\/EKerrien\/files\/data\/TP_structures.zip\">fichiers des codes source<\/a> mentionn\u00e9s sont \u00e0 t\u00e9l\u00e9charger.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TP20 et 21 : listes cha\u00een\u00e9es<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<p><a href=\"\/EKerrien\/files\/data\/DEV_TP_listes.pdf\">Enonc\u00e9 des TP<\/a> sur les listes cha\u00een\u00e9es : nous nous basons sur l&#8217;implantation de la sorte Liste R\u00e9curvise faite au TP pr\u00e9c\u00e9dent et implantons tous les algorithmes associ\u00e9s que nous avons vu lors des TD9 et 10. Les <a href=\"\/EKerrien\/files\/data\/TP_listes.zip\">fichiers des codes source<\/a> contiennent une implantation de la sorte Liste R\u00e9cursive (correction du TP pr\u00e9c\u00e9dent) et sont \u00e0 t\u00e9l\u00e9charger.<\/p>\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">CM6 : Arbres binaires, arbres binaires de recherche, tables de hachage<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_CM6.pdf\">Support du CM#6<\/a> o\u00f9 sont introduits les arbres binaires, arbres binaires de recherche, arbres \u00e9quilibr\u00e9s, et les tables de hachage.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TD15 : arbres binaires<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/DEV_TD15.pdf\">Enonc\u00e9 du TD15<\/a> portant sur les arbres binaires, et les arbres binaires de recherche.\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TP27 et 28 : abres binaires de recherche<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<p><a href=\"\/EKerrien\/files\/data\/DEV_TP_abr.pdf\">Enonc\u00e9 des TP<\/a> sur les arbres binaires de recherche. Cette session se fait sous forme de live coding sous VSCode, ce qui permet de pr\u00e9senter une approche analytique pour aborder ce genre de probl\u00e8mes, mais \u00e9galement quelques trucs permettant de tester rapidement et de mani\u00e8re incr\u00e9mentale son code, et enfin expliquer par des exemples ce qu&#8217;on entend par &#8220;bon commentaire&#8221;. Le TP a pour objectif de stocker dans un arbre binaire de recherche les donn\u00e9es du <a href=\"\/EKerrien\/files\/data\/nomprenom_2223.csv\">fichier CSV de noms de pr\u00e9noms<\/a> qui est \u00e0 t\u00e9l\u00e9charger.<\/p>\n<\/div>\n<\/div>\n<h2>Situation d&#8217;Apprentissage et d&#8217;\u00c9valuation (SA\u00c9)<\/h2>\n<p>Deux SA\u00c9 sont attach\u00e9es \u00e0 cette ressource: SA\u00c91.01 (comparaison d&#8217;approches algorithmiques) et SA\u00c91.02 (impl\u00e9mentation d&#8217;un besoin client). Nous avons choisi de m\u00e9langer les deux SA\u00c9, tout en gardant deux rendus de projets. Je suis donc responsable d&#8217;un de ces deux projets pour lequel j&#8217;ai imagin\u00e9s deux sujets que je propose par alternance.<\/p>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<ul>\n<li><a href=\"\/EKerrien\/files\/data\/hugeCSV.pdf\">Naissance multiples<\/a>: l&#8217;objectif est de stocker en m\u00e9moire les donn\u00e9es contenues dans un \u00e9norme fichier CSV, le fichier des pr\u00e9noms des enfants n\u00e9s depuis 1900 en France, par d\u00e9partement (3.9 millions de lignes). Il s&#8217;agit de choisir et d&#8217;implanter la structure de donn\u00e9es la plus adapt\u00e9e afin de 1) minimiser les informations stock\u00e9es en m\u00e9moire; et 2) permettre des requ\u00eates les plus rapides possibles.<\/li>\n<li><a href=\"\/EKerrien\/files\/data\/WorldOfIUT.pdf\">World of IUT<\/a>: l&#8217;objectif est de faire une impl\u00e9mentation sommaire d&#8217;un jeu d&#8217;aventure textuelle permettant de se d\u00e9placer dans un monde fait de cases adjacentes. La manipulation de pointeurs est fortement requise, et une implantation \u00e9l\u00e9mentaire d&#8217;un graphe est implicitement demand\u00e9e. Un <a href=\"\/EKerrien\/files\/data\/WorldOfIUT.zip\">code source initial<\/a> est fourni afin pour d\u00e9marrer le projet et lui donner la bonne dimension.<\/li>\n<\/div>\n<\/div>\n<h2>Archives<\/h2>\n<p>Ce cours fait suite au module APL2 (Algorithmique, Programmation et Langage niveau 2) de l&#8217;ancien programme des IUT. Certains cours ont disparu avec la nouvelle mouture, mais je les conserve ici pour m\u00e9moire.<\/p>\n<h3 class=\"sectionname\">TP1 : Tutoriel d&#8217;introduction \u00e0 C<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/APL2_TP1.pdf\">Enonc\u00e9 du TP1<\/a> donnant une introduction rapide au langage C. Le cours repose sur l&#8217;hypoth\u00e8se que vous savez d\u00e9j\u00e0 programmer en Python.<\/p>\n<\/div>\n<\/div>\n<h3 class=\"sectionname\">TP7 et 9 : k-d trees<\/h3>\n<div class=\"summary\">\n<div class=\"no-overflow\">\n<a href=\"\/EKerrien\/files\/data\/APL2_TP79.pdf\">Enonc\u00e9<\/a> couvrant les deux derni\u00e8res sessions de TP (4h) ayant pour but d&#8217;implanter des k-d trees en 2D, ainsi que la fonction de recherche du point le plus proche. Le TP7 met en place les outils utiles (lecture de fichiers de points, tri en C), et permet de faire un rappel des notions de C. Le TP9 porte sur la programmation effective en C d&#8217;un k-d tree et de la recherche du plus proche voisin. Ce TP \u00e9tendu est l&#8217;occasion de passer en revue tout ce qui a \u00e9t\u00e9 vu en APL2.<\/p>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Les supports propos\u00e9s sur ce site correspondent \u00e0 l&#8217;enseignement Initiation au D\u00e9veloppement, qui correspond \u00e0 la ressource R1.01 du PPN des IUT en informatique. La partie du cours que j&#8217;enseigne propose une introduction aux structures de donn\u00e9es et les algorithmes de base qui y sont associ\u00e9s. L&#8217;ordre suivi ici reproduit celui suivi en cours: la [&hellip;]<\/p>\n","protected":false},"author":31,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-484","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/pages\/484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/users\/31"}],"replies":[{"embeddable":true,"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/comments?post=484"}],"version-history":[{"count":16,"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/pages\/484\/revisions"}],"predecessor-version":[{"id":500,"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/pages\/484\/revisions\/500"}],"wp:attachment":[{"href":"https:\/\/members.loria.fr\/EKerrien\/wp-json\/wp\/v2\/media?parent=484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}