A l'issue de ce cours, l'étudiant doit:

  • connaître la représentation des informations en binaire dans les machines (entiers, réels au format IEEE 754, caractères et chaînes de caractères, instructions);
  • savoir manipuler les nombres entiers et réels dans différentes bases et passer d'une base à l'autre;
  • savoir effectuer des opérations en binaire sur les entiers et les réels;
  • savoir comparer des systèmes informatiques en fonction des indicateurs pertinents;
  • savoir analyser et synthétiser des circuits combinatoires et séquentiels et connaître l'implémentation des éléments logiques de base (mux/demux, registres, ...);
  • connaître les principes de la programmation dans un langage d'assemblage et savoir traduire les appels de fonctions et de procédures en respectant les conventions dictées par l'environnement;
  • savoir mettre en oeuvre un processeur monocycle simple en définissant les chemins de données de son jeu d'instructions;
  • connaître les principes sous-tendant les processeurs multicycles et les architectures pipelinées
  • connaître la notion de cache mémoire et ses différentes implémentations, et en connaître les impacts sur les algorithmes.
(Crédit photo: IEEE Spectrum)

La théorie des langages formels est née d'une tentative pour modéliser les langues. Elle constitue l'un des fondements de la science informatique notamment pour la description de la syntaxe de tous les langages informatiques.

Ce cours présente les patrons de conception pour le développement de logiciels. Après un rapide rappel sur les grands principes de la programmation orientée objet (encapsulation, héritage, polymorphisme...) et une courte présentation du langage de modélisation UML, une dizaine de patrons parmi les plus utilisés dans l'industrie seront présentés. Le langage de programmation Java est mis en œuvre pour illustrer les exemples, et sera utilisé lors des travaux pratiques.