Github link

Adrien Krähenbühl

Maître de Conférences × IUT Robert Schuman × ICube × Unistra

fr en

2017-maintenant

Maître de Conférence à l'IUT Robert Schuman.

P42 - Programmation mobile

Présentation

Type : CMx (6h) / TPs (26h)

Supports

P22 - Qualité de développement

Présentation

Type : CMx (4h) / TPs (16h)

Supports

A31 - Analyse (Conception Orientée Objet)

Présentation

Type : CMx (6h) / TDs (8h) / TPs (14h)

  • Principes de conception
  • Patrons du "Gang of Four"
  • GRASP et SOLID
  • Swing

Supports

  • CM 1 : Principes et patrons de conception 
  • CM 2 : Observer & MVC 
  • CM 3 : Java Swing 
  • CM 4 : Facade, Decorator & Composite 
  • CM 5 : Utilisation avancée de Git 

W31 - Développement Web (côté serveur)

Présentation

Type : CMx (6h) / TDs (8h) / TPs (26h)

  • Langage PHP
  • Framework PHP (Laravel)
  • Utilisation et conception d'APIs
  • Sensibilisation à la sécurité (injection)

Supports

  • CM 1 : Introdution à PHP 
  • CM 2 : PDO & POO 
  • CM 3 : Laravel 

W11 - Conception d'interfaces web (2017-2020)

Présentation

Type : CMx (4h) / TDs (6h) / TPs (22h)

  • Séparation contenu-structure-présentation
  • HTML + CSS
  • Javascript côté client
  • Traitements des données JSON

Supports

  • CM 1 : HTML 
  • CM 2 : CSS 
  • CM 3 : JS 

2015-2017

Vacataire à l'Université de Bordeaux.

M1 - Systèmes d'exploitation (Master du PUF au Vietnam)

Présentation

Type : CMx (21h)
Localisation : Au PUF à Hồ Chí Minh, Vietnam.
Langue: Anglais

The main objective is relative to the description of concepts associated to functions necessary in an operating system: file system organization, scheduling, system calls and interruptions, process creation, inter-process communication. It will also address the use of these functions through the standardized interface of services proposed by the operating system. The student will implement skill on sequential and concurrent programming and inter-process communications. This course will address the notions of process, input/output and communications with an initiation to light processes with OpenMP. It will also introduced the main notions of Unix with the dedicated file systems, the terminal and a script shell language.

Supports

Construit à partir des cours de Brice Goglin, Paul Krzyzanowski et Pierre-Antoine Champin.

Merci à Raymond Namyst pour son aide à l'ellaboration de ce module.

Cours
  • CM 1 : Introdution 
  • CM 2 : Process and Thread 
  • CM 3 : Scheduling 
  • CM 4 : Concurrency and synchronization 
  • CM 5 : Time management 
  • CM 6 : Memory management
    • 6.1 : Introduction 
    • 6.2 : Paging 
    • 6.3 : Kernel memory 
  • CM 7 : File systems
    • 7.1 : Concepts 
    • 7.2 : Implementation 
TDs
  • TD 1 : Ordonnancement des processus 
  • TD 2 : Reveiller en endormir un processus 
  • TD 3 : Mémoire virtuelle 
  • TD 4 : Systèmes de fichiers 
  • TD 5 : Modules du noyau et fichiers spéciaux 
TPs
  • TP 0 : Premiers pas 
  • TP 1 : Concurrence et synchronisation 
  • TP 2 : Multithreading 
  • TP 3 : Pagination 

M1 - Image et Son : Fondements

Présentation

Type : TDs (8h)

L'objectif est de comprendre et mettre en oeuvre les outils théoriques pour l'image et le son numériques en appliquant concrètement les concepts du cours. Sur ces 8h, nous abordons la question de l'estimation du mouvement dans les vidéos.

Supports

TDs
  • TD 1 : Prise en main d'OpenCV 
  • TD 2 : Block Matching 
  • TD 3 : Cafforio-Rocca 

L2 - Initiation aux Images Numériques

Présentation

Type : TDs (2x11h)

L'objectif est de comprendre les principes fondamentaux de l'analyse et du traitement d'images. En particuliers, sont abordées les notions de redimensionnement, d'espaces colorimétriques ou encore d'opératurs morphologiques. La partie implémentations est réalisée en Java sur la base de plugins du logiciel ImageJ.

Supports

Cours
  • CM 1 : Images discrètes 
  • CM 2 : Un peu de couleur 
  • C% 3 : Quelques notions de traitement d'images 
