Mes enseignements de 2000 à 2006

J’ai assuré des cours, des TD et des TP d’informatique en premier, deuxième et troisième cycle à l’Université Claude Bernard Lyon 1 de 2000 à 2006 (en tant que vacataire lors de mon DEA, dans le cadre d’un monitorat au cours de ma thèse, puis en temps qu’ATER et enfin avec un contrat à temps plein) et également au CNAM de Lyon en cycle C ingénieur (Bac+5) de 2004 à 2006.

Dans ce cadre, j’ai eu la double chance de pouvoir assurer un suivi dans
les différents cours auxquels j’ai participé et d’enseigner à des étudiants
de différents niveaux venus d’horizons très divers (étudiants en informatique,
étudiants de DESS compétences complémentaires, professionnels au CNAM).
En moyenne, les étudiants sont généralement 25 à 30 en TD et 10 à 15 en TP.
Les quelques cours magistraux que j’ai eu la chance d’effectuer concernaient des
effectifs limités à moins d’une cinquantaine d’étudiants ou d’auditeurs (terme
utilisé dans le cadre de mes enseignements au CNAM).

 Compétences

Systèmes d’exploitation Linux, Ms-DOS, Windows
Langages C/C++, Lisp-Scheme-Prolog, Basic, Pascal, Perl, Python, Yacc/Bison, Lex/Flex
Environnement de développement QT / QT-designer, Kdevelop, GDB
Modélisation approche objet, programmation fonctionnelle
Infographie Open-GL, création d’un moteur de lancer de rayons
Internet (X)HTML/CSS, DOM/DHTML, JavaScript, PHP/MySQL, Java, Zope/Plone
Réseaux (bases) modèle OSI, protocoles à fenêtre, couches réseaux, certification CISCO
Bases de Données (bases) SQL, MySQL
Documents (connaissances) XML, XQuery, XPath, XSLT

Je pense avoir une bonne maîtrise des premiers éléments de la liste ci-dessus.
Mes besoins personnels et les enseignements que j’ai effectués m’ont également
permis d’acquérir de bonnes bases en réseaux et gestion de documents et bases
de données.
Je suis tout à fait prêt à m’investir afin de pouvoir dispenser des enseignements
dans chacune de ces matières.

 Synthèse de mes enseignements

De 2000 à 2006 j’ai assuré 583 heures équivalent TD d’enseignement dont 46 heures
équivalent TD en formation continue : 34 heures de cours, 169 heures de travaux
dirigés et 544,5 heures de travaux pratiques.

NB : 1 h de cours = 1,5 h éq TD — 1,5h de TP = 1 h éq TD

Intitulé Cours TD TP Niveau
A
T<br</>E
R&C
N<br</>A
M
2005-2006
172,9 hTD
+ 23,16 hTD
Infographie 13,5h 40h L2 + M1
Réseaux 18h L3
Certification CISCO (CCNA) 10h L3
C/C++ 36h 72h L1 + L2
Algorithmie et complexité 30h L3
Programmation web 15h M1
Technologies de l’Internet 7h 6h 10h cycle C ingénieur CNAM (M2)
2005-2006
172,9 hTD
+ 23,16 hTD
Réseaux 27h L3 + M1
Certification CISCO (CCNA) 18,5h L3 + M1
C/C++ 4,5h 72 L1 + L2
Algorithmie et complexité 30h L3
Technologies de l’Internet 7h 6h 10h cycle C ingénieu CNAM (M2)
1,5 ATER + CNAM
275,73 + 46,32 h éq TD
14 66 352,5
M
O<br</>N
I
T
E
U
R
2003-2004
29 hTD
Outils de l’Internet 10h 10h 6h DESS CCI apprentissage
2002-2003
117,33 hTD
Programmation fonctionnelle 18h 16h DEUG MIAS 1a
Programmation objet (C++) 11h DEUG MIAS 2a
Infographie (Open-GL) 9h DEUG 2a (option)
Encadrement TER 21h éq TD (7 groupes) Licence informatique
Images, multimedia, NTIC 14h Maîtrise informatique
Unix, langage C 35h DESS CCI apprentissage
Outils de l’Internet 10h DESS CCI apprentissage
2001-2002
59,33 hTD
Formation moniteur – tutorat 16h éq TD
Infographie 18h DEUG 2a (option)
Infographie (raytracing) 12h Maîtrise informatique
Unix, langages C/C++ 35h DESS CCI apprentissage
Monitorat
205,66 h éq TD
20 85 136
VACA-
TAIRE
2000-2001
55,33 hTD
Programmation objet (C++) 18h 18h DEUG MIAS 2a
Infographie 18h DEUG 2a (option)
Infographie (rautracing) 20h Maîtrise d’informatique
Vacations
55,33 h éq TD
0 18 56
Totaux globaux
583 h éq TD
34 169 544,5

 Description de mes enseignements

 Programmation objet

