Outils pour utilisateurs

Outils du site


enseignement:licence_enseignements_descriptifs

Descriptifs des cours de licence

Semestre 1

Initiation à la programmation 1 (IP1)

Objectifs

Savoir écrire un programme simple dans un langage de programmation de haut niveau.

Résumé

Premiers éléments de programmation et d’algorithmique ; Notion d’algorithme. Langages de programmation, variables, structures de contrôle, fonctions et passage de paramètres.

Plus de détails ici .

Introduction aux systèmes d’exploitation (IS1)

Objectifs

Connaissance des fonctions d’un système d’exploitation. Savoir utiliser efficacement un système Unix.

Résumé

Étude des différentes fonctions d’un système d’exploitation et familiarisation avec l’environnement et l’utilisation des systèmes de la famille Unix : système de gestion de fichiers, processus, liens entre processus et fichiers, les commandes de base (locales et réseau), le concept de filtre, notion de script.

Principe de fonctionnement des machines binaires (PF1)

Objectifs

Comprendre un certain nombre des principes généraux du traitement de données par des machines binaires.

Résumé

Principes de base du fonctionnement des ordinateurs ; Organisation générale d’un ordinateur, représentation binaire, mode d’adressage, principe d’exécution d’un programme, langage machines, circuits logiques.

Algèbre et analyse élémentaires 1 (MM1)

Objectifs

Utiliser les complexes dans différents contextes. Maîtriser les notions de base associées aux fonctions, s’initier aux rudiments de l’algèbre linéaire.

Résumé

Étude de fonctions (rappels de lycée) ; Nombres complexes ; Introduction à l’algèbre linéaire ; Propriétés de R et suites.

Raisonnements mathématiques (RM1)

Objectifs

Comprendre et manier le langage des mathématiques.

Résumé

Étude des particularités du langage mathématique. Les notions suivantes sont abordées : fonctions et ensembles, expressions mathématiques, raisonnement, raisonnement par récurrence, cardinalité et dénombrements simples.

Semestre 2

Initiation à la programmation 2 (IP2)

Objectifs

Apprendre à manipuler des structures récursives.

Résumé

Structures récursives : listes chaînées et arbres ; Développement d’algorithmes simples de parcours de structures récursives ; Bases de la programmation et de l’algorithmique.

Concepts informatiques (CI2)

Objectifs

Comprendre et maîtriser un certain nombre de mécanismes et concepts fondamentaux propres aux traitements informatiques.

Résumé

Présentation de concepts fondamentaux de l’informatique : mécanismes liés aux échanges d’information entre fonctions, références, pointeurs et adresses, la récursion : ses liens avec les arbres et les piles, son élimination, la technique de backtracking, quelques éléments de compression de textes et quelques éléments de cryptologie, numérisation des informations.

Internet et outils (IO2)

Objectifs

Acquérir la maîtrise d’outils permettant la mise en place d’un site Web interagissant avec une base de données.

Résumé

Principes généraux des réseaux et d’Internet : introduction aux bases de données, introduction à SQL ; Internet et Web : objectifs, modèle clients/serveur ; serveurs type Apache et clients tels que les navigateurs ; ensemble d’outils tels que [X]HTML, CSS, PHP, MySQL.

Algèbre et analyse élémentaires 2 (MI2)

Objectifs

Approfondissement des techniques en algèbre linéaire et en analyse.

Résumé

