Algorithmique et Programmation 1, 2, 3, 4 et 5
Cet enseignement, réparti sur 5 semestres, permet de voir toutes les bases de l'algorithmique et de la programmation. Les trois premiers semestres, le langage utilisé est Python. Ensuite, le langage est souvent laissé au choix de l'étudiant, en fonction des autres langages qu'il aura étudiés (C, Java, ...). Une large part est laissée aux exercices faits en travaux dirigés ou en travaux pratiques. Chaque semestre, les étudiants réalisent un projet, seul ou en groupe.
Algorithmique et Programmation 1
Semestre 1
L'objectif de cette unité est de faire acquérir aux étudiants des notions et concepts de base de la programmation impérative. Seront abordés :
- les notions de variables et de constantes;
- la séquence;
- les instructions conditionnelles;
- les instructions itératives;
- les fonctions;
- les types composés: listes, tuples et dictionnaires.
Les dernières semaines, en travaux pratiques, les étudiants sont guidés dans la réalisation d'un jeu graphique mettant en oeuvre tous les concepts abordés.
Algorithmique et Programmation 2
Semestre 2
Dans cette unité, les étudiants vont affermir leur capacité à écrire des fonctions simples utilisant les structures de données classiques (listes, tuples, dictionnaires), mais vont aussi aborder la programmation objet avec la notion de classe. Ils étudieront également des structures de données classiques comme les piles, les files, et les listes chaînées, avec une première approche de la récursivité. Une nouvelle librairie graphique sera utilisée (tkinter), et la programmation événementielle sera ainsi étudiée dans le cadre d'un projet.
Algorithmique et Programmation 3
Semestre 3
- Complexité (complexité en meilleur et pire cas, ordres de grandeur)
- Récursivité (récursivité terminale)
- Tris (tri fusion, tri rapide)
- Listes Chaînées
- Arbre Binaire (parcours en profondeur, parcours en largeur,..)
- Arbre Binaire de Recherche (Ajout, suppression, tri par arbre)
- File de priorité, Tas
- Compression de données (Algorithme de Huffman)
- Initiation aux graphes
Algorithmique et Programmation 5
Semestre 5
L'objectif de ce cours, à la suite du cours Algorithmique et programmation 4, est de fournir les outils de base pour la conception et l'analyse d'algorithmes plus avancés. Seront abordés :
- Rappels de complexité et d’outils d’analyse d’algorithmes (itératifs et récursifs)
- Transformations d’algorithmes récursifs en algorithmes itératifs
- Arbres (arbres binaires, arbres binaires de recherche, arbres équilibrés (AVL, arbre 2-3-4 et arbres rouges et noirs)
- Théorie des graphes (parcours, numérotation et descendance, connexité et forte connexité, graphes sans circuits, plus courts chemins,...)
Assembleur
Semestre 4
L'assembleur est le langage le plus proche de la machine. Comprendre ce langage permet d'appréhender finement le fonctionnement d'un programme, comment est organisé un microprocesseur, comment sont réalisés les accès mémoire, les passages de paramètre, ... Au programme :
- Registres
- Jeu d'instructions de base : opérations arithmétiques, booléennes, ...
- Accès mémoires directs, indirects, indexés
- Pile
- Appels de procédures et passages de paramètres
- Interruptions
Bases de données
Semestre 4
L'objectif de cette unité est de faire acquérir aux étudiants des notions et concepts de base des bases de données. Seront abordés :
- notions basiques (tables, identifiants, clés étrangères, contraintes d'intégrité);
- modèle entité-association;
- modèle relationnel;
- langage SQL (LDD, LMD);
- normalisation.
Culture numérique
Les deux unités de culture numérique ont pour objectif de former les étudiants aux compétences numériques indispensables pour la poursuite d'études supérieures et l'insertion professionnelle. Leur programme couvre le référentiel du Certificat Informatique et Internet (C2I) de niveau 1.
Culture numérique 1
Semestre 1
Cette première unité propose une découverte et une prise en main de l'environnement numérique dans lequel les étudiants évoluent ainsi qu'une formation à l'usage d'un premier outil de conception de documents numériques : le tableur.
- Positionnement C2i niveau 1
- Prise en main des services numériques pour l'étudiant : environnement numérique de travail (ENT), webmail, plate-forme pédagogique en ligne
- Travailler dans un environnement numérique évolutif (domaine D1) :
- Organiser un espace de travail complexe
- Sécuriser son espace de travail local et distant
- Tenir compte des enjeux de l’interopérabilité
- Pérenniser ses données
- Tableur (domaine D3)
Culture numérique 2
Semestre 2
Cette seconde unité vise à aller au-delà d'un simple usage d'outils numériques en proposant en particulier une réflexion aux étudiants sur leur pratique des technologies de l'information et de la communication (quelles informations me concernant trouve-t-on sur la toile ? qu'ai-je le droit de faire ou de ne pas faire sur l'internet ? comment effectuer une recherche d'informations efficace ? quelle est la fiabilité des informations que je trouve ? etc.).
- Être responsable à l'ère du numérique (domaine D2)
- traitement de texte (domaine D3)
- présentation assistée par ordinateur (domaine D3)
- Organiser la recherche d’informations à l’ère du numérique (domaine D4)
- Travailler en réseau, communiquer et collaborer (domaine D5)
Décision de groupe et théorie du vote
Semestre 2
Cette unité permet d'illustrer l'utilité des mathématiques pour la modélisation de l'économie et pour la philosophie politique. Nous discutons de la formalisation et de l'étude des procédures de vote et de décision de groupe.
Nous montrons les difficultés inhérentes à la décision de groupe, en particulier qu'il n'existe pas de méthode de vote parfaite
Cette unité permet d'expliquer les procédures de vote, et leurs possibilités de manipulation, et donc de mieux comprendre le comportement de ces méthodes au coeur du fonctionnement de nos démocraties, et leurs potentielles instrumentalisations.
Objectifs:
- Découvrir et comprendre les principales méthodes de vote
- Formaliser la problématique du vote
- Comprendre le théorème d’Arrow et sa démonstration
- Comprendre les différentes possibilités de manipulation
- Modéliser les indices de pouvoir et des problèmes de partage
Initiation aux réseaux
Semestre 1
Ce module présente les bases du fonctionnement des réseaux informatiques, et plus spécifiquement le fonctionnement des protocoles TCP et IP en se focalisant sur les concepts (fonctionnalités des différentes couches, des différents matériels) plus que sur les détails (algorithmes de routages, contenu des trames). Le cours se base sur des exemples de la vie courante, comme par exemple la mise en place et la sécurisation d'un réseau personnel à son domicile derrière une « box ».
Compétences disciplinaires visées :
- Comprendre les bases du cheminement de l'information dans un réseau informatique
- Comprendre les enjeux d'un monde connecté
- Être capable de créer/configurer un réseau local (derrière une « box » par exemple)
Lambda calcul et Programmation fonctionnelle
Semestre 6
L'objectif de cette unité est de faire acquérir aux étudiants des notions et concepts de base de la programmation fonctionnelle. Seront abordés :
- Programmer avec des fonctions
- Types
- Récursivité
- Schéma de programmes
- Lambda calcul
Langage C
Semestre 3
Cette unité constitue une introduction au langage C. On y trouve une présentation des concepts de bases suivants (présentés de manière chronologique) :
- Les types de bases et les variables
- Les entrées/sorties
- Les instructions conditionnelles et les itérations
- Les pointeurs
- Les fonctions
- Allocations dynamiques
- Tableaux à une dimensions
- Tableaux à deux dimensions
- Les chaînes de caractères
- Les structures d’enregistrement simples et récursives
- Les listes chaînées
Ce cous s'appuie sur la norme C ANSI.
Numération et Circuits
Semestre 1
Cette unité développe la représentation des informations sur ordinateurs. On y trouve une présentation des concepts de bases suivants (présentés de manière chronologique) :
- Les systèmes de numérations dans des bases binaires, octales et hexadécimales.
- Description des méthodes de conversions des nombres écrits dans différentes base.
- Les opérations arithmétiques (addition, soustraction, division, multiplication) dans les systèmes binaire et hexadécimal.
- La représentation des nombres négatifs (compléments à 1 et compléments à 2).
- La représentation des nombres réelles en binaire avec une présentation détaillée de la norme IEEE754.
- Une introduction aux circuits logiques combinatoires.
- Simplifications de circuits logiques et tableaux de Karnaugh.
- Une introduction aux circuits logiques séquentielles et les bascules.
Outils Logiques
Semestre 5
Cette unité premet de faire un retour les éléments fondamentaux des mathématiques qui sont les plus utiles à l'informaticien pour formaliser des concepts; modéliser des situations; et abstraire des objets dans le but de raisonner et étudier les propriétés des entités manipulées.
Les concepts suivants seront décortiqués :
- ensembles;
- relations, fonctions et applications;
- relations d'ordre et treillis;
- récursion et induction;
- graphes.
Programmation Orientée Objet
Semestre 4
- Presentation de Java
- Le paradigme objet (Classes, Objets, Héritage)
- L’essentiel du langage Java (variables, opérateurs, commandes basiques)
- Interfaces et heritage
- Nombres et Chaînes de caractères
- Paquetages
- E/S basique
- Exceptions
- Généricité
- Collections (listes, dictionnaires, ...)
- Interface graphique
Programmation Web 1
Semestre 3
L'objectif de cette unité est de faire acquérir aux étudiants des notions et concepts de base de la programmation en Javascript. Seront abordés :
- les types primitifs
- les expressions et opérateurs
- les objets et les tableaux
- l'héritage par prototype et les classes
- l'interaction avec le DOM et les CSS
- La gestion d’événements
- Des éléments de programmation fonctionnelle en JavaScript
Les dernières semaines, en travaux pratiques, les étudiants sont guidés dans la réalisation d'un projet qui met en oeuvre les principaux éléments du langage.
Compétences attendues à l'issue des enseignements : être capable de traiter des problèmes algorithmiques avec le langage ; savoir mofifier une page HTML via le DOM et interagir dynamiquement avec l'utilisateur via la programmation événementielle et fonctionnelle ; fournir un code sûr respectant les bonnes pratiques pour ce langage.
Programmation Web 2
Semestre 6
Les langages abordés dans ce cours sont PHP (côté serveur) et JavaScript (côté client). En PHP seront notamment abordés :
- la programmation orientée objet en PHP: les classes et les interfaces, les traits, les itérateurs
- la gestion des erreurs et des exceptions, le type hinting
- l'accès à un SGBD et à des services distants
- sécurité
La partie JavaScript se focalisera sur les requêtes distantes asynchrones.
Les compétences acquises en Web et Prog Web 1 sont pré-requises. Les dernières semaines, en travaux pratiques, les étudiants sont guidés dans la réalisation d'une application 3-tiers (sous forme de projet).
Compétences attendues à l'issue des enseignements : concevoir et mettre en place d'une application (au moins) 3-tiers faisant intervenir différentes technologies et langages ; fournir un code sûr respectant les bonnes pratiques pour ces langages.
Stage
Semestre 6
Le stage de L3 dure 8 semaines. Les dates pour l'année 2017-18 sont du 26 mars au 18 mai 2018. Le stage peut-être prolongé si l'entreprise et l'étudiant le souhaitent. Dans tous les cas, le rapport de stage doit être remis au bout des huit semaines et la soutenance se déroulera juste après la fin du stage (cf dates du calendrier de l'année).
Le stage doit permettre à l'étudiant de mettre en pratique sa formation en informatique.
Afin de vous aider dans vos démarches de recherche de stage, tous les vendredis après-midi une entreprise en informatique vient se présenter et recevoir les candidats pour un stage ou une alternance. Ces présentations sont à destination des étudiants de master 1, 2 et de L3. Le calendrier des présentation est accessible à partir du calendrier des étudiants de master.
Technologies émergentes
Semestre 6
Cette année, le cours porte sur l'Internet des objets et les objets connectés.
L'objectif du cours est d'acquérir des connaissances et des compétences nécessaires pour concevoir et construire un prototype IoT simple comprenant des capteurs, un dispositif de connectivité, une application mobile et des capacités d'analyse et de visualisation de données.
- Comprendre les définitions et utilisations du terme «Internet des objets et objets connectés» dans différents contextes et domaines.
- Connaître les technologies liées à l’IoT (Capteurs, Cloud, mobile, Big data, analytique…)
- Prendre conscience de l’intérêt du Big data, du Cloud et de l'analytique dans le contexte de IoT.
- Comprendre les couches de la pile IoT et connaître les technologies clés utilisées pour chaque couche.
- Acquérir des connaissances et des compétences nécessaires pour concevoir et construire un prototype IoT simple comprenant des capteurs, un dispositif de connectivité, une application mobile et des capacités d'analyse et de visualisation de données.
Théorie des langages et compilation
Semestre 5
Cet enseignement vise à donner aux étudiants les bases de la théorie des langages et de la compilation. En théorie des langages seront étudiés les formalismes qui permettent de définir la syntaxe des langages informatiques : langages réguliers (automates et expressions régulières), langages hors-contexte (grammaires hors-contexte). La partie compilation du cours présente les techniques classiques en compilation, en particulier l'analyse lexicale, syntaxique, sémantique et la génération de code. Les outils UNIX Lex et Yacc seront introduits et utilisés en TP pour mettre en œuvre les étapes essentielles de développement de compilateurs.
Web
Semestre 2
L'objectif de ce module est d'amener une culture informatique et net, et d'acquérir les bases de conception de pages web statiques (HTML + CSS).
- HTML :
- Eléments, balises, attributs
- Structure, Indentation et commentaires
- Titres et paragraphes
- Listes
- Liens internes et externes
- Images
- CSS :
- Sélecteurs, propriétés
- Mise en forme
- Id et Class
- Héritage
Compétences attendues à l'issue des enseignements : produire du code HTML et CSS valide, maîtriser la distinction structuration/affichage de l'information.