L’étudiant, par cette unité, doit connaître et maîtriser les concepts issus de la théorie des langages et plus particulièrement des langages algébriques, des grammaires, des dérivateurs et des automates à pile. Ces derniers sont en fait à la base de tous les algorithmes d’analyse syntaxique (utilisés par les compilateurs des langages de programmation).

 Ce module est composé de six chapitres qui traitent les systèmes générateurs des langages (grammaires) et les systèmes reconnaisseurs des langages (automates). Pour la plupart des langages issus de la classification de Chomsky, l’automate correspondant sera décrit en détail.

 Pour chaque type d’automate (d’état finis (AEF), à pile de mémoire (APM), automate à bornes linéaires (ABL) ou Machine de Turing (MT), un ensemble d’exercices, est offert aux étudiants, permettant de bien maîtriser son fonctionnement. Un intérêt particulier sera porté sur les automates d’états finis qui sont utilisés par les analyseurs lexicaux et les automates à pile qui sont utilisés par les analyseurs syntaxiques (phases d’un compilateur).

Toutes les connaissances acquises seront utilisées pour bien comprendre les différentes phases d’implémentation des compilateurs des langages de programmation.

L’objectif de ce module est de permettre à l’étudiant d’identifier l’intérêt de structurer et manipuler les données sous forme tabulaire. A travers le modèle relationnel et l’algèbre relationnel sous-jacente orientés plus vers l’aspect pratique ; l’étudiant devrait comprendre l’importance de structurer les données, le concept d’indépendance des données et des traitements, ainsi que l’intégrité et la cohérence des données.

Après avoir étudié cette matière, l’étudiant devait démontrer les compétences suivantes :

i.     Etre capable de concevoir un schéma relationnel normalisé.

ii.   Manipuler une base de données par le langage de description de données  (LDD)

iii. Etre en mesure d’extraire des données spécifiques de la base de données en manipulant les requêtes SQL.