lecture-CNAM-MI_A2-PM44
CNAM MI A2 PM44: Développement Mobile (Kotlin, Android)
Maître de conférences
Université de Toulon · UFR Sciences et Techniques
Chercheur au LIS (UMR 7020), équipe R2I, site de Toulon
Data Management · Information Retrieval · Large Language Models · Multi-Agent Systems · Affective Computing
Mes enseignements portent sur le développement logiciel et les architectures distribuées, avec un accent sur les pratiques modernes d'ingénierie. Les supports ci-dessous proviennent du catalogue pédagogique généré à partir de l'organisation GitHub ebpro().
Java et programmation objet · Git · méthodes agiles · CI/CD · services REST · JPA · microservices · conteneurs · développement web et mobile.
CNAM MI A2 PM44: Développement Mobile (Kotlin, Android)
CNAM MI A2 PO43 : POO — Java, Git, Conteneurs, Persistance
LP ECMN Web Languages: FullStack JavaScript, React, Express
Fil rouge DEV-OOCOL (M1 Info & Math) : projet Java multi-module guidé — domaine transport public Trans'U
M1 Info Math DEV Avancé : Conteneurs, JPA, REST
M1 Info Math DEV OO Collab : Java, Git, JDBC
M2 Info Math DEV Expert : Serveurs d'applications (JEE, Web, Asynchrone)
Dépôt Java/Maven minimal de support aux exercices Git du cours : fusions et conflits de branches.
Dépôt Java/Maven minimal de support aux exercices Git du cours : clonage, commits, branches et tags.
Exemple JAX-RS complet (Jakarta REST)
Exemple TCP Client/Server Java
CI/CD : fondamentaux, écosystème, GitOps
Introduction aux conteneurs Docker — cours et travaux pratiques
Développement Web : HTML, CSS, JavaScript, React, REST
Git : gestion de version et collaboration
Java post-8 : Lambdas, Streams, Optional
Java Annotations : introduction et processeurs
Programmation asynchrone en Java
Java 101 : Bases du langage (variables, types, opérateurs, structures de contrôle)
Java Bean Validation : contraintes et vérification
Java 101 : Collections et structures de données
Java 101 : Gestion des exceptions
Java 101 : Héritage et polymorphisme
Module Java 101 : installation du JDK, compilation et premiers outils, leçons et TP publiés en notes et slides.
Module Java 101 : introduction au langage Java, leçons et travaux pratiques publiés en notes et slides.
Java 101 : Entrée/Sortie (I/O) et fichiers
Introduction au langage Java (101)
JavaFX : interface graphique en Java
A introduction to Java JDBC
Jakarta EE : CDI, Transactions, MicroProfile
A notebook to learn Jakarta Persistence API (JPA)
Module Java 101 : présentation de Maven, structure de projet, cycle de vie et dépendances, leçons et TP.
Introduction pratique aux ontologies OWL
Programmation réactive en Java
Java RESTful Web Services : JAX-RS et Quarkus
Révisions Java : exercices de preparation aux examens
Java 101 : Sérialisation
Développement Mobile : Kotlin et Android
Exemple Quarto : Java, Maven, Docker
Remise à niveau Java, Maven, Git, JDBC et JUnit via une application console de planification de séances de sport.
Mise à niveau : Shell Unix — TP de révision (bash)
Mise à niveau BDR : SQL Fondamental avec PostgreSQL (M1)
Génie Logiciel 101 : Requirements, Architecture, Agile
Product-catalog monorepo : API REST Express et PostgreSQL (Drizzle ORM) avec client React Vite Tailwind.
Minimal full-stack product catalogue (React, Express, MySQL, Docker), teaching sample of the WebLang course.
Application Quarkus de raccourcisseur de liens, démontrée comme charge de travail sur Kubernetes.
Sandbox galerie de thèmes Quarto — comparaison visuelle baseline + 3 thèmes académiques (html/revealjs/typst)
Exemple Java pour containers-intro
Exemple Python pour containers-intro
Kotlin Persistence : Room et stockage mobile
Exemple d'annotation processor Java : l'annotation @DTO génère des classes DTO à la compilation.
Exemple CDI et Jakarta EE : qualifiers, producers, interceptors et decorators, exécutable en SE ou en serveur.
Exemple C pour containers-intro
Exercices images Docker (containers-intro)
Hello World Docker (containers-intro)
Hello World Java Docker
Exemple REST+JPA Java Docker
Exemple multi-arch Docker
Hello World Python Docker
Exemple REST Python Docker
Exemple canonique RabbitMQ. Producteur/Consommateur pika). Sous-module de notebook-containers-intro
Exemple SQLite Docker
Exemple JPA hello world : entités, associations one-to-many et many-to-many, transactions et tests.
Exemple client JavaFX
Exemple de DAO JDBC générique sur base H2 : opérations de CRUD et datasource DBCP configuré par propriétés.
A simple JPA Application
Exemple JPA/Hibernate : gestion de bibliothèque, relations d'entités, transactions et tests de persistance.
Exercices Kotlin basiques
Exemple REST Quarkus
A sample Websocket application
Mes supports de cours, notebooks, présentations, documents HTML/PDF et exemples fonctionnels sont regroupés dans un catalogue dédié, organisé par enseignement et produit selon des pratiques d'intégration continue (CI/CD).
Mes travaux portent sur la gestion des données, larecherche d'information et les interactions entre intelligence artificielle et humains. Mes recherches actuelles s'articulent autour de deux axes principaux, tous deux menés en collaboration avec Elisabeth Murisasco etPatrice Bellot.
Ces travaux prolongent la thèse de Xavier Daull, co-encadrée avec Elisabeth Murisasco et Patrice Bellot. Je conçois des architectures combinant grands modèles de langage (LLM) et expertise humaine pour résoudre des problèmes complexes, notamment dans des contextes impliquant des données sensibles.
Ces architectures sont multi-agents avec expert dans la boucle : plusieurs agents LLM collaborent afin de concevoir, vérifier et capitaliser des outils réutilisables. Les applications concernent notamment la génération de documents scientifiques (articles, brevets) à partir d'informations initiales limitées telles qu'un titre et un résumé.
Ces travaux s'inscrivent dans la continuité de la thèse deSoelie Lerch, co-encadrée avec Elisabeth Murisasco et Patrice Bellot. Je développe des approchesmultimodales combinant texte, audio, vidéo et signaux physiologiques afin de modéliser l'émotion ressentie et d'étudier la proximité émotionnelle entre contenus. Cette thèse a abouti au projet EMOLIS, consacré à l'analyse émotionnelle, aux jeux de données multimodaux et à la recommandation de contenus adaptés.
Toutes les publications :
IEEE/WIC WI-IAT 2025, 2025
CollabToolBuilder : cadre multi-agents (Coach, Coder, Critic, Capitalizer) avec expert dans la boucle pour générer, valider et capitaliser des outils réutilisables.
ACM DocEng 2025, 2025
Architecture agentique générique exploitant plusieurs agents LLM et la supervision d'un expert humain pour rechercher l'information et générer des documents.
EGC 2025 / RNTI-E-41, 2025
Approche collaborative LLM–humain permettant de générer et valider des fonctions neuro-symboliques Python et de construire progressivement des outils réutilisables.
Prépublication, 2023 (v. 2025)
État de l'art sur les limites des grands modèles de langage et les architectures hybrides combinant raisonnement, outils externes et supervision humaine.
LREC-COLING 2024, 2024
Jeu de données multimodal associant transcriptions émotionnelles et signaux physiologiques, accompagné d'une application de recommandation de contenus émotionnellement proches.
ACM DocEng 2023, 2023
Approche exploitant les dépendances entre labels afin d'améliorer la classification documentaire multi-étiquette basée sur les Transformers.
Empreinte de la clé publique :
116C CE5F BA2C 0D37 D355 940E 400F 583C 1F81 2EDBClé publique sur demande :emmanuel.bruno@univ-tln.fr