Objectifs (en terme 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 quatre 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.
Le troisième partie explique les principes généraux de la structure des langages de programmation de haut niveau, illustrés au travers du langage Java. Le lien avec la structure sous-jacente des ordinateurs est explicité.
La quatrième partie est une première introduction aux principes de la programmation orientée objet incluant la structuration en classes et l'écriture d'interfaces graphiques.
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
- Langages de programmation : types de données primitifs, priorité des opérateurs, surcharge des noms¿
- Programmation orientée objet : classes définies par l'utilisateur, classes graphiques, programmation d'un interface graphique simple.
Autres informations (Pré-requis, Evaluation, Support, ...)
- Pré-requis : Aucun
-Remarque:
Site Web du cours: http://www.icampus.ucl.ac.be/SINF1150/
Autres crédits de l'activité dans les programmes
LINF1EP
|
Année de formation préparatoire à la licence en informatique
|
(12 crédits)
|
Obligatoire
|
|