Discipline(s) : Sciences Humaines et Sociales, Sciences et technologies

MI0C501T - Aspects statiques et dynamiques des langages

Semestre Semestre 1
Crédits ECTS 6
Volume horaire total 100

Domaine(s) LMD

SCIENCES HUMAINES ET SOCIALES, SCIENCES, TECHNOLOGIES, SANTE

Langue(s) d'enseignement

Français

Responsables

Eric JACOBONI : jacoboni@univ-tlse2.fr

Pré-requis

L2 Informatique ou formation équivalente (DUT Info, BTS Info, autre L2…).

Objectifs

Connaître et maîtriser plusieurs paradigmes de programmation.

Contenu

  • POO en Python : 24h
    • Différences avec Java.
    • Présentation d’une bibliothèque d’interface graphique.
 
  • Programmation de bas niveau en C/C++... : 24h
    • Préambule : langage multi-paradigme, C++ vs. C, évolution du langage (C++11, C++14, C++17, etc.).
    • Éléments de base du langage : espace de noms, entrées et sorties, organisation du code (.hpp/.cpp), éléments de base (types et déclarations, expressions et instructions, références, pointeurs et tableaux, exceptions, structures, allocation dynamique de mémoire, fonctions (nommées, surchargées, lambda).
    • Abstraction de données et programmation orientée objet : classes, contrôle d'accès, fonctions membres et non-membres, classes et fonctions amies, copie d'objets (constructeur de copie et opérateur d'affectation =), surcharge d'opérateurs, héritage (simple et multiple), polymorphisme.
    • Programmation générique : modèles, différents types de polymorphisme (polymorphisme d'exécution et polymorphisme de compilation ou paramétrique).
    • Standard Template Library (STL) : string, conteneurs (array, vecteur, list, map), itérateurs, algorithmes (for_each, find, sort, etc.). 
 
  • Programmation fonctionnelle en Haskell : 48h
    • Historique, programmation impérative vs. programmation déclarative.
    • Programmer avec des fonctions.
    • Présentation de Haskell : types de base; structures de choix et pattern-matching; traitement des erreurs.
    • Induction et récursivité: Axiomatique de Peano
    • Fonctionnelles (HOF)
    • Curryfication
    • Récursivité terminale: Méthodes pour y parvenir.
    • Axiomatique des listes: Tuples et listes Haskell et Algorithmes récursifs de tris (sélection, partition, fusion).
    • Patrons de conception fonctionnels: filter, map, reduce folf.
    • Types de données et implémentations abstraites en Haskell: pile, file d'attente, arbres binaires de recherches.
    • Preuve par induction