Archives de la catégorie : Enseignement

Mise à jour du cours d’UML 2.0

Je viens de mettre à jour le cours d’UML 2.0. Le chapitre sur les diagrammes de classes a été substantiellement remanié avec, entre autres, la prise en compte de la notion de possession de terminaison d’association introduite dans la version 2.1.1 d’UML. Parmi les nouveautés, on peut également noter la présence de travaux dirigés, sans la correction, dans la version pdf du cours.

Le cours chez Developpez.com
Note (24/11/2009) : ce cours est maintenant publié !

Publié dans Enseignement | 11 commentaires

Tableaux à deux dimensions et passages de paramètres en langage C

Dans le langage C, les crochets que l’on utilise pour encadrer les index d’un tableau ne sont, en réalité, qu’une façon de déréférencer un pointeur.
Si ptr est un pointeur, et n un nombre entier, alors l’expression ptr[n] est strictement équivalente à *(ptr + n). Vous pourrez vérifier que ces deux notations sont équivalentes par vous-même.
Ces deux notations permettent de déréférencer un pointeur sur un tableau à une dimension.

Intéressons-nous maintenant au cas d’un tableau à deux dimensions défini de la manière suivante :
int matrice[NB_LIGNES][NB_COLONNES]
Dans ce cas, l’expression matrice[ligne][colonne] est strictement équivalente à :
matrice[(NB_COLONNES * ligne) + colonne]
elle-même strictement équivalente à :
*(matrice + (NB_COLONNES * ligne) + colonne)
Ainsi, le compilateur a besoin du nombre de colonnes d’un tableau à deux dimensions pour pouvoir réinterpréter une notation du type matrice[ligne][colonne]. C’est pourquoi cette dimension doit être précisée lors du passage d’un tableau à deux dimensions comme paramètre d’une fonction.
En fait, lors de la transmission d’un vrai tableau à deux dimensions, le paramètre effectivement transmis est un pointeur sur le premier sous-tableau, et non un pointeur sur le premier élément.
Le passage du tableau matrice à une fonction devra donc se faire de la façon suivante :
void fonction(int (*matrice)[NB_COLONNES]) ;
Une autre notation possible, bien qu’elle masque la véritable nature du paramètre transmis (ce qui n’est pas bien), est :
void fonction(int matrice[][NB_COLONNES]) ;
L’inconvénient évident est que les fonctions ainsi définies ne sont absolument pas générales puisqu’elles ne peuvent manipuler qu’un tableau de NB_COLONNES. Le prix de la généricité est l’abandon du vrai tableau au profit de l’allocation dynamique.

Publié dans Enseignement | Laisser un commentaire

Cours en ligne : UML 2.0

UML (Unified Modeling Language, soit langage de modélisation objet unifié) est né de la fusion des trois méthodes qui s’imposaient dans le domaine de la modélisation objet au milieu des années 1990 : OMT, Booch et OOSE. D’important acteurs industriels (IBM, Microsoft, Oracle, DEC, HP, Rational, Unisys etc.) s’associent alors à l’effort et proposent UML 1.0 à l’OMG (Object Management Group) qui l’accepte en novembre 1997 dans sa version 1.1. La version d’UML en cours à la fin 2006 est UML 2.0 qui s’impose plus que jamais en tant que langage de modélisation standardisé pour la modélisation des logiciels. Ce document constitue le support du cours d’UML 2.0 que je dispense aux étudiants du département d’informatique de l’institut universitaire de technologie (IUT) de Villetaneuse.
Table des matières du cours UML 2.0 :
  • Introduction à la modélisation objet
  • Diagramme de cas d’utilisation (Use Case Diagram)
  • Diagramme de classes (Class Diagram)
  • Object constraint langage (OCL)
  • Diagramme d’états-transitions (State machine diagram)
  • Diagramme d’activités (Activity diagram)
  • Diagrammes d’interaction (Interaction diagram)
  • Diagrammes de composants et de déploiement (Component diagram et Deployment diagram)
  • Mise en oeuvre d’UML
Publié dans Enseignement | 3 commentaires

Cours en ligne : Base de Données et langage SQL

Ce cours commence par s’intéresser à la problématique de la conception des bases de données. La deuxième partie est consacré aux bases de données relationnelles, c’est-à-dire aux bases conçues suivant le modèle relationnel et manipulées en utilisant l’algèbre relationnelle. Il s’agit, à ce jour, de la méthode la plus courante pour organiser et accéder à des ensembles de données. La dernière partie constitue, enfin, une bonne introduction au langage SQL (Structured Query Language) qui peut être considéré comme le langage d’accès normalisé aux bases de données relationnel. Le langage SQL est supporté par la plupart des systèmes de gestion de bases de données commerciaux (comme Oracle) et du domaine libre (comme PostgreSQL).
Ce document constitue le support du cours Base de Données et langage SQL que je dispense aux étudiants du département d’informatique de l’institut universitaire de technologie de Villetaneuse.

Table des matières :
  • Introduction aux bases de données
  • Conception des bases de données (modèle E-A)
  • Bases de données relationnelles
  • Langage SQL