Dès mon DEA, on m’a confié la charge de l’enseignement du langage C++ auprès
des étudiants redoublants de DEUG MIAS deuxième année (actuel L2).
Ils n’étaient qu’une quarantaine, ce qui m’a permis de gérer l’enseignement dans
son ensemble, de la définition des TD et TP à la rédaction du sujet de partiel,
sous la supervision d’Eric Galin qui est devenu mon tuteur lorsque j’ai été
nommé moniteur.
Par la suite, j’ai à nouveau pu enseigner les langages C et C++ aussi bien en
Licence qu’en Master.
Il a été très instructif pour moi de voir comment ces deux publics différents
réagissaient à des enseignements assez proches.
En effet, les étudiants de M2, à l’époque le DESS CCI apprentissage (Compétences
Complémentaires en Informatique), ne connaissent pour la plupart que peu de choses
dans le domaine de l’informatique mais ils ont une motivation très forte qui rend
l’enseignement plus facile et plus rapide.
Pour autant, il est très gratifiant d’arriver à intéresser des étudiants de L2
qui se déclaraient non intéressés en début de semestre.
Le fait d’assurer ces enseignements à plusieurs reprises m’a donc permis d’adapter
le contenu et la forme de mes interventions afin de coller au plus près aux besoins
des étudiants.

 Algorithmie

Cet enseignement est destiné à des étudiants de L3 ayant déjà une solide
connaissance de la programmation en C et de bonnes bases en C++.
Avec ces langages, ils apprennent à implémenter des structures de données
complexes génériques et surtout ils découvrent de manière tangible la notion
de complexité des différents algorithmes de tri et de recherche classiques
appliqués à ces structures de données.
D’un point de vue plus personnel, cet enseignement permet de voir ce qui a
bien et mal fonctionné lors des semestres précédents d’apprentissage du C/C++
et ainsi d’améliorer ces enseignements pour les semestres suivants.

 Technologies de l’Internet

J’ai assuré ce cours avec beaucoup de plaisir.
Là encore, le public visé était principalement néophyte puisqu’il s’agissait
d’étudiants en M2 (DESS CCI apprentissage) et en cycle C du CNAM.
C’est sans doute pour cela qu’il est aussi agréable de leur faire découvrir
un panel le plus large possible des technologies qui se cachent derrière cet
outil familier qu’est désormais Internet.
Pour cet enseignement, j’ai du apprendre à rédiger et à faire passer un cours
(disponible ici), ce qui constitue un exercice
assez différent d’un TD.
Je trouve extrêmement motivant de pouvoir organiser un enseignement dans son
ensemble.
La première année durant laquelle j’ai rédigé ce cours, j’ai heureusement pu
compter sur les conseils d’Eric Galin, mon tuteur dans le cadre du monitorat.
Après deux années de pratique j’ai pu parfaire l’ensemble des supports
d’enseignement et trouver un juste équilibre entre théorie et pratique afin
d’accompagner au mieux les étudiants dans leur apprentissage.
Cet enseignement a la particularité d’aborder un grand nombre de langages de
programmation : HTML/XHTML + CSS, JavaScript, DOM/DHTML, PHP + MySQL.
S’il est parfois frustrant de ne pas pouvoir consacrer plus de temps à
l’approfondissement de certains de ces langages, il est en revanche très
intéressant de pouvoir placer un enseignement dans le cadre d’un projet global
qui prend forme au fil des séances.
Depuis deux semaines je participe également à l’enseignement de cette matière
auprès des étudiants en M1 de l’université Lyon 1.

 Infographie (lancer de rayons et Open-GL)

Domaine dans lequel j’effectue mes recherches, l’infographie attire
naturellement les étudiants qui voient enfin dans les résultats de leur
TP autre chose qu’une série de nombres.
Pour certains cela évoque les jeux vidéos auxquels ils s’adonnent parfois,
pour les autres les films d’animation qu’ils voient au cinéma.
Aussi, bien que très technique et avec une forte dominante mathématique,
la curiosité permet aux étudiants de passer ces barrières.
Il est donc très important lors de la construction de ces cours de faire
un bon compromis entre le résultat final qui servira de trame à l’enseignement
et qui doit être attractif, et les pré-requis mathématiques et techniques
qui ne doivent pas rebuter les étudiants les moins intéressés.
Nous sommes très régulièrement surpris par l’investissement très fort des
étudiants qui découvrent ce qui se cache sous ce qu’ils apprécient depuis
si longtemps.
Il est alors parfois possible de leur présenter des travaux de recherche
actuels qui répondent à leurs interrogations et leur exigence de qualité
toujours plus importante.

 Programmation fonctionnelle

Lors de mon projet de fin d’études en maîtrise, j’ai hésité entre un
sujet orienté Image et un autre orienté Intelligence Artificielle.
Si je ne regrette assurément pas d’avoir choisi l’Image, j’ai été très
heureux de me rapprocher du monde de l’IA au travers de cet enseignement.
En l’occurrence, il s’agissait de TD et TP de Scheme.
Traditionnellement, les étudiants de L1 (DEUG à l’époque) éprouvent
quelques difficultés à utiliser ce mode de programmation et de réflexion.
Pourtant, deux à trois séances suffisent à les convaincre des atouts de
ces techniques et leur envie de découverte fait que l’on se retrouve face
à un public globalement très motivé.

 Réseaux

