Objectifs (en termes de compétences)
Le but du cours est de faire prendre conscience aux étudiants, d'une part, que la programmation (et donc l'informatique) repose sur quelques concepts très simples et pratiquement immuables depuis la conception des ordinateurs par Von Neumann et, d'autre part, que c'est une activité basée essentiellement sur le raisonnement et la précision. Ce point de vue est totalement différent de la vue donnée par la presse et intégrée par l'homme de la rue selon laquelle l'informatique est un ensemble de techniques toujours changeantes et en perpétuelle révolution.
Il est très loin d'être évident que ces objectifs puissent être atteints étant donnée la vue de l'informatique " gadget " que possèdent les étudiants lors de leur arrivée à l'université. C'est pourquoi la meilleure façon d'organiser le cours est un problème ouvert : on cherche chaque année de meilleures approches pour motiver les étudiants sans abdiquer toute exigence de rigueur et de précision.
Objet de l'activité (principaux thèmes à aborder)
Le cours comporte deux grandes parties qui sont chacune accompagnées d'exercices servant à assimiler les concepts et de travaux pratiques réalisés par groupes de deux étudiants servant à les mettre en pratique.
La première partie introduit l'algorithmique basée sur les notions d'objets et d'actions, les mécanismes de composition algorithmique, la décomposition de problèmes en sous-problèmes. Les méthodes de raisonnement associées à la construction des algorithmes (spécifications, assertions, invariants) sont introduites.
La seconde partie expose le mode de fonctionnement des ordinateurs et la structure du langage machine ainsi que les principes de représentation des données.
Résumé : Contenu et Méthodes
- Concepts de base : variable, expression, affectation ; structures de contrôle : composition séquentielle, alternative, et répétitive ; types simples de données ; tableaux, fichiers, enregistrements ; abstraction procédurale et mécanismes de passage de paramètres ; classes et instances ;? le cycle de vie d'un programme.
- Méthodes de construction systématique de programmes : modélisation et spécification du problème ; programmation descendante ; raisonnement inductif: induction sur le calcul, notion d'invariant ; démonstration informelle de validité du programme construit ; tests ; notion d'analyse de complexité ; eléments de style ; Application à la construction méthodique d'algorithmes type: recherches, tris, etc.
- Représentation des données : système binaire, entiers en complément à deux, nombres en virgule flottante, codage des caractères.
- Structure interne des ordinateurs : unité centrale, unités périphériques, langage machine, programmation en langage machine
Autres informations (Pré-requis, Evaluation, Support, ...)
- Pré-requis : Aucun
Autres crédits de l'activité dans les programmes
MATH12BA
|
Deuxième année de bachelier en sciences mathématiques
|
(6 crédits)
|
Obligatoire
|
SINF11BA
|
Première année d'études de bachelier en sciences informatiques
|
(6 crédits)
|
Obligatoire
|
|