Algèbre linéaire dans Rn
  • Rappel sur systèmes linéaires (pivot de Gauss, échelonnement, écriture matricielle, rang (a priori ce sont des rappels) ;
  • l’espace vectoriel Rn, systèmes libres et générateurs; sous-espaces vectoriels; notion de dimension ;
  • matrices et calcul matriciel ;
  • applications linéaires de Rp dans Rq ; notion de rang, noyau, image ; théorème du rang ;
Polynômes sur R
  • l’algèbre R[X] : opérations et notion de degré ;
  • division euclidienne, division puissances croissantes, notion de racine/zéro ; nombre de racines ; formule de Taylor ;
Analyse
  • fonction d’une variable réelle : limite, continuité et dérivabilité ; pratique de ces notions avec les fonctions classiques; espaces de fonction, dérivées multiples et formules de Taylor ;
  • ordre de grandeur d’une fonction au voisinage d’un point ; notion de développement limité en un point ou à l’infini.

Semestre 3

Initiation à la programmation orientée objets / Interfaces graphiques (POOIG)

Objectifs

Maîtrise des concepts de la programmation objet et connaissance d’un système d’interface graphique.

Résumé

Principes de base de la programmation objet : classes et objets, références, héritage, notion de polymorphisme, exceptions, généricité. Utilisation d’une interface graphique définie dans un langage orienté objet.

Bases de données (BD3)

Objectifs

Savoir modéliser les données et transformer le modèle en définition de données. Savoir écrire des requêtes.

Résumé

Bases de données relationnelles. Modèle conceptuel des données. La définition des données. L’algèbre relationnelle. Le langage de requêtes y compris les sous-requêtes corrélées ou non. Introductions aux transactions. Sécurité pour les bases de données

Langages et automates (LA3)

Objectifs

Acquérir les éléments théoriques de base sur les langages et les automates.

Résumé

Mots, langages, expressions rationnelles. Grammaires, dérivation. Langages rationnels, automates finis.

Éléments d’algorithmique 1 (EA3)

Objectifs

Apprendre à manipuler les algorithmes (les comprendre, les modifier, et les concevoir)

Résumé

Cet enseignement vise à présenter l’approche algorithmique de la résolution de problèmes simples et à sensibiliser les étudiants à la notion d’efficacité d’un algorithme. Tris simples ; Manipulations de structures récursives (listes, arbres) ; Backtracking.

Préprofessionnalisation 1 (PP3)

Objectifs

Prise de notes, rédaction de synthèses.

Résumé du programme

La formation, basée principalement sur des exercices, vise pour cette première partie à l’apprentissage des règles et des méthodes de travail exigées par les études universitaires: prise de notes, synthèse de lectures, recherche d’information et de documentation, élaboration de problématiques et planification du travail de recherche, rédaction de rapports, etc.

Semestre 4

Projet en informatique (PI4)

Objectifs

Conduite d’un premier projet répondant à un cahier des charges.

Résumé

Réalisation d’un projet de programmation mettant en application les concepts acquis au cours des enseignements précédents et s’appuyant sur l’approche objets ou l’approche fonctionnelle.

Éléments d’algorithmique 2 : outils pour l’analyse d’algorithmes (EA4)

Objectifs

Algorithmes et structures de données classiques. Compréhension des problèmes élémentaires de complexité.

Résumé

Complexité : ordres de grandeur usuels, complexité en temps et en espace, au pire, en moyenne ; Analyse comparée des algorithmes de tri classiques; permutations ; Structures pour les ensembles : listes, arbres binaires de recherche, tas, tables de hachage.

Analyse de données structurées (ADS4)

Objectifs

Maîtrise de notions de base de l’analyse lexicale et syntaxique.

Résumé

Analyse lexicale, expressions régulières, automates, générateurs d’analyseurs lexicaux. Analyse syntaxique descendante, grammaires. Arbres de syntaxe abstraite, règles sémantiques pour l’évaluation et pour le typage.

Groupes et arithmétique (MI4)

Objectifs

Acquisitions de notions d’arithmétique d’un point de vue théorique et d’un point de vue algorithmique.

Résumé

Groupes, sous-groupes, morphismes, groupes monogènes, sous-groupes distingués, groupes quotient. Arithmétique élémentaire, anneau Z/nZ.

Préprofessionnalisation 2 (PP4)

Objectifs

Prise de parole et présentation de travaux.

Résumé

Ce deuxième enseignement de projet préprofessionnel vise surtout la qualité de la communication (interindividuelle, en groupe, en public) : pratique de l’entretien, prise de parole en public, exposé, organisation et communication pour le travail en groupe.

Semestre 5

Algorithmique et Mathématiques discrètes (AMD5)

Algorithmique (AL5)

Algorithmique des graphes

Mathématiques discrètes (MD5)

  • Techniques de démonstration de base: dénombrements élémentaires, preuves par récurrence, preuves par l’absurde.
  • Graphes réguliers, connexes, acycliques, bipartis; suite de degrés d’un graphe; graphes eulériens, graphes hamiltoniens.
  • Probabilités discrètes.
  • Méthodes probabilistes sur les graphes.

Programmation fonctionnelle et outils logiques (PFOL)

Programmation fonctionnelle (PF5)

Objectif

L’objectif de ce cours est d’apprendre les primitives de la programmation fonctionnelle à travers le langage OCAML.

Détails

Types de base (int, float, bool, char), fonctions, déclaration des valeurs; listes; types algébriques: produit, somme, recursion, polymorphisme; filtrage par motifs; type unit (read/print), enregistrements; les effets de bord: exceptions, input/output, traits impératifs. Stratégies d’évaluation et efficacité, exemples de modélisation impérative et fonctionnelle.

Outils logiques (OL5)

Ce cours introduit le calcul propositionnel en logique classique: sa syntaxe et sa sémantique (satisfaisabilité, validité, conséquence logique, équivalence, ensemble complet d’opérateurs). Une attention particulière est portée sur les définitions récursives de fonctions et sur les preuves par induction.

L’algorithme DPLL est présenté, ainsi que le calcul de Gentzen et quelques applications du calcul propositionnel aux problèmes de satisfaction de contraintes.

Système et C (Syst-C)

Pré-requis

Ce cours peut-être suivi par tout étudiant ayant des connaissances minimales en programmation et une connaissance des concepts généraux des systèmes d’exploitation.

Contenu

Le cours contient deux éléments :

  • l’étude du langage C
  • l’API de programmation systèmes de la famille Unix
Objectifs

Programmer dans un langage de (relativement) bas-niveau: savoir manipuler finement la mémoire Utiliser la ligne de commande: savoir commander le système Manipuler le système de fichiers: savoir écrire des commandes relatives au SF

Compléments en programmation orientée objet (CPOO)

Objectifs

  • Explorer les concepts de la POO au travers du langage Java.
  • Découvrir et comprendre les bonnes pratiques associées, pour une programmation fiable, efficace, évolutive et pérenne.

Pré-requis

  • Savoir programmer des algorithmes et structures de données simples (n’importe quel langage).
  • Avoir déjà programmé en Java.

Contenu

Au premier niveau de lecture, une grande partie des concepts ont déjà été abordés en L2 (POO-IG). CPOO5 apporte en plus :

  • des discussions sur la pertinence des différents concepts pour différentes situations, assorties de conseils d’usage (cf. patrons de conception)
  • un approfondissement des mécanismes vus en L2, notamment les plus “avancés” : généricité, exceptions, …
  • des sujets nouveaux : immuabilité, lambda-expressions, introduction à la programmation concurrente, …

Semestre 6

Conduite de Projet (Cproj)

Introduction au génie logiciel

  • cycle de vie d’un logiciel
  • les processus de développement logiciel
  • conception et architecture d’un logiciel
  • implémentation et qualité du code
  • tests du logiciel

Méthodes du génie logiciel

  • édition de code source
  • gestion de versions
  • chaîne de compilation et automatisation
  • édition de liens et bibliothèques logicielles
  • développement piloté par les tests

Projet de développement logiciel en équipe tout au long du semestre

  • langage de programmation : C
  • outils : emacs, git, gcc, gdb, make, check

Programmation Réseaux (PR6)

L’objectif de ce cours est de fournir aux étudiants les notions de base pour être capables de programmer en C et Java des applications communicantes. Nous présenterons les différentes API C et Java afin de pouvoir développer des applications réseaux.

Les modes de communication connectés et par paquets seront abordés et des architectures type, comme par exemple l’architecture Client-Serveur, seront présentées. Il sera également étudié la façon de communiquer par multi-diffusion. Nous décrirons de plus comment utiliser les outils système comme netcat et telnet permettant de tester rapidement des applications communicant par TCP/UDP.

L’évaluation sera faite par un projet et un examen. Ce cours ne traite que de la couche Application et ne décrit pas les autres couches Réseaux (telles que par exemple la couche Protocole).

Langages de script (LS6, option)

Objectif

L’objectif de ce cours est d’apprendre les concepts des langages de script essentiellement à travers le langage Python.

Détails

Ce cours/TP introduit et approfondit le langage de programmation Python. Les concepts importants de Python sont présentés et mis en pratique: listes, dictionnaires, expressions régulières, objets, librairies de gestion du système d’exploitation, etc. Le langage de script bash est également traité.

Machines virtuelles (MV6, option)

Objectif

Ce cours introduit aux principes des machines virtuelles exécutant du code-octet (comme Ocamlrun ou JVM) et présente les bases de la compilation d’un langage de haut niveau en code-octet.

Détails

Machines à piles; codage/décodage du code-octet; compilation: expressions, branchements, declarations locales et globales, données structurées, fonctions et notion de cloture. Exemples d’optimisations. Jeu d’instructions de Ocamlrun et JVM.

Programmation Efficace (PE6, option)

Objectif

Le but de ce cours est d’apprendre à développer des techniques de programmation pour pouvoir programmer rapidement (en quelques heures) des prototypes pour résoudre des problèmes algorithmiques dont l’énoncé est simple mais pour lesquels trouver la meilleure solution est un problème complexe (par exemple des problèmes NP-complets, comme le voyageur de commerce ou le problème du sac à dos). L’idée est de vous sensibiliser au fait que pour certains problèmes avec un grand nombre d’instances, il n’est pas toujours possible d’avoir un programme qui trouve rapidement la solution optimale, mais qu’en revanche on peut programmer des algorithmes efficaces qui cherchent une solution approchée.

Déroulement

Le cours comportera deux parties, une partie plus théorique où l’on abordera des questions de complexité et d’algorithmique et une partie plus pratique pour laquelle vous devrez programmer en peu de temps une solution pour un problème donné et ensuite nous passerons du temps à comparer vos solutions pour voir quelles sont les bonnes stratégies. L’évaluation se fera sous forme d’une compétition de programmation (la note ne se résumera pas au classement mais tiendra également compte du style de programmation). Les étudiants souhaitant suivre cette option sont vivement encouragés à venir passer le google hashcode dans le hub organisé par l’ufr (jeudi 28 février 2019 au soir).

Pré-requis

  • Maitrise d’un langage de Programmation (Java, Python ou C)
  • Algorithmique
  • Implémentation de structures de données
  • Un peu de probabilités

Programmation Web (PW6, option)

Objectifs

L’objectif du cours de Programmation Web est de fournir une introduction aux méthodologies courantes pour le développement d’applications Web, coté client et coté serveur.

Contenu

Ce cours démarre avec une révision des langages HTML et CSS pour la description de pages Web. Ensuite une petite révision du langage PHP et des systèmes de bases de données permet d’introduire le développement serveur. Le cours se concentre ensuite sur les “frameworks” coté serveur (e.g. Symfony) et sur les serveurs node.js, ainsi que ajax pour la communication client-serveur. Enfin le cours aborde la programmation côté client pour dynamiser les pages Web : Javascript et la librairie Jquery, ainsi que les librairies côté client pour simplifier la programmation CSS (e.g. Bootstrap).

Pré-requis

Connaissance minimale des langages HTML, CSS, PHP et SQL pour l’interrogation/manipulation de bases de données.

Sécurité informatique (SI6, option)

Contenu

Ce cours est une introduction à la sécurité informatique. Il comporte une partie sur la cryptographie symétrique dans laquelle des algorithmes d’authentification (MAC) et de chiffrement symétriques (PRF, AES, DES) seront étudiés et programmés. La deuxième partie concerne les vulnérabilités des logiciels permettant de corrompre leur fonctionnement normal et quelques moyens pour prévenir ou atténuer ces attaques (analyse et test de programmes).

Pré-requis

Mathématiques du premier cycle (notamment notions d’algèbre et de calcul des probabilités); notions de base de l’algorithmique (structures de données, complexité asymptotique); notions en programmation C, Java et Python; notions en système Linux; notions en architecture des ordinateurs (CI2); notions en outils internet (IO2).

enseignement/licence_enseignements_descriptifs.txt · Dernière modification: 01/02/19 14:13 par Dominique Poulalhon