Depuis l’année dernière j’ai eu l’opportunité de découvrir un domaine
qui m’était peu familier : les technologies des réseaux.
Grâce à l’aide d’Olivier Glück qui est responsable de ces enseignements
de L3 et M1, j’ai rapidement pu me former et enrichir à la fois mes
connaissances et mon champ de compétences pour l’enseignement.
Chaque nouveau semestre est pour moi l’occasion d’approfondir ce thème
et donc de réadapter mes conseils en TP fort des expériences passées et
d’une culture générale du thème qui s’enrichit.
J’espère avoir prochainement l’occasion de participer à d’autres
enseignements qui me sont moins familiers comme les bases de données
dont je suis principalement un utilisateur dans le cadre de la
programmation web.

 Encadrement

Les TER constituent pour les étudiants de L3 la première occasion de
s’investir dans un projet consistant qu’ils gèrent de bout en bout.
En 2002-2003 j’ai proposé divers sujets de modélisation et d’animation
de surfaces implicites ainsi que de visualisation Open-GL qui ont été
choisis par 7 groupes d’étudiants.
Ces encadrements m’ont permis d’appréhender un autre aspect de l’enseignement,
plus personnalisé et approfondi.
Ces expériences m’ont particulièrement plu car hors de tout cadre figé,
elles permettent réellement d’aller au fond des choses, ce qui n’est
malheureusement pas toujours le cas lors d’enseignements en groupe et en
temps limité.
En outre, j’ai trouvé très agréable le fait de travailler avec des étudiants
sur des thèmes dont je me sentais naturellement très proche puisque j’en
avais défini moi-même les limites.

Ces projets m’ont permis de me faire une première idée de ce que pourrait
être l’encadrement d’un étudiant en M2 recherche ou en thèse.
J’ai actuellement la chance de mettre cette expérience à profit puisqu’un
étudiant de dernière année d’école d’ingénieur (IIE, Paris) a choisi un
sujet que je propose pour effectuer son projet de recherche de fin d’études
de 5 mois.
Bien évidemment je ne suis pas seul pour l’encadrer puisque Samir Akkouche,
mon directeur de thèse, m’aide dans cette tâche très intéressante.

 Projet d’enseignement

En conclusion, de par la chance que j’ai eu d’enseigner à tous les niveaux
de Bac+1 à Bac+5 mais surtout à des étudiants d’horizons très divers (étudiants
en informatique, étudiants en compétences complémentaires et auditeurs professionnels
au CNAM), je suis tout à fait convaincu que la fonction de maître de conférences
est celle qui me conviendrait le mieux pour associer ces deux plaisirs complémentaires
que sont la recherche et l’enseignement.

Je pense être tout à fait compétent pour continuer à enseigner dans les domaines
dans lesquels j’ai eu la possibilité de travailler avec mes collègues (programmation
objet, programmation fonctionnelle, programmation web, XML et dérivés, infographie
et réseaux) mais surtout mon expérience dans le domaine des réseaux, qui ne m’était
pas familier, m’a conforté dans l’idée qu’un investissement personnel de quelques
semaines suffit à permettre de débuter un nouvel enseignement, tout d’abord au travers
de TP afin d’intégrer une équipe en douceur puis lors de TD et de cours par la suite.
Je pense notamment que cette fraicheur peut profiter à certains étudiants puisque leur
enseignant se souvient de ses propres problèmes de compréhension dans un passé récent
alors que dans les matières dans lesquelles on excelle on a parfois plus de mal à se
remettre au niveau des étudiants.

J’espère également que mon insertion au sein de l’équipe pédagogique me permettra
de plaider pour le développement plus important de l’enseignement des langages objets.
Trop souvent Le C est utilisé de manière principale alors qu’un ou deux modules de
C++ ou de Java vient se greffer sur l’enseignement de la programmation.
J’estime pour ma part que l’on devrait privilégier l’approche objet dès le début de
l’enseignement de la programmation pour promouvoir la robustesse et la portabilité
qui son selon moi les bases de tout bon programme.
D’autre part je pense que C++ et Java sont complémentaires et qu’ils devraient être
tout deux enseignés en montrant aux étudiants les domaines d’application qui font que
l’un ou l’autre est un meilleur choix. Enfin, je pense qu’il faudrait sensibiliser
les étudiants aux surcouches et interfaces existantes (comme
Boost ou
Qt-trolltech pour le
C++ et les nombreuses possibilités pour les interfaces Java).
J’aimerai enfin pouvoir mettre en place un travail collaboratif dans le cadre d’un
TP-projet afin de rapprocher la formation dispensée à l’université de la réalité du
développement d’applications importantes en entreprise.