Partager cette page :
Discipline(s) : Infomatique et télécommunications

Programmation 1 : programmation fonctionelle, programmation orientée objet

Semestre Semestre 1
Type Facultatif
Nature UE
Crédits ECTS 3
Volume horaire total 36
Volume horaire CM 12
Volume horaire TD 12
Volume horaire projet 12

Responsables

Pré-requis

  • Expérience élémentaire de la programmation
  • Utilisation du système Unix
  • Notions de base de mathématiques (niveau L2)

Objectifs

  • À la fin du cours, les étudiants ont découvert et assimilé les principaux constituants communs aux langages de programmation, en particulier les langages fonctionnels.
  • Ils ont une première expérience de gestion d'un projet de programmation en petits groupes dans un cadre agile, de rédaction d'un rapport et de présentation publique.
  • Ils ont eu un premier contact avec l'approche sémantique des langages de programmation, le lambda-calcul et la théorie des catégories.

Contenu

Ce cours est une introduction aux principes généraux des langages de programmation à travers le langage fonctionnel fortement type Caml. Il ne s'agit pas d'un cours de programmation en Caml. L'objectif est de découvrir les différents constituants communs aux langages de programmation : fonctions, structures de données statiques et dynamiques, types élémentaires et construits,  références, exceptions, programmation d'ordre supérieur, itérateurs, programmation par continuations.

Lien du site du cours :
http://people.irisa.fr/Luc.Bouge/Dokuwiki/doku.php?id=dit:cours:prog1

Programme :
  1. Introduction à la programmation fonctionnelle en Caml
  2. Approche par types abstraits : listes et arbres
  3. Typage : produit et sommes de types, approche catégorique
  4. Références, application aux effets de bords, types de données modifiables
  5. Exceptions, application à la programmation itérative et récursive, récursivité terminale
  6. Programmation d'ordre supérieure, programmation par continuation, application aux itérateurs

Bibliographie

  • Approche fonctionnelle de la programmation, Guy Cousineau et Michel Mauny, Ediscience
  • Apprendre à programmer en OCaml, Jean-Christophe Filliâtre et Sylvain Conchon, Eyrolles
  • The OCaml system: documentation and user’s manual, Xavier Leroy et al., en ligne, http://caml.inria.fr/pub/docs/manual-ocaml/
  • Structure and Interpretation of Computer Programs, Harold Abelson, Gerald Jay Sussman, Julie Sussman, MIT Press.
  • Les principe des langages de programmation, Gilles Dowek, Éditions de l'École polytechnique

Contrôles des connaissances

  • Contrôle continu (CC) : un TD noté, un projet de programmation et un devoir sur table de synthèse (Exam)
  • En session de rattrapage, un examen oral (O)
Tous documents/matériels sont autorisés.

Note finale en session 1 : CC

Note finale en session 2 : O

Mise à jour le 12 juillet 2017