Github link

Adrien Krähenbühl

Associate professor × IUT Robert Schuman × ICube × Unistra

fr en


Assistant professor at IUT Robert Schuman.

P42 - Mobile development


Type : Lectures (6h) / Practical works (26h)


P22 - Development quality


Type : Lectures (4h) / Practical works (16h)


A31 - Analysis (Object Oriented Design)


Type : Lectures (6h) / Tutorials (8h) / Practical works (14h)

  • Design principles
  • Design patterns from the " Gang of Four"
  • Swing


  • CM 1: Principles and design pattern 
  • CM 2 : Observer & MVC 
  • CM 3: Java Swing 
  • CM 4: Facade, Decorator & Composite 
  • CM 5 : Advanced use of Git 

W31 - Web development (server side)


Type: Lectures (6h) / Tutorials (8h) / Practical works (26h)

  • PHP
  • Laravel Framework
  • Use and design of APIs
  • Security awareness (injection)


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

W11 - Web interface design (2017-2020)


Type: Lectures (4h) / Tutorials (6h) / Practical works (22h)

  • Division content-structure-presentation
  • HTML + CSS
  • Client-side Javascript
  • JSON data processing


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


Teaching assistant at Université de Bordeaux.

M1 - Operating Systems (PUF Master, Vietnam)


Type: Lectures (21h)
Localization: At PUF in Hồ Chí Minh, Vietnam.
Language: English.

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.


Build from courses of Brice Goglin, Paul Krzyzanowski and Pierre-Antoine Champin.

Thanks to Raymond Namyst for his help in ellaborating the course structure.

  • Lecture 1: Introdution 
  • Lecture 2: Process and Thread 
  • Lecture 3: Scheduling 
  • Lecture 4: Concurrency and synchronization 
  • Lecture 5: Time management 
  • Lecture 6: Memory management
    • 6.1: Introduction 
    • 6.2: Paging 
    • 6.3: Kernel memory 
  • Lecture 7: File systems
    • 7.1: Concepts 
    • 7.2: Implementations 
  • Tutorial 1: Process scheduling 
  • Tutorial 2: Sleep and awake of processes 
  • Tutorial 3: Mémoire virtuelle 
  • Tutorial 4: File system 
  • Tutorial 5: Kernel modules and special files 
Practical works
  • Practical work 0: First steps 
  • Practical work 1: Concurrency and synchronization 
  • Practical work 2: Multithreading 
  • Practical work 3: Paging 

M1 - Images and Signals: Fundamentals


Type: Tutorials (8h)

The objective is to understand and apply the theoritical tools for digital images and signals by concretely applying the courses concepts. In 8 hours, we will see the question about the motion estimation in videos.


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

L2 - Introduction to Digital Images


Type: Tutorials (2x11h)

The ojective consists in understanding the basis of image analysis and processing. In particular, we adresse the concepts of resizing, color spaces or morphological operators. The implementaiton part is performed using Java, on the basis of ImageJ]( plugins.


  • Lecture 1: Digital images 
  • Lecture 2: A little bit of color 
  • Lecture 3: Some notions of image processing 
  • Tutorial 1: Introduction to ImageJ 
  • Tutorial 2: Geometrical transformations 
  • Tutorial 3: A little bit of color 
  • Tutorial 4: On your brushes 
  • Tutorial 5: Motion detection 

Useful files comon to all tutorials:


Teaching assistant at UFR Mathématiques-Informatique.

L1 - Computer architecture


Type: Lectures (10h) / Tutorials (10h)

The objective of this module is to introduce to student basic principles governing all existing computer architectures: Von Neumann, layers decomposition from hardware to high-level programing, logic device and assembly language). Due to the limited time related to the number of aspects to study, this courses keeps theoritical (no computer practices).


Based on Carine Pivoteau courses.
Formerly adapted by Marion Guthmuller.

  • Lecture 1: Introduction 
  • Lecture 2: Computer structure 
  • Lecture 3: Logic circuits 
  • Lecture 4: Arithmetic circuits 
  • Lecture 5: Memory 
  • Lecture 6: Micro Architecture 
  • Lecture 7: ISA layers 
  • Lecture 8: x86 architecture 
  • Tutorial 1: Alan Turing machine 
  • Tutorial 2: Logic circuits 
  • Tutorial 3 (TP): Logic simulator
  • Tutorial 4: Arithmetic circuits 
  • Tutorial 5: With a stack 
  • Tutorial 6: Nand2Tetris 
  • Exam 2013 
  • Resit 2013 
  • Exam 2014  (correction )

L1 - Algorithms and programing (semester 1)


Type: Lectures (20h) / Tutorials (40h)

This objective of this module id to introduce first fundamental notions of an algotithmic approach. It also allows to adress principle to begin with an algorithm to obtain one implementation in a object language.


  • Introduction: Unplugged algorithms 
  • Tutorial 1: Variables 
  • Tutorial 2: Booleans 
  • Tutorial 3: Representation of information 
  • Tutorial 4: Simple algorithms 
  • Tutorial 5: Conditions 
  • Tutorial 6: Loops 
  • Tutorial 7: Arrays (1D) 
  • Tutorial 8: Arrays (2D) 
  • Tutorial 9: Strings 
