Outils pour utilisateurs

Outils du site


formations:licences:licence_enseignements_descriptifs

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
formations:licences:licence_enseignements_descriptifs [2022/11/08 16:36] – supprimer les descriptifs des cours du L1 qui sont maintenant ailleurs treinenformations:licences:licence_enseignements_descriptifs [2023/03/10 15:57] (Version actuelle) – [Outils Logiques (OL4)] mitsou
Ligne 1: Ligne 1:
-====== Descriptifs des cours de licence ======+====== Descriptifs des cours de licence 2ème année ====== 
 + 
  
 ====== Semestre 3 ====== ====== Semestre 3 ======
Ligne 84: Ligne 86:
  
 ===== Outils Logiques (OL4) ===== ===== Outils Logiques (OL4) =====
 +=== Objectifs ===
 +Ce cours est une introduction à la logique et notamment au calcul propositionnel, à certaines techniques de déduction automatique (résolution, DPLL) et à la modélisation des problèmes en logique propositionnelle.
  
-Ce cours est une introduction à la logique et notamment au calcul propositionnel et à certaines techniques de déduction automatique : résolutionméthode de Davis-Putnam et diagrammes de décision binaire.+=== Résumé === 
 +Syntaxe, sémantique et lois du calcul propositionnel, formes normales (FNN, FND, FNC), résolution et algorithme DPLL, modélisation en calcul propositionnel (coloration, couplage).
 ===== Mathématiques 4 (MI4) ===== ===== Mathématiques 4 (MI4) =====
  
Ligne 93: Ligne 98:
  
 Probabilités discrètes (variables aléatoires à valeurs dans un ensemble fini ou dénombrable, loi de probabilité, espérance, indépendance, probabilité conditionnelle) Probabilités discrètes (variables aléatoires à valeurs dans un ensemble fini ou dénombrable, loi de probabilité, espérance, indépendance, probabilité conditionnelle)
