UTC503 : Paradigme de programmation : Cnam Liban

Public et conditions d’accès

Connaître un langage de programmation avancé, comme Python et Java, et maîtriser les notions d’algorithme, de procédure et fonction, d’objet, de méthode, et d’héritage.

Objectifs pédagogiques

Connaître et approfondir les principaux paradigmes de programmation : impératif, logique, fonctionnel, réactif, objet ; savoir les mettre en œuvre ; comprendre leurs différences.

Compétences visées

Pouvoir aborder un nouveau langage de programmation ou une nouvelle bibliothèque en reconnaissant les usages dans ceux-ci des principaux paradigmes. La plupart des langages de programmation actuels étant hybrides, et s’ouvrant de plus en plus au paradigme fonctionnel, les connaissances dans un paradigme seront utilisables au-delà de celui-ci.

Le cours au Cnam Liban : tous les centres

  • Présenter Python pour les aspects impératif (objet et procédural) tous en comparant à Java
  • Présenter paradigmes: déclaratif fonctionnel, logique, map-reduce et réactive (Python, Caml, Scala, Lisp, Prolog …) avec comparaison à Java

Modalité

  • La note finale: C’est la moyenne entre l’examen et la moyenne au devoirs et un petit projet.
  • Une 2e session est prévue: se substitue à l’examen sur table de la première session.
  • Des points “bonus” sont prévu: Assiduité travail régulier pour des notes >9.5.
  • Quel volume d’heures de travail est à prévoir :Environ 30 heures [avec complément en ligne et travail en autonome], il s’agit d’un demi module (3 ECTS). les auditeurs soumettent les travaux sur github
  • Quand commence les cours au Cnam Liban? Premier semestre 2019-2010.
  • La semaine = 3h de cours/TD/TP en présentiel (les auditeurs viennent avec leur portable; le réseaux est assuré) + support de cours classroom de l’iSSAE 11 semaines de cours 3 parties
  1. Partie 1 (3 semaines): Impératif
  2. Partie 2 (5 semaines): Déclaratif fonctionnel
  3. partie 3 (3 semaines) : Map-Reduce et Réactif

Le nombre de séances est sujet à modificatio### n

le cours est fortement inspiré du cours Moodle de lecnam.net de l’année précedente avec adaptation à Python (partie impérative et objet) et complément Map-Reduce et programmation réactive Syllabus et rythme prévu (1 séance ou activité = 1 ou 2 semaines; 3 ou 6h)

Séance 1 : Introduction générale et les paradigmes

Séance 2 : Programmation impérative en Python : algorithmique et sous-programmes. Premier Devoir

Séance 3 : inversion de contrôle et objet en Python

Séance 4 : programmation fonctionnelle : les fondements lambda calcul

Séance 5 : Programmation fonctionnelle : Lisp. Caml, Python, Lambda de java. Deuxième devoir

Séance 6 : Map reduce : Spark: avec Python

Séance 7 : Programmation réactive: ReactiveX (java et python)

Liens utiles et référence

  1. Les code des séances
  2. Les exemples suplémentaires
  3. Des Complément ne faisant pas necessairement partie du programme
  4. Certaines solutions aux ED/TP/Devoirs