Other stuff
  • Algorithmic syntax 

Apagos project

L1 - Algorithms and programing (semester 2)


Type: Lectures (14h) / Tutorials (26h)

This module aims to introduce he Pyhton language in order to apply notions discovered during the 1st semester. It proposes to take ownership of Pyhton syntax before to delving into these notions and introduing news: some data structures, file management or scope of variables.


In progress...

L2 - File algorithmic


Type: Lectures (15h) / Tutorials (15h)


  • Lecture 1: File structure 
  • Lecture 2: File management 
  • Lecture 3: Logicial organizing - synthesis 
  • Lecture 4: Physical storage and File system 
  • Lecture 5: File indexation 
  • Tutorial 1: Strategy of record representation 
  • Tutorial 2: Pyhton, CSV & strategy
  • Tutorial 3: Contact search and insertion
  • Tutorial 4: First index 
  • Tutorial Bonus: Indexed images 

STAN project (2014/2015)

  • Topic  

Training to C2I


Type: Lectures/Tutorials/Practical works (20h)

Training in basic tools for better understanding of current digital context:

  • Word processing and Spreadsheet
  • Operating system and files
  • Internet: history, advanced web search, emails, ftp
  • Desktop publishing: presentation building, diaporama



Teaching assistant at Telecom Nancy (formerly ESIAL).

1A - Data structures


Type: Lectures-Tutorials (18h) / Practical works (14h) / Projet (30h à 40h)

This module completes algorithmic and data structures formation by three ways:

  • from a fundamental point of view
  • from the design point of view
  • from the object-oriented programming (OOP) point of view.


  • Know how to choose, use et evaluate usual data structures
  • Practicing and developing the concepts of OOP and TOP modules.


  • Lecture/Tutorial 1: Introduction 
  • Lecture/Tutorial 2: Lists 
  • Lecture/Tutorial 3: Dictionaries 
  • Lecture/Tutorial 4: Trees 
  • Lecture/Tutorial 5: Graphs 
Practical works
  • Practical work 1: Streams  ( more exercices)
  • Practical work 2: Prices 
  • Practical work 3: Lists 
  • Practical work 4: Dictionaries 
  • Practical work 5: Trees 
  • Exam 2012 
  • Exam 2013 
  • Exam 2014 

OGAZ project (2011/2012)

The objective of OGAZ project is to develop a tool generating a down parser for an LL(1) grammar. Students must use skills obtained in "Discret mathematics", "Object programming and technics" and "Tools for programming" modules. OGAZ is also a first step towards the learning of compiling technics that will be studied in second year, in "Translation" module. We propose to apply the building method of a down parser by automaton: the analyser refers to a transition table of an automaton constructed from a grammar.

  • Topic  

Simple Facebook project (2012/2013)

The objective of this project is to develop a simplified software of social network management in Java. Especially, the network and database issues are completely overlooked. This project focuses on the use of data structures suitable for notions of friends, invitations or posts. It addresses also to a lesser extent on the good use of genericity. We propose a division into two parts, a first only concerning the design and a second for the Java implementation. This division allows a real consideration of the design part upstream from Java implementation.

  • Topic  

Job Scheduler project (2013/2014)

The objective of this project is to design, develop and test a job scheduler. In particular, it should allow to use the knowledges acquired in programming modules: inheritance, interfaces, data structures, algorithms, flow management, etc. The tasks to scheduled are specified with a number, a title, an arrival time and possibly a priority. The scheduling must be made ​​according to various conventional policies: FIFO, SJF, RR (q), PR; and two pre-emptive policies: PFIFO and SRT. The scheduling must finally be able to be executed interactively.

  • Topic  

1A - Shell


Type: Tutorials (4h) / Practical works (10h)

The C language is often presented as a "system programming language", and it is true that most of operating systems ang low-level software are written in C. The UNIX command language, named Shell, and C present many similarities as they were jointly invented. After the first part concerning the C language, this second part aims the learning of command interpreters and Shell concepts.


  • Master fondmental concepts of shell
  • Know how practicing them with some little scripts
  • Know how using tools like sed, grep or find


  • Tutorial 1: Shell introduction 
  • Tutorial 2: Regular expressions  
Practical works
  • Practical work 1: If, for, while... 
  • Practical work 2: Find, grep, sed... (young padawan) 
  • Practical work 3: Grep, sed, cut... (jedi) 
  • Practical work 4: Grep, sed... (jedi master) 
  • Exam 2012 
  • Exam 2013 
  • Exam 2014 

2A - Design and developement project (in JAVA)


Type: Lectures (2h) / Project (60h à 80h)

This project allows to develop by practicing, technics and methods obtained in object programming, by designing and developing a JAVA software. With an open topic, students lead the different steps of a computing project by using agile methods.


  • 2011/2012: Picasa Web Client  
  • 2012/2013: Brain Training Challenge  
  • 2013/2014: Stan Planner from & Open Data