- 
-====== Semestre 5 ====== 
- 
- 
-===== Algorithmique (AL5) ===== 
- 
-=== Contenu === 
- 
-Algorithmique des graphes : parcours de graphes, composantes (fortement) connexes, extensions linéaires, plus courts chemins, arbres couvrants minimaux, flots… 
- 
-===== Mathématiques discrètes (MD5) ===== 
- 
-=== Objectif === 
- 
-Savoir démontrer des résultats mathématiques sur des objets manipulés en informatique, en particulier en algorithmique. 
- 
-=== Contenu === 
- 
-  * 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 (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, récursion, polymorphisme; filtrage par motifs; type unit (read/print), enregistrements; effets de bord: exceptions, input/output, traits impératifs. Stratégies d'évaluation et efficacité, exemples de modélisation impérative et fonctionnelle. 
- 
- 
-===== Logique (LO5) ===== 
- 
-=== Objectif === 
- 
-L'objectif principal est de savoir utiliser la logique pour modéliser 
-des problèmes et les résoudre ensuite à l'aide de logiciels comme les 
-solveurs SAT et les solveurs SMT. Cela demande une bonne familiarité 
-avec les formules logiques, leur sémantique, et leur manipulation par 
-exemple à l'aide de mises sous formes normales, ainsi qu'une 
-compréhension des principes de base de ces solveurs. 
- 
-Des implémentations en Java ou en OCaml (qui est introduit en cours 
-programmation fonctionnelle PF5) de la plupart des constructions du 
-cours sont soit fournies soit réalisées en exercice. 
- 
-Le cours introduit des notions qui seront approfondies entre autres 
-dans les cours de bases de données (BD6), puis en Master en 
-calculabilité et complexité, programmation logique et par contraintes, 
-preuves assistées par ordinateur, sémantique des langages de 
-programmation, méthodes formelles de vérification, et modélisation et 
-spécification. 
- 
-=== Contenu === 
- 
-Le cours revisite la logique propositionnelle vue en cours d'outils logiques (OL4), et introduit la logique du premier ordre. Le programme général est : 
-  * Logique propositionnelle : syntaxe et sémantique. Conséquences et équivalences logiques. Formes normales, forme clausale. Modélisation, solveurs SAT, recherche de modèle, algorithme DPLL. Recherche de preuve, calcul des séquents propositionnel. 
- 
-  * Logique du premier ordre : syntaxe et sémantique. Formes normales, skolémisation. Théories logiques, interprétations normales, élimination des quantificateurs. Modélisation, solveurs SMT. Recherche de preuve, calcul des séquents du premier ordre. 
- 
- 
- 
- 
- 
-===== Systèmes d'exploitation (SY5) ===== 
- 
- 
-Le but de ce cours est d'expliquer le rôle d'un système d'exploitation, 
-et de maîtriser les mécanismes de base d'un système de type unix/linux 
-(fichiers, processus et mémoire). Une partie du cours porte sur les 
-structures de données et les algorithmes utilisés par unix, une autre 
-sur la programmation bas niveau (C POSIX). 
-===== 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 === 
-  * discussions sur la pertinence des différents concepts pour différentes situations, assorties de conseils d'usage (cf. patrons de conception) 
-  * approfondissement des mécanismes vus en L2, notamment les plus "avancés" : généricité, exceptions, ... 
-  * sujets nouveaux : immuabilité, lambda-expressions, introduction à la programmation concurrente, ... 
- 
- 
- 
-====== Semestre 6 ====== 
- 
-===== Bases de Données (BD6) ===== 
- 
-=== Compétences visées === 
- 
-Comprendre les grandes lignes du modèle relationnel et de sa structuration en trois niveaux : conceptuel, logique et physique. Maîtriser la modélisation conceptuelle des données, ainsi que l'étape de traduction du schéma conceptuel en un schéma relationnel. Comprendre le rôle des contraintes d'intégrité et être capable de juger de la qualité d'un schéma relationnel en fonction d'un ensemble de contraintes données. Savoir concevoir une base de données, l’alimenter, la modifier et l’interroger. En particulier, savoir écrire et comprendre des requêtes en SQL avancé (e.g., requêtes imbriquées, avec agrégats etc.), mais également en algèbre relationnelle. Comprendre le lien entre algèbre relationnelle et optimisation des requêtes SQL. Comprendre le statut et le mode d'utilisation des vues et tables temporaires (y compris l'utilisation des tables temporaires pour exprimer des requêtes récursives), ainsi que les spécificités propres à la gestion des données incomplètes. Comprendre les grandes lignes du théorème de Codd (équivalence entre calcul relationnel sûr et algèbre relationnelle, lien avec SQL). 
- 
-=== Résumé === 
- 
-Bases de données relationnelles. Modèle conceptuel des données. Contraintes d'intégrité. Algèbre relationnelle. SQL. Données incomplètes. Vues. Requêtes récursives. Calcul relationnel. 
- 
- 
-===== Conduite de Projet (Cproj, 2019-2020 uniquement) ===== 
- 
-=== 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 
- 
- 
-===== Grammaires et Analyse Syntaxique (GAS6) ===== 
- 
-=== Compétences visées === 
- 
-Les grammaires algébriques sont utilisées en informatique pour définir 
-une syntaxe structurée, par exemple la syntaxe d'un langage de 
-programmation avec des constructions imbriquées comme des 
-conditionnelles, boucles, définitions de fonctions et procédures. Ce 
-module enseigne les grammaires algébriques d'abord d'un point de vue 
-pratique : comprendre et pouvoir écrire des grammaires, constructions 
-d'analyseurs grammaticales descendantes (technique LL1) et ascendantes 
-(technique LR1), utilisation d'un générateur d'analyse grammaticale 
-moderne (menhir), interaction avec l'analyse lexicale et construction 
-d'un arbre de syntaxe abstraite. Pendant les dernières semaines, les 
-aspects fondamentaux des grammaires seront étudiés, comme leur relation 
-avec les automates à pile, et les limites d'expressivité des 
-grammaires. 
- 
-=== Pré-requis === 
-  * module Automates et Analyse Lexicale (AAL3): expressions rationnelles, automates déterministes et non-déterministes, lemme d'étoile, analyse lexicale. 
-  * programmation en OCaml au niveau du cours PF5 
-===== Programmation Réseaux (PR6) ===== 
- 
-=== Objectif === 
-Apprendre à développer des programmes échangeant des données à travers un réseau. 
-=== Résumé === 
-Ce cours présente les paradigmes principaux de la communication par 
-socket dans un réseau. Il introduit les bibliothèques de fonctions 
-permettant de communiquer par flux (TCP) et par paquet (UDP) et propose 
-différentes séries de travaux pratiques ainsi qu'un projet afin de 
-maîtriser leur utilisation. 
- 
- 
-===== Introduction au Génie Logiciel (IGL6, option) ===== 
- 
-=== Compétences visées === 
-  * Formaliser les grandes phases du développement logiciel et leur intégration dans quelques processus de développement. 
-  * Être initié à l'analyse des demandes informelles d'un client par problématisation. 
-  * Distinguer spécification fonctionnelle, spécification non fonctionnelle, et choix de conception. 
-  * Maîtriser quelques architectures modulaires classiques. 
-  * Appliquer les outils et méthodes modernes du développement logiciel introduits en conduite de projet. 
-  * Systématiser l'écriture de tests unitaires et d'intégration, ainsi que l'usage d'un système d'intégration continue, dans un processus de développement dirigé par les tests. 
-  * Connaitre plusieurs méthodes agiles (Scrum, XP) et développer un regard critique qui permet de choisir la méthode la plus adaptée au cas pas cas 
-  * Utiliser des bibliothèques externes et être sensibilisé à la problématique des dépendances logicielles. 
-  * Être sensibilisé à des concepts du génie logiciel comme la dette technique, la sûreté, la sécurité, etc. 
- 
- 
- 
-===== 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 abordé. 
- 
- 
-===== 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. Ce cours s'apparie très naturellement au cours //Grammaires et Analyse Syntaxique// en donnant des exemples d'analyse sémantique appliquée au résultat de l'analyse syntaxique. 
- 
-=== 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 clôture. Exemples d’optimisation. Jeu d’instructions de Ocamlrun et JVM. 
- 
-=== Pré-requis === 
- 
-Les TP  utiliseront le langage OCAML, le cours de programmation fonctionnelle au S5 est donc un pré-requis essentiel. 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. 
- 
- 
-===== 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 développe les fondations de la sécurité du logiciel. Nous étudierons les principales vulnérabilités logiciels ainsi que les attaques qui les exploitent (tel que les dépassements de tampon, les injections SQL ou les détournements de session). Nous aborderons également quelques mécanismes de défense permettant d'empêcher ou de restreindre l'impact de ces attaques. Nous insisterons en particulier sur l'importance de penser la sécurité du logiciel dès sa conception, y compris dans le choix des langages de programmation et l'utilisation de techniques d'analyse statique ou dynamique. Ce cours exige une maîtrise des outils Unix (ligne de commande, système de fichier) ainsi qu'une bonne connaissance du langage C et son écosystème (compilateur GCC, débogueur gdb). 
  
  
formations/licences/licence_enseignements_descriptifs.1667925363.txt.gz · Dernière modification : 2022/11/08 16:36 de treinen