Github link

Adrien Krähenbühl

Associate professor × IUT Robert Schuman × ICube × Unistra

fr en

2017-actually

Assistant professor at IUT Robert Schuman.

P22 - Development quality

Summary

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

Materials

P4b - Mobile development

Summary

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

  • Android development with Java
  • Activities, Fragments, Intents, Layouts
  • Communications with an API
  • Asynchronous tasks

Materials

  • CM 1: Start with Android 
  • CM 2: Fragments / Persistence / Threads 

A31 - Design and oriented object development

Summary

Type : Lectures (5h) / Tutorials (12h) / Practical works (28h)

  • Design principles
  • Design patterns from the "Gang of Four"
  • GRASP and SOLID
  • Swing

Materials

  • CM 1: Principles and design pattern  
  • CM 2: Structural design patterns from GoF 
  • CM 3: Model-View-Controller 
  • CM 4: Java Swing 

W31 - Server-side web programming

Summary

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

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

Materials

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

W11 - Web interface design (2017-2020)

Summary

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

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

Materials

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

2015-2017

Teaching assistant at Université de Bordeaux.

M1 - Operating Systems (PUF Master, Vietnam)

Summary

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.

Materials

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

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

Lectures
  • 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 
Tutorials
  • 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

Summary

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.

Materials

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

L2 - Introduction to Digital Images

Summary

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](http://rsbweb.nih.gov/ij/) plugins.

Materials

Lectures
  • Lecture 1: Digital images 
  • Lecture 2: A little bit of color 
  • Lecture 3: Some notions of image processing 
Tutorials
  • 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:


2014-2015

Teaching assistant at UFR Mathématiques-Informatique.

L1 - Computer architecture

Summary

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).

Materials

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

Lectures
  • 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 
Tutorials
  • 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 
Exams
  • Exam 2013 
  • Resit 2013 
  • Exam 2014  (correction )

L1 - Algorithms and programing (semester 1)

Summary

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.

Materials

Tutorials
  • 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)

Summary

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.

Materials

In progress...

L2 - File algorithmic

Summary

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

Materials

Lectures
  • Lecture 1: File structure 
  • Lecture 2: File management 
  • Lecture 3: Logicial organizing - synthesis 
  • Lecture 4: Physical storage and File system 
  • Lecture 5: File indexation 
Tutorials
  • 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

Summary

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

Materials


2011-2014

Teaching assistant at Telecom Nancy (formerly ESIAL).

1A - Data structures

Summary

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.

Objectives

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

Materials

Lectures/Tutorials
  • 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 
Exams
  • 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

Summary

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.

Objectives

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

Materials

Tutorials
  • 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) 
Exams
  • Exam 2012 
  • Exam 2013 
  • Exam 2014 

2A - Design and developement project (in JAVA)

Summary

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.

Exams

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