Vous trouverez ici des références (sites Web et livres), des documents (mémoires de thèse et master, cours, articles...), du code source (C, C++ et Java) concernant différents domaines de l'informatique. J'ai essayé de les classer au mieux par catégorie. La plupart des sites référencés sont en anglais (ça se voit à leur titre). Les catégories qui proposent des documents ou du code source directement sur ce site sont marquées par un * dans la table des matières qui suit.
Il s'agit du mémoire de la thèse que j'ai réalisée de fin 1998 à début 2003 au laboratoire LIMOS sous la direction du Professeur Philippe Mahey. Ce travail est orienté autour de deux axes. Premièrement, employer des techniques de recherche opérationnelle pour résoudre des problèmes de synchronisation qui surviennent dans la conception et la présentation de documents hypermédia. Deuxièmement, expliquer en quoi le développement d'une bibliothèque de composants réutilisables pour les problèmes de graphes ne peut pas toujours suivre les règles classiques du génie logiciel, et proposer des solutions de conception. Les formats actuels de diffusion de documents sur Internet apportent sans conteste de nouvelles possibilités par rapport aux supports traditionnels. Mais les exigences deviennent toujours plus grandes et de nouveaux langages font régulièrement leur apparition pour tenter d'améliorer encore la structure et l'interactivité des documents. Parmi ces langages, certains offrent la possibilité d'animer et synchroniser des composants multimédia. Mais la variété de ces composants (audio, vidéo, texte, image...) font de l'animation un problème compliqué. Le problème étudié ici consiste à trouver un bon ajustement des durées des composants pour que la présentation se déroule au plus proche des contraintes exprimées par l'auteur. Ce problème peut se modéliser, au prix de quelques restrictions, comme un problème de tension de coût minimum dans un graphe. Pour le résoudre, nous avons étudié différentes approches (programmation linéaire, mise à conformité - out-of-kilter, mise à l'échelle du dual - cost-scaling). Nous proposons également des méthodes pour résoudre le problème sur des classes particulières, les graphes série-parallèles ou presque série-parallèles, plus représentatifs des cas réels de synchronisation hypermédia. Pour cette étude, nous avons développé une bibliothèque de composants réutilisables pour les problèmes de graphes. La thèse comporte donc trois chapitres sur cette problématique. Tout d'abord, la réutilisabilité de manière générale est abordée, en expliquant pourquoi la recherche opérationnelle ne peut pas être traitée classiquement par le génie logiciel. Ensuite, une présentation assez complète de l'approche objet est proposée, en insistant sur les aspects efficacité et réutilisabilité des différents concepts. Enfin, nous présentons des patrons de conception pour le développement de composants génériques pour la recherche opérationnelle, et proposons un aperçu rapide des diverses problématiques, plus techniques, rencontrées dans la conception d'une bibliothèque portable et réutilisable.
Il s'agit de mon mémoire de master que j'ai réalisé en 1998 durant un séjour de cinq mois à l'Université Virginia Tech avec le Professeur Osman Balci. Ce rapport contient un aperçu assez complet des concepts de l'orientation objet, une présentation de la simulation informatique et plus précisément de la simulation à événements discrets. Il y a aussi une discussion sur la réutilisation et la réutilisabilité logicielles. Enfin, ces concepts sont illustrés avec la présentation de bibliothèques conçues avec VSE (Visual Simulation Environment) pour une simulation visuelle. Il y a trois bibliothèques. La première est une conception expérimentale concernant le déplacement d'objets dans un plan, une carte... en deux dimensions. Elle peut être utilisée comme base pour la création d'une bibliothèque réutilisable plus complète et mieux conçue. La seconde bibliothèque fournit une classe pour manipuler les dates dans le calendrier Grégorien. Nous pensons que sa présentation peut être utile pour quelqu'un qui souhaite développer une bibliothèque portable et réutilisable semblable dans un autre langage. La dernière bibliothèque n'est pas présentée dans cette version HTML, qui n'est pas la reproduction complète du rapport mais seulement un regroupement des chapitres les plus intéressants.
Comment faire quand on veut écrire un programme qui soit utilisable sur n'importe quelle plateforme ? Mis à part Java, il n'y a pas de solution directe. Malheureusement, Java n'en est encore qu'à ses débuts. Il reste lent et n'implémente pas certaines notions importantes de l'approche orientée objet telles que les classes génériques. B++ Library est une bibliothèque C++/Java thread-safe d'environ 90000 lignes de code source développée dans le cadre de ma recherche. Elle fournit principalement des composants pour la recherche opérationnelle et la simulation, mais repose sur une base orientée objet qui garantit une certaine portabilité et favorise la réutilisabilité des composants logiciels développés. Cette portabilité a été testée sous des environnements Linux, Unix et Microsoft Windows avec différents compilateurs. Divers programmes ont également été développés pour éprouver la réutilisabilité des composants de la bibliothèque.
B++ Library ne dispose pas d'interface graphique propre, en assurer sa portabilité serait quasiment impossible. En revanche, elle propose le mécanisme Jirk++ qui permet la manipulation de n'importe quelle classe Java directement en C++. Les composants graphiques Java sont ainsi disponibles dans la bibliothèque.
De petits programmes, les B++ Tools, ont été développés avec cette bibliothèque, ils sont disponibles compilés pour Microsoft Windows. Leur code source se trouve dans la B++ Library.
La plupart des langages de programmation et des logiciels utilisent maintenant les concepts de l'orientation objet. Bien que ce soit une manière naturelle de modéliser la réalité, l'approche orientée objet est difficile à maîtriser quand on veut modéliser clairement un système complexe ou concevoir judicieusement un logiciel. Voici quelques documents sur ce site se rapportant à l'orientation objet.
Voici une sélection de sites Web faite plutôt pour des personnes confirmées dans le domaine.
Voici quelques livres sur l'orientation objet.
La réutilisabilité logicielle est devenue un challenge économique. En effet, les développeurs de logiciels ont généralement besoin de réutiliser des parties d'anciens logiciels pour en concevoir de nouveaux. La réutilisabilité logicielle peut être un gain de temps dans une vision à long terme. En outre, beaucoup de compagnies n'ont pas la connaissance suffisante pour développer elles-mêmes certaines parties de leurs logiciels, ou ne veulent pas s'y investir. Elles cherchent donc des bibliothèques logicielles qu'elles puissent utiliser directement. Enfin, l'approche orientée objet est très bien adaptée pour garantir la réutilisabilité logicielle, c'est pourquoi les deux domaines sont étroitement liés. Voici une sélection de sites Web qui discutent de la réutilisation et de la réutilisabilité logicielles.
Voici quelques livres sur la réutilisation logicielle.
La simulation informatique est un vaste domaine, avec différentes sortes de simulation. On considère principalement ici la simulation à événements discrets utilisant les concepts de l'orientation objet. La B++ Library présentée précédemment fournit un module de simulation appelé B++ Simulator. Ce framework permet de la simulation à événements discrets avec une animation visuelle reposant sur une technologie orientée objet (C++ et Java).
Voici une sélection de sites Web qui discutent de la simulation informatique.
Voici quelques livres sur la simulation informatique.
C++ est un langage de programmation orienté objet qui est très largement utilisé. Cependant son utilisation pour une bonne conception orientée objet peut s'avérer difficile. Une bibliothèque standard, la STL (Standard Template Library), a été développée pour fournir des classes d'objet réutilisables très utiles comme des conteneurs. Cette bibliothèque est désormais fournie avec n'importe quel compilateur C++. Voici des documents sur le langage que j'ai rédigés, certains pour des cours en école d'ingénieur.
Voici une sélection de sites Web qui traitent de concepts C++ avancés aussi bien que de notions de bases, et de la STL.
Voici quelques livres sur C++.
Java est aussi un langage orienté objet très répandu. Il est plus jeune et doit sa célébrité à sa syntaxe simple (comparé au C++), à la richesse de ses bibliothèques (multimédia, réseau...) et à sa portabilité. Voici des documents sur le langage que j'ai rédigés, certains pour des cours en école d'ingénieur et en IUT.
Voici une sélection de sites Web sur le langage Java.
La recherche opérationnelle est une discipline qu'il est difficile de cerner. En effet, elle utilise les mathématiques comme support théorique dans le but d'une application informatique, l'une des difficultés résidant dans le passage de la théorie à la pratique. Elle fournit des méthodes et des algorithmes pour résoudre une grande variété de problèmes qui ne pourraient pas l'être sans l'aide de l'informatique. Cela peut être aussi bien de simples algorithmes comme la recherche d'un plus court chemin entre deux points, que des méthodes sophistiquées comme la résolution de systèmes mathématiques complexes.
Voici deux cours rattachés à ce domaine que j'ai donnés en IUT.
Voici une sélection de sites Web sur la recherche opérationnelle.
Voici quelques livres sur la recherche opérationnelle.
Le développement de sites Internet nécessite la connaissance de plusieurs langages afin de pouvoir aboutir à une bonne présentation de l'information (avec HTML et les feuilles de style CSS), proposer de l'interactivité avec l'utilisateur (avec JavaScript), permettre l'accès à des informations stockées en base de données (avec PHP par exemple), et proposer des applications embarquées (avec Flash/ActionScript, Java...). Voici quelques cours que j'ai donnés en IUT.
Voici une sélection de sites Web sur les différents langages utiles à la conception de sites Internet.
Avec un langage comme Java, il est très facile de faire du graphisme. Voici quelques documents que j'ai rédigés après avoir écrit des applets en Java. Ils expliquent les principes que j'ai utilisés pour les programmer. Donc, vous trouverez pour chacun des sujets une explication et une mise en pratique avec une applet Java dont le code source est bien entendu disponible.
Voici une petite sélection de sites, en français, sur les mathématiques et la géométrie.
Voici quelques sites sur les stéréogrammes, ces images où il faut loucher pour voir apparaître une forme en 3D.
J'ai mis ici des sites Web traitant de sujets informatiques qui ne correspondent pas à l'une des catégories précédentes, mais qui sont cependant très intéressants.
|