Publié dans Enseignement, Base de données | Tagué | 4 commentaires

Cours : Informatique & linguistique

La linguistique informatique ou, suivant l’appellation anglo-saxonne, la linguistique computationnelle, est une discipline issue des développements de l’informatique dans le domaine des sciences du langage. Le domaine de la linguistique informatique recouvre toutes les applications informatiques qui ont trait au langage naturel. Par langage naturel on entend le langage tel qu’il est parlé spontanément par les êtres humains (le français, l’anglais, le russe, le wolof, etc.), par opposition aux langages formels utilisés en logique, en mathématique, en informatique, etc.
L’objet premier de la linguistique informatique est le traitement automatique du langage (TAL), c’est-à-dire l’analyse et la génération automatique du langage, et plus précisément, l’élaboration de modèles computationnels d’analyse et de génération à partir desquels on peut réaliser des logiciels capables de comprendre ou de produire des énoncés en langue naturelle.
Cette unité d’enseignement présente les bases de la théorie des automates et des langages formels : automates à états finis, expressions régulières, grammaires régulières, grammaires indépendantes du contexte, analyseurs syntaxiques ascendants et descendants.

Table des matières :
  • La linguistique informatique
  • Langages formels et leurs représentations
  • Langages réguliers (type 3)
  • Langages hors contexte (type 2)
  • Analyseurs (parser) syntaxiques
Publié dans Enseignement, TALN | Laisser un commentaire

Cours : Introduction au monde d’Unix

Ce cours est une introduction au monde d’Unix dispensé (2002-2004) au Centre Informatique pour les Lettres et les Sciences Humaines (CILSH). Les objectifs de ce cours sont multiples. Il doit, tout d’abord, permettre aux étudiants d’avoir un premier contact réel avec le monde de Linux. D’autre part, certains étudiants seront amenés à poursuivre leurs études par un DESS informatique double compétence où ils seront certainement confrontés à des machines fonctionnant sous Unix. D’autres encore pourront être confrontés à Unix dans leur vie professionnelle. Ce cours devrait permettre à toutes ces personnes de ne pas se retrouver complètement déroutées et démunies face à cette situation possible à venir. Enfin, les utilitaires d’Unix, disponibles par la ligne de commande, permettent d’effectuer des opérations complexes et très utiles sur des fichiers, opérations qu’il est beaucoup plus fastidieux de réaliser dans le monde Windows. Ce cours devrait donc offrir une boîte à outils très utile pour des linguistes travaillant souvent avec de gros corpus écrits.

Table des matières :
  • Système d’exploitation
  • Introduction au monde d’Unix
  • Système de fichiers d’Unix
  • Opérations sur les fichiers et répertoires
  • Visualiser et éditer des fichiers
  • Installation de Linux et de Cygwin/XFree86
  • Redirections, tubes et filtres : principes
  • Filtres
  • Pratique des filtres, redirections et tubes
Publié dans Enseignement, Généralitées | Laisser un commentaire

Cours : Logiques du raisonnement valide

Le but de la logique est de calculer des conclusions sûres. Le langage naturel s’avère trop imprécis et riche pour permettre des développements simples et rigoureux.
La logique est un outil pour parler et raisonner dans un domaine déterminé. Différents domaines ont différentes logiques. C’est un problème à la fois philosophique et mathématique que de savoir si une logique donnée est adéquate pour un domaine particulier.
Les logiques classiques (la logique des propositions et la logique des prédicats) ont été créées pour raisonner sur des objets mathématiques. Comme ces objets sont conceptuellement assez simple, ces logiques le sont aussi. Tout comme en mathématiques, les systèmes déductifs de la logique classique se limitent à la formalisation du raisonnement valide.

Table des matières :
  • Logique des propositions
  • Logique des prédicats
  • Programmation logique : PROLOG
Publié dans Enseignement | Laisser un commentaire

Aérodynamique pour aéromodélisme

Dans ma jeunesse, je pratiquai l’aéromodélisme et dessinai des avions et des planeurs. Pour cela, il est préférable d’avoir des bases en aérodynamique. Je ne les avais pas, mais les ai acquises pendant mon temps libre lors de mon service militaire à la base aérienne 701 de Salon de Provence. J’en ai profité pour consigner tout cela par écrit. Cette synthèse est hélas totalement inachevée et laissée en plan, mais elle fait tout de même 200 pages et m’a permis de dessiner quelques avions.

Table des matières :

  • Aérodynamique et mécanique des fluides
    • Statique des fluides
    • Cinématique des fluides
    • Dynamique des fluides
    • Couche limite
    • Résultante générale
    • Corps géométriques simples
  • Aérodynamique et mécanique du vol
    • Aile d’envergure infinie
    • L’aile d’envergure limitée
    • L’avion complet
    • Problème de stabilité
  • Aéromodélisme
    • Considérations sur le choix du profil
    • Voilures pour aéronefs classiques
    • Considérations finales sur les aéronefs classiques
    • Aéronefs exotiques
    • Bien régler, bien volet

Publié dans Enseignement | Laisser un commentaire