Programming methods [ LSINF2224 ]
5.0 crédits ECTS
30.0 h + 15.0 h
2q
Enseignant(s) |
Pecheur Charles ;
|
Langue d'enseignement: |
Anglais
|
Lieu de l'activité |
Louvain-la-Neuve
|
Ressources en ligne |
> https://www.icampus.ucl.ac.be/claroline/course/index.php?cid=LINF2224
|
Préalables |
- notions de base en théorie de la programmation, comme abordées dans des cours tels que INGI1122 (Méthodes de conception de programmes), INGI1101 (Logique et structures discrètes) et INGI1123 (Calculabilité)
|
Thèmes abordés |
- Fondements de la programmation, leurs propriétés, sémantique, validité et preuve
- Analyse déductives de programme : logique de Hoare, préconditions les plus faibles, conditions de vérification, invariants, et variants.
- Automatisation de preuves : boucles, procédures et récursion, structures de données, programme réactif
- Méthodes d'analyse comportementales : machine d'états, logique temporelle, model checking, abstraction.
|
Acquis d'apprentissage |
Les étudiants ayant suivi avec fruit ce cours seront capables de
- définir et formaliser les principes de l'analyse et la vérification de introduit dans les cours de baccalauréat.
- décrire et appliquer les techniques qui permettent à ces principes d'être automatisés sur un ordinateur.
- illustrer le potentiel et les limites de ces techniques par des exemples concrets.
Les étudiants auront développé des compétences méthodologiques et opérationnelles. En particulier, ils ont développé leur capacité à
- formaliser sous forme mathématique un problème donné;
- rédiger un rapport technique bref reprend les principaux éléments d'un travail d'analyse;
- argumenter à l'oral.
|
Modes d'évaluation des acquis des étudiants |
- missions (50% de la note finale)
- examen oral basé sur une liste de questions disponibles en fin de quadrimestre (50% de la note finale)
|
Méthodes d'enseignement |
Le cours combine
- des cours magistraux,
- des séances de travaux pratiques (modélisation et analyse de programmes),
- et des missions où les étudiants utilisent un logiciel de vérification automatique (ESC / Java, Java PathFinder) afin de prouver des propriétés de programmes Java.
Via leurs énoncés, des missions sont clairement balisées. Le résultats attendus, la méthodologie à utiliser, les outils à exploiter y sont présentés. Le code du programme à analyser est anoté et l'énoncé comporte un bref manuel d'utilisation. L'outil de preuve de programme ou de model-checking qui doivent être utilisés sont clairement indiqués. Pour faciliter leur prise en main par les étudiants, des séances d'exercices sont prévues. De plus, une consultance est assurée par les encadrants du cours en cas de problème. Chaque mission fait l'object d'un bref rapport écrit qui servira de base pour l'évaluation.
|
Contenu |
- Démonstration
- Introduction
- Fondements
- Programmes séquentiels
- Conditions de vérification
- Procédures
- Récursion
- Structures de données
- Programmes réactifs
- Modèles basés sur des états
- Model Checking
- Abstraction
|
Bibliographie |
Support de cours :
Bibliographie :
- B. Liskov, J. Guttag. Program Development in Java: Abstraction, Specification and Object-Oriented Design. Addison-Wesley, 2001.
- O.-J. Dahl. Verifiable Programming. Prentice Hall, 1992.
- K. R. Apt, E.-R. Olderog. Verification of Sequential and Concurrent Programs. Springer Verlag, 1991.
- J. Loeckx, K. Sieber. The Foundations of Program Verification (2nd Ed.) Wiley-Teubner, 1984.
- D. Gries, The Science of Computer Programming. Springer-Verlag, 1981.
|
Cycle et année d'étude |
> Master [120] : ingénieur civil en informatique
> Master [120] en sciences informatiques
|
Faculté ou entité en charge |
> INFO
|
<<< Page précédente
|