TDs
  • TD 1 : Introduction à ImageJ 
  • TD 2 : Transformations géométriques 
  • TD 3 : Un peu de couleurs 
  • TD 4 : À vos palettes 
  • TD 5 : Détection du mouvement 

Fichiers utiles pour l'ensemble des TDs :


2014-2015

Attaché Temporaire d'Enseignements et de Recherche à l'UFR Mathématiques-Informatique.

L1 - Architecture des ordinateurs

Présentation

Type : CMx (10h) / TDs (10h)

L'objectif de ce module est de faire découvrir aux étudiants les principes de bases qui régissent l'ensemble des architectures des ordinateurs existantes (architecture de Von Neumann, décomposition en couches du niveau matériel jusqu'à la programmation haut-niveau, circuits logiques et langage d'assemblage). Le volume horaire étant assez restreint aux vues des aspects qui peuvent être étudiés, ce cours reste théorique (pas de travail sur machine).

Supports

Basés sur le cours de Carine Pivoteau.
Initialement adaptés par Marion Guthmuller.

Cours
  • CM 1 : Introduction 
  • CM 2 : Structure d'un ordinateur 
  • CM 3 : Circuits logiques 
  • CM 4 : Circuits arithmétiques 
  • CM 5 : Mémoire 
  • CM 6 : Micro Architecture 
  • CM 7 : Couche ISA 
  • CM 8 : Architecture x86 
TDs
  • TD 1 : Machine d'Alan Turing 
  • TD 2 : Circuits Logiques 
  • TD 3 (TP) : Logic simulator
  • TD 4 : Circuits Arithmétiques 
  • TD 5 : Autour de la pile 
Examens
  • Examen 2013 
  • Rattrapage 2013 
  • Examen 2014  (correction )

L1 - Algorithmique et programmation (semestre 1)

Présentation

Type : CMx (20h) / TDs (40h)

Ce module a pour objectif d'introduire les premières notions fondamentales d'une démarche algorithmique. Il permet également d'aborder le principe du passage de l'algorithme à son implémentation dans un langage objet.

Supports

TDs
  • Introduction : Algorithmes débranchés 
  • TD 1 : Les variables 
  • TD 2 : Les booléens 
  • TD 3 : Représenter l'information 
  • TD 4 : Des algorithmes simples 
  • TD 5 : Les conditionnelles 
  • TD 6 : Les boucles 
  • TD 7 : Les tableaux 1D 
  • TD 8 : Les tableaux 2D 
  • TD 9 : Les chaines de caractères 
Autres
  • Syntaxe algorithmique 

Projet Apagos

L1 - Algorithmique et programmation (semestre 2)

Présentation

Type : CMx (14h) / TDs-TPs (26h)

Ce module a pour objectif d'introduire le langage Python pour mettre en œuvre les notions découvertes au premier semestre. Il propose de s'approprier la syntaxe du langage avant d'approfondir ces notion et d'en introduire de nouvelles : quelques structures de données, la manipulation de fichiers ou la portée des variables.

Supports

À venir...

L2 - Algorithmique de fichiers

Présentation

Type : CMx (15h) / TDs (15h)

Supports

Cours
  • CM 1 : Structure des fichiers 
  • CM 2 : Manipulation des fichiers 
  • CM 3 : Organisation logique - synthèse 
  • CM 4 : Stockage physique et Systèmes de fichiers 
  • CM 5 : L'indexation de fichiers 
TDs
  • TD 1 : Stratégie de représentation d'un enregistrement 
  • TD 2 : Pyhton, CSV & stratégies 
  • TD 3 : Recherche et insertion de contacts 
  • TD 4 : Premiers index 
  • TD Bonus : Images indexées 

Projet STAN (2014/2015)

  • Sujet  

Préparation au C2I

Présentation

Type: CMx/TDs/TPs (20h)

Formations aux outils de base pour mieux appréhender le contexte numérique actuel :

  • Traitement de texte et Tableur
  • Système d'exploitation et fichiers
  • Internet : historique, recherche web avancée, mails, ftp
  • PAO : création de présentations, diaporamas

Supports


2011-2014

Chargé d'enseignements à Telecom Nancy (anciennement ESIAL).

1A - Structures de données

Présentation

Type : CMx-TDs (18h) / TPs (14h) / Projet (30h à 40h)

Ce module vient compléter la formation à l'algorithmique et aux structures de données aussi bien d'un point de vue fondamental que sous l'angle de la conception et de la programmation orientée objet.

