Informatique théorique 2 et Programmation 2

Informations

Langue d'enseignement : Français
Crédits ECTS: 6

Programme

  • Heures d'enseignement dispensées à l'étudiant : 60 heures
  • Temps de travail personnel : 90 heures

Objectifs et compétences

Objectifs :
Info théorique :

Après avoir rappelé les notions de complexité, on introduit la notion de type abstrait de données (TaD) la notion de signatures et d'axiomes permettant de définir le comportement d'une nouvelle structure de données. Illustration au travers d'exemples classiques de « containers ». On aborde ensuite les arbres et on étudie les différents parcours d'arbre binaire, puis on étudie les « arbres binaires de recherche ». Le dernier chapitre est une introduction à la théorie des graphes, en se focalisant sur les graphes non orientés, on voit rapidement les notions usuelles avant de s'intéresser à quelques démonstrations classiques.

A l'issue de cet enseignement l'étudiant doit maitriser la notion de Structures de données complexes et les bonnes pratiques afin de s'assurer de leurs comportements adéquats. Il devra savoir manipuler des concepts et raisonnement sur des propriétés abstraites.

Programmation :

L’objectif de l’UE est d’initier les étudiants à la programmation et à l’utilisation d’un environnement de développement. Depuis les deux contractualisations précédentes de la Licence MIASHS, nous avons pris l’option d’utiliser un langage de programmation unique pour l’ensemble des UE incluant de la programmation (aussi bien en informatique que pour certaines UE de mathématiques appliquées). En l’occurrence il s’agit du langage Python, qui présente l’avantage d’avoir une syntaxe simple et particulièrement pédagogique, et qui est d’ailleurs de plus en plus utilisé comme langage d’initiation dans l’enseignement supérieur. Le retour d'expérience de ce choix est extrêmement positif, et nous encourage à le péréniser pour l'accréditation à venir.

Programme : Cette UE de "Programmation 2" se focalise sur le paradigme de "programmation par objets", et vient donc naturellement compléter les notions de "programmation impérative", abordés en première années, dans l'UE "Programmation 1". Comme pour la précédente, le contenu de l'enseignemetn va suivre en grande partie le livre de Gérard Swinnen (cf. référence ci-dessous) qui est librement téléchargeable sur Internet et reprend un par un, les éléments constitutifs de tous les langages par objets : classe, objet, attributs, méthodes, accesseurs, encapsulation, héritage, polymorphisme. Une introduction à la modélisation UML est aussi effectuée, qui permettra d'introduire les notions de base de conception et d'architecture pour les futurs projets de développement informatique.

* Gérard Swinnen, Apprendre à programmer en Python, Eyrolles (www.inforef.be/swi/python.htm)

Durant les 6 premières semaines de l'UE, les aspects théoriques abordés en cours sur UML et sur le paradigme objet, donnent lieu à des exercices classiques de mise en oeuvre en travaux dirigés. Par contre, les 6 semaines de la seconde partie du semestre, sont entièrement consacrées à un projet tutoré réalisé en binôme, qui donnera lieu à une séance de présentation finale à l'arrivée. Les séances de "suivi de code" durant ce projet tutoré permet d'orienter chaque binôme sur la conception, l'architecture puis l'implémentation du code, en identifiant les outils qualitatifs standards pour le développement (modélisation par UML, outil de débogage, tests unitaires, etc). En particulier, on donnera une grande importance à la séparation entre le noyau et l'interface lors de ce développement logiciel, en imposant deux interfaces (l'une en mode texte, l'autre en mode graphique) qui devront s'appuyer sur le même noyau.

Compétences acquises : Les notions vues dans ce module permettent aux étudiants de réaliser un mini-projet de programmation orientée objet qui se déroule sur la seconde moitié du semestre. Différents sujets de projets de difficulté variable sont proposés aux étudiants qui effectuent le choix en fonction de leur aisance dans le domaine de la programmation.

Compétences :
  • Établir son portefeuille d'expériences et de compétences ou son e-porfolio, savoir rédiger un curriculum vitae et une lettre de motivation ; savoir préparer un entretien, se présenter dans différentes circonstances, et valoriser ses compétences et ses expériences par écrit et oralement.
  • Être en capacité d'investir ses connaissances et aptitudes dans le cadre d'une mise en situation professionnelle.
  • Travailler en équipe dans différents contextes, y compris avec des personnes issues de disciplines différentes : s'intégrer, se positionner, collaborer, communiquer et rendre compte.

  • Maîtriser l'expression écrite et orale de la langue française et ses techniques d'expression
  • Identifier et sélectionner diverses ressources spécialisées pour documenter un sujet
  • Développer une argumentation avec esprit critique
  • Etre capable de travailler en équipe
  • Maîtriser l'environnement numérique de travail, découvrir et utiliser l'ensemble des outils mis à disposition des étudiants par l'université
  • Penser la complexité et la pluridisciplinarité

  • Mettre en œuvre des outils mathématiques et informatiques pour des applications relevant du domaine des sciences cognitives, de l’économie et de la gestion.
  • Construire et rédiger une démonstration mathématique rigoureuse
  • Mobiliser des concepts mathématiques pour modéliser, analyser et résoudre des problèmes simples de façon déterministe ou stochastique dans les domaines des sciences cognitives, d'économie et de gestion.
  • Mettre en œuvre des techniques de programmation (objet) dans des langages de calcul comme scilab, R, python.
  • Mettre en œuvre des outils mathématiques et informatiques pour des applications relevant du domaine des sciences cognitives, de l’économie et de la gestion.
  • Etre capable de traduire un modèle mathématique en une maquette logicielle fonctionnelle, dans les domaines des sciences cognitives, d'économie et de gestion.
  • Maîtriser les concepts de base des architectures logicielles, aussi bien pour les langages de programmation modulaires que pour les langages par objets.

Organisation pédagogique

le mode de fonctionnement de l'UE est présenté au début des enseignements

Contrôle des connaissances

Session 1:

Info théorique 2 (1/2): CC (1/6) + examen final 1h30 (1/3)

Programmation 2 (1/2) : CC (1/6) + Examen final 1h30 (1/3)

Session 2:

Info Théorique 2 (1/2): examen final 1h30 (1/2)

Programmation 2 (1/2): Max (Exam sess. 2 (1h30), 2/6* exam sess. 2 + 1/6* CC sess. 1)

Lectures recommandées

l'ensemble des références bibliographiques est communiqué au début des enseignements

Responsable de l'unité d'enseignement

Marc-Michel Corsini

Enseignants

la composition de l'ensemble de l'équipe pédagogique est communiquée au début des enseignements