Descriptif
Un ingénieur, quelque soit son domaine d'intervention, doit maîtriser les concepts sous-jacents aux langages de programmation, aux différences profondes entre les langages actuels, passés et futurs, ainsi que les différentes notions relatives au sens et à la correction des programmes. Cette culture informatique lui sera à l'évidence nécessaire s'il contribue à ou dirige des développements informatiques, mais elle le sera aussi lorsqu'il aura à évaluer des éléments logiciels, ou à participer à des prises de décisions stratégiques impliquant des choix en matière de logiciel.
Ce cours décrit les concepts fondamentaux des langages de programmation, en commençant par donner une perspective historique des langages, puis en donnant les outils permettant de décrire précisément le sens des programmes informatiques, partant de leur syntaxe jusqu'à leur sémantique, en passant par une revue des différentes techniques de mise en œuvre des interprètes et compilateurs.
Une part importante du cours sera consacrée à l'expérimentation : on utilisera en effet le langage Objective Caml pour mettre en œuvre différents aspects d'un langage de programmation, durant la première moitié du cours.
La seconde moitié de ce cours est consacrée à l'introduction à quelques langages (de scripts) parmi les plus populaires, dont PHP et JavaScript. D'autres langages peuvent être abordés, selon le temps disponible, les opportunités, et les souhaits des élèves.
De par la perspective qu'il offre vis-à-vis de l'activité de programmation et des langages, ce cours s'adresse à tout élève désireux de prendre le recul nécessaire vis-à-vis de cette activité, quelle que soit la filière à laquelle il se destine (à dominante informatique ou non).
Objectifs pédagogiques
* Maîtriser les concepts essentiels des langages de programmation :
- portée, blocs
- structures de données, structures de contrôle
- mécanismes d'abstraction
* Comprendre et savoir mettre en œuvre :
- éléments de compilation (analyse lexicale, analyse syntaxique)
- sémantique opérationnelle, interprète, machine abstraite
- gestion automatique de la mémoire
* Connaître les langages de scripts et savoir programmer en :
- OCaml, PHP, JavaScript, ...
* Savoir facilement aborder et utiliser un nouveau langage de programmation
Diplôme(s) concerné(s)
Parcours de rattachement
- Voie - Simulation et Ingénierie Mathématique - Ouvertures sur la mécanique et la physique_S2
- Voie - Mécanique, Informatique, Commande et Signal_S2
- Voie - Simulation et Ingénierie Mathématique - Ouverture sur les Systèmes d'Information_S2
- Voie - Signal, Informatique, et Systèmes/Embarqué_S2
- Voie - Signal, Informatique et Systèmes/TIC_S2
- Voie - Simulation et Ingénierie Mathématique - parcours standard_S2
Format des notes
Numérique sur 20Littérale/grade européenPour les étudiants du diplôme Diplôme d'Ingénieur de l'Ecole Nationale Supérieure de Techniques Avancées
Vos modalités d'acquisition :
Projet
Le rattrapage est autorisé (Max entre les deux notes écrêté à une note seuil)- le rattrapage est obligatoire si :
- Note initiale < 6
- le rattrapage peut être demandé par l'étudiant si :
- 6 ≤ note initiale < 10
- Crédits ECTS acquis : 3 ECTS
Le coefficient de l'UE est : 3
La note obtenue rentre dans le calcul de votre GPA.
L'UE est évaluée par les étudiants.