Syllabus
Cette UE donne les connaissances complètes pour la conception orientée objet des logiciels professionnels pour lesquels la notion d'architecture logicielle est centrale et cruciale à la qualité. Un objectif est la revue complète des mécanismes de programmation par objets avec le langage Java (dans une moindre mesure les langages C++ et Python) pour illustration. Le principe de réutilisation via des bibliothèques clef (e.g., collections) est un élément majeur de l'UE.
Un autre objectif est de fournir aux étudiants une base de connaissances large et solide pour réaliser les travaux pratiques des autres UE de la licence informatique (programmation Java pour le parallélisme, le Web, etc.). La maîtrise de Java est en outre essentielle pour envisager une poursuite d'études en master informatique.
Cours TDs TPs Total étudiant ECTS 27h 13.5h 18h 58.5h 6 Cette UE est en contrôle continu : contrôle « sur table » (45%), projet informatique (35%) et note d'assiduité et participation en TP (20%).
Cours
- Java here…
- C++ here… (C++ technologies)
- Python here…
Exemple de contrôle
- Java quiz on
Set<E>
Travaux pratiques, progression
Projet 2023-2024
Note d'information
Les étudiants de Math.-Info. font le projet Java qui suit OU la variante Java du projet de l'UE Conception des Applications Internet (voir ci-après).
Sujet
Modalités de contrôle du projet
Le travail est fait en binôme ou monôme. L’évaluation se fait via une présentation sur machine du travail réalisé. Si temps supplémentaire nécessaire au delà de l'UE, il y a un manuel à rédiger de quelques pages qui explique comment tester l'application pour un développeur en charge de la maintenance (organisation du code, librairie(s) utilisée(s), fonctionnement général, configuration…). Il faut alors déposer (au format ZIP uniquement) le manuel et le code source du projet au plus tard le dernier jour de travail avant les vacances de Noël (note zéro si non reçu avant minuit) ⤳ dépôt here. Merci de signaler par un e-mail à l'enseignant le dépôt (bien mentionner dans l'e-mail le lien Web sur le fichier ZIP ainsi que le(s) membre(s) du binôme ou monôme).
Syllabus
Cette UE s'intéresse à la programmation, asynchrone particulièrement, côté client, des communications et interfaces homme-machine Web avec les langages JavaScript et TypeScript. La programmation côté serveur est quant à elle traitée plus succinctement avec la plateforme Node.js. L'idée est d'étudier une approche orientée objet « canonique » (héritage, polymorphisme, encapsulation/visibilité…) de programmation asynchrone de manière à créer des architectures évolutives en symbiose avec les toutes dernières technologies Web : WebRTC, WebSockets, Web Workers… La réutilisation et le packaging de bibliothèques JavaScript est un point clef abordé. L'étude de classes et d'interfaces pour des sites Web multimédia hautement interactifs est aussi abordée :
HTMLCanvasElement
, modèle événementiel (CustomEvent
,Promise
)…
Cours TDs TPs Total étudiant ECTS 15h 7.5h 16.5h 39h 4 Cette UE est en contrôle continu : contrôle « sur table » (45%), projet informatique (35%) et note d'assiduité et participation en TP (20%).
Cours
- TypeScript here…
Exemple de contrôle
- TypeScript quiz on
Set<E>
Travaux pratiques, progression
Projet 2023-2024
Note d'information
Les étudiants d'Info. font le projet TypeScript qui suit OU sa variante Java avec la librairie Java Drools ou jdmn ou <une autre existe ?>. Toutefois, dans la configuration Java, il est alors nécessaire d'utiliser les WebSockets (un exemple de programme WebSockets est expliqué et disponible here…) pour communiquer entre Java et navigateur Web.
Les étudiants de Math.-Info. sont invités à faire ce projet dans la configuration Java uniquement sans obligation de visualisation avec navigateur Web.
Sujet
dmn-js est une librairie permettant de visualiser dans un navigateur des modèles décisionnels (enchaînement de tables de décision) de type Decision Model and Notation -DMN- here. Il est possible d'éditer des modèles décisionnels grâce à cet éditeur Web ou son équivalent Desktop here…
Exemple de Decision Requirement Diagram -DRD-
Exemple de table de décision
La librairie dmn-moddle quant à elle permet de transformer le source XML d'un fichier
.dmn
en une structure d'objets JavaScript. Cette structure est à ce jour mal documentée ; ainsi, le fichier TypeScript DMN-JS.ts (à compléter et/ou corriger) compense ce manque de doc. en offrant les types des données se trouvant dans la structure d'objets JavaScript.Finalement, la librairie feelin autorise l'interprétation du langage Friendly Enough Expression Language -FEEL- here… utilisé dans l'expression des règles gestion des tables de décision. Il y a d'autres librairies pour cela comme par exemple imicros-feel-interpreter.
Objectif
Le projet consiste à charger (par Drag & Drop par exemple) des fichiers
.dmn
à visualiser puis charger des données d'entrée (par Drag & Drop par exemple) en format JSON pour l'évaluation FEEL. Le navigateur Web donne le résultat de l'évaluation voire les erreurs le cas échéant…Jeu de tests
- Age classification
- Dinner
- Flight rebooking
- Autres fichiers
.dmn
here…Contraintes
- TypeScript obligatoire, i.e., il est interdit de coder le projet en JavaScript directement
- Il faut couvrir les ver. ≥ 1.3 de DMN
Modalités de contrôle du projet
Le travail est fait en binôme ou monôme. L’évaluation se fait via une présentation sur machine du travail réalisé. Si temps supplémentaire nécessaire au delà de l'UE, il y a un manuel à rédiger de quelques pages qui explique comment tester l'application pour un développeur en charge de la maintenance (organisation du code, librairie(s) utilisée(s), fonctionnement général, configuration…). Il faut alors déposer (au format ZIP uniquement) le manuel et le code source du projet au plus tard le dernier jour de travail avant les vacances de Noël (note zéro si non reçu avant minuit) ⤳ dépôt here. Merci de signaler par un e-mail à l'enseignant le dépôt (bien mentionner dans l'e-mail le lien Web sur le fichier ZIP ainsi que le(s) membre(s) du binôme ou monôme).
Syllabus
Cette UE est à la frontière du génie logiciel et des systèmes distribués (intergiciels pour l'essentiel). Elle vise à étendre la problématique de la programmation et de la modélisation orientées objet aux paradigmes de « composant » et « service ». Le programme abordé traite des notions de Component-Based Development et Service Computing (concepts, caractérisation, panorama des modèles de composants technologiques, différence/similitude composant/service…). Les technologies Enterprise JavaBeans™ -EJB-, Web Services et Node.js servent d'illustration.
Cours TDs TPs Total étudiant ECTS 18h 9h 9h 36h 4 Cette UE est évaluée par un examen comptant pour 70% ainsi qu'un projet et une note d'appréciation du travail en TP et projet comptant pour 30%.
Cours
- Notions générales
- Web-Oriented Architecture -WOA- here
- Notions techniques (back-end)
- Notions techniques (front-end)
- Angular here
Travaux pratiques
- Java annotation here…
- Enterprise JavaBeans™ -EJB- “entity” versus “session” here…
- Enterprise JavaBeans™ -EJB- “local” versus “remote” interface here…
- Enterprise JavaBeans™ -EJB- exercise #1 here…
- Enterprise JavaBeans™ -EJB- exercise #2 here…
- Enterprise JavaBeans™ -EJB- exercise #3 here…
- Enterprise JavaBeans™ -EJB- exercise #4 here…
- Enterprise JavaBeans™ -EJB- exercise #5 here…
- Enterprise JavaBeans™ -EJB- with JavaServer Faces -JSF- here…
Projet 2023-2024
Sujet
Une application Java here est un système de gestion de crise impliquant policiers et pompiers qui de façon coopérative procèdent à une intervention sur le lieu d'une crise « en cours ». Le processus de gestion de crise consiste notamment à décider de l'envoi de voitures de police et de camions de pompier dont une cellule de coordination « policier » Police Station Coordinator -PSC- et une cellule de coordination « pompier » Fire Station Coordinator -FSC- suivent l'envoi et l'arrivée jusqu'à ce que la crise soit terminée.
En l'état, l'application est une application Java sans interface homme-machine et avec base de données embarquée. Plus largement, un programme Java
main
teste l'enchaînement de crise(s) pour vérifier grossièrement que l'application (dans sa globalité) fonctionne.Objectif
L'objectif global du projet est de porter l'application sur Node.js.
- L'application Java utilise la librairie PauWare qu'il faut remplacer par X STATE qui est la librairie JavaScript et TypeScript de référence pour programmer les Statecharts de Harel intégrés dans la norme State Chart XML -SCXML-.
- Il faut construire une base de données (la base de données initiale doit être externalisée et probablement amendée) de type SQL (JavaDB, MariaDB, SQLite…) ou NoSQL (MongoDB…) ainsi que les Data Access Objects nécessaires à l'accès aux données de la base via TypeORM, Prisma ou encore Sequelize pour SQL et Mongoose pour NoSQL.
- Il faut exposer les fonctionnalités mises en œuvre dans le programme Java
main
sous forme de Web services. De plus, il est possible de développer des micro-services de lecture/écriture des données qui encapsulent les Data Access Objects.- Option : construire une interface homme-machine appellant les Web services.
Modalités de contrôle du projet
Le travail est fait en binôme ou monôme. L’évaluation se fait via une présentation sur machine du travail réalisé. Si temps supplémentaire nécessaire au delà de l'UE, il faut alors déposer (au format ZIP uniquement) le code source du projet au plus tard le dernier jour de travail avant les vacances de Noël (note zéro si non reçu avant minuit) ⤳ dépôt here. Merci de signaler par un e-mail à l'enseignant le dépôt (bien mentionner dans l'e-mail le lien Web sur le fichier ZIP ainsi que le(s) membre(s) du binôme ou monôme).