Objectifs

  • Connaitre, savoir choisir, utiliser et évaluer les structures de données usuelles
  • Mettre en pratique et approfondir les notions abordées dans les modules POO et TOP

Supports

TDs
  • TD 1 : Introduction 
  • TD 2 : Les listes 
  • TD 3 : Les tables 
  • TD 4 : Les arbres 
  • TD 5 : Les graphes 
TPs
  • TP 1 : Les flots  ( exercices supplémentaires)
  • TP 2 : Tarifs 
  • TP 3 : Les listes 
  • TP 4 : Les tables 
  • TP 5 : Les arbres 
Examens
  • Sujet d'examen 2012 
  • Sujet d'examen 2013 
  • Sujet d'examen 2014 

Projet OGAZ (2011/2012)

L'objectif du projet OGAZ est de développer un outil capable de générer un analyseur syntaxique descendant d'une grammaire LL(1). C'est l'occasion de mettre en œuvre les compétences acquises dans les modules "Maths Discrètes", "Programmation Objet et Techniques" et "Outils pour la programmation". C'est également un premier pas vers l'apprentissage des techniques de compilation qui seront étudiées en deuxième année dans le module Traduction. Dans le cadre de ce projet, nous proposons d'appliquer la méthode de construction d'analyseur syntaxique descendant par automate : l'analyseur s'appuie sur la table de transition d'un automate construit à partir de la grammaire.

  • Sujet  

Projet MiniFacebook (2012/2013)

L'objectif de ce projet est de développer un logiciel de gestion de réseau social simplifié en Java. En particulier, les aspects réseaux et base de données sont complètement ignorés. Ce projet se concentre donc sur l'utilisation de structures de données adaptées aux notions d'amis, d'invitations ou encore de messages. Il porte également dans une moindre mesure sur la bonne utilisation de la généricité. Nous proposons un découpage en deux parties de ce projet, une première portant uniquement sur la conception et une seconde sur l'implantation Java. Ce découpage permet une réelle prise en compte de la phase de conception en amont de l'implantation.

  • Sujet  

Projet Ordonnanceur de tâches (2013/2014)

L'objectif de ce projet est de concevoir, développer et tester un ordonnanceur de tâches. En particulier, il doit permettre la mise en œuvre des connaissances acquises dans les différents modules de programmation : héritage, interfaces, structures de données algorithmes, gestion des flux, etc. La liste des tâches à ordonnancer sont caractérisées par un numéro, un intitulé, un instant d'arrivée et éventuellement une priorité. L'ordonnancement doit pouvoir être réalisé suivant différentes politique classiques : FIFO, SJF, RR(q), PR ; et deux politiques préemptives : PFIFO et SRT. L'ordonnancement doit enfin pouvoir se faire de manière interactive.

  • Sujet  

1A - Shell

Présentation

Type : TDs (4h) / TPs (10h)

Le langage C est souvent présenté comme "un langage de programmation système", et il est vrai que la plupart des systèmes d'exploitation et logiciels "de bas niveau" sont écrits dans ce langage. Le langage de commandes UNIX, nommé Shell, et le C présentent de nombreuses similitudes car ils ont été inventés conjointement. Après avoir vu dans la première partie du module le langage C, cette seconde partie a pour objectif l'apprentissage des interpréteurs de commandes.

Objectifs

  • Maitriser les concepts fondamentaux du shell
  • Savoir les mettre en pratique au travers de petits scripts
  • Connaitre les outils tels que sed, grep ou find

Supports

TDs
  • TD 1 : Introduction aux Shell 
  • TD 2 : Les expressions régulières 
TPs
  • TP 1 : If, for, while... 
  • TP 2 : Find, grep, sed... (jeune padawan) 
  • TP 3 : Grep, sed, cut... (jedi) 
  • TP 4 : Grep, sed... (maître jedi) 
Examens
  • Sujet d'examen 2012 
  • Sujet d'examen 2013 
  • Sujet d'examen 2014 

2A - Projet de Conception et Développement JAVA

Présentation

Type : CMx (2h) / Projet (60h à 80h)

Ce projet de deuxième année permet aux étudiants d'approfondir par la pratique les méthodes et techniques acquises en programmation objet, à travers la conception et le développement d'un produit logiciel en Java. À partir d'un sujet à la fois précis et ouvert, les étudiants sont amenés à assurer les différentes phases inhérentes à la conduite d'un projet informatique en suivant une méthode de type agile.

Sujets

  • 2011/2012 : Client Picasa Web  
  • 2012/2013 : Plateforme d'entrainement cérébral  
  • 2013/2014 : Planification Stan & Open Data