Learning outcomes

A l'issue du cours, l'étudiant maitrisera le langage C et sera capable

  • de construire un programme complexe impliquant la maîtrise d'algorithmes évolués et de de mécanismes de programmation avancé
  • de concevoir une architecture logicielle, basé sur différents composants
  • de spécifier ces composants
  • d'en dériver des algorithmes
  • et de déduire de ceux-ci des programmes efficaces.

Il est à noter que, bien que le cours utilise le langage C, la grande majorité des acquis d'apprentissage s'appliquent à tout langage impératif.

Goals

Le cours vise à compléter l'étude de la programmation impérative entamée au cours SINF B103 et SINF B104 en introduisant de nouveaux mécanismes non étudiés, en particulier, les pointeurs ainsi que différentes structures de données.  D'autre part, il vise à présenter un cadre rigoureux de construction d'algorithmes et de programmes.

Content

Trois phases sont mises en évidence dans le processus de construction d'un logiciel et sont successivement étudiées: i) l'élaboration de spécifications, ii) les techniques de preuve et de construction d'algorithmes, iii) les techniques de dérivation et de transformation de programmes.

Table of contents

Les mécanismes de programmation en C non abordés aux cours SINF B103 et SINF B104 sont progressivement étudiés.

Le contenu du cours est réparti en six unités:
  1. Linux en Virtual Machine
  2. Copmpilation, CMake
  3. Pointers
  4. Dynamic memory allocation
  5. File I/O
  6. Data structures and sorting algorithms
  7. Graphical rendering
  8. Database avec sqlite3

Teaching methods

Cours ex-cathédra basé sur de nombreux exemples ainsi que la résolution de cas lors des séances d'exercices.

Assessment method

Les étudiants sont évalués durant le quadrimestre sur la base de leur portfolio d'exercices et, en particulier, des exercices réalisés en séances d'exercices et soumis sur Webcampus, et avec un examen oral.

Language of instruction