- Marc TEYSSIER - marc.teyssier@devinci.fr
- Yliess HATI - yliess.hati@devinci.fr
This document presents all the Lectures we will give this year for the Creative Technologist Students. You will find information about the Lecture's Objectives π₯, Content π, Skills πͺ, Bibliography π, and Requirements π·οΈ as well as all the Assignments π, Installation π Lists, Notions 𧬠and Rating Constraints π.
This document is subject to change during the first semester.
- (MDT) Media & Digital Technologies π₯οΈ
- (AI) Artificial Intelligence π€
- (CG) Computer Graphics π₯
- (BLT) Bio & Living Technologies π
Objectives π₯
This course introduces the theory, tools, and methods to create aesthetically pleasing real-time data-driven motion graphics in the browser. We will cover perception, cognition, colors, do and don't of DataViz, the artistic practice, crafting messages, playing with transitions, etc. as well as technical aspects such as Javascript on the frontend, node-based visual programming or Python frameworks to setup APIs and data processing on the server.
Content π
This course introduces the theory, tools, and methods to create aesthetically pleasing real-time data-driven motion graphics in the browser. We will cover perception, cognition, colors, do and don't of DataViz, the artistic practice, crafting messages, playing with transitions, etc. as well as technical aspects such as Javascript on the frontend, node-based visual programming or Python frameworks to setup APIs and data processing on the server.
Skills πͺ
- Creating Animated Graphics in the Browser
- Developing Dataviz Libraries, Core Drawing, Animation, and Layout Algorithms
- Developing and Deploying Python Fullstack App
- Develop Creative and Design Skills
Requirements π·οΈ
No requirements except basic programming knowledge.
- HTML, CSS, Javascript, and Modern Reactive Framework, Vue3 for Building Web Applications
- Python FastAPI, and MongoDB for Serving Backend APIs
- Designing Responsive and Dynamic Frontend Applications by Playing with CSS and the Canvas
Installation π
- Your Favorite IDE
- A Local HTTP Server (
python3 βm http.server
) - Node & Node Package Manager (NPM)
- VueJS 3.2 and Vite
Notions π§¬
index.html
<!DOCTYPE html>
<html>
<head>
<title>Website Title</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<nav>
<ul>
<li href="#">Home</li>
<li href="#">About</li>
<li href="#">Contact</li>
</ul>
</nav>
<header>
<h1>Website Title</h1>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit.</p>
</header>
<article>
<h2>Lorem Ipsum</h2>
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to
make a type specimen book. It has survived not only five centuries, but also
the leap into electronic typesetting, remaining essentially unchanged.
It was popularised in the 1960s with the release of Letraset sheets
containing Lorem Ipsum passages, and more recently with desktop publishing
software like Aldus PageMaker including versions of Lorem Ipsum.
</p>
<h2>Nobody</h2>
<img src="https://thispersondoesnotexist.com/" alt="Nobody">
</article>
<footer>
<a href="mailto: yliess.hati@devinci.fr">yliess.hati@devinci.fr</a>
</footer>
<body>
</html>
Card.vue
<template>
<div class="card">
<img src="cover">
<h2>{{ title }}</h2>
<p>{{ abstract }}</p>
<button>Learn More</button>
</div>
</template>
<script>
export default {
props: {
cover: { type: String, required: true },
title: { type: String, required: true },
abstract: { type: String, required: true },
}
}
</script>
Page.vue
<template>
<div class="page">
<ul>
<li v-for="(card, index) in cards" :key="index">
<Card
cover="card.cover"
title="card.title"
abstract="card.abstract" />
</li>
</ul>
</div>
</template>
<script>
import { ref } from "vue"
import Card from "../components/Card.vue"
import api from "../use/api.js"
export default {
setup() {
const cards = ref([])
api.getCards().then(data => { cards.value = data })
return { data }
}
}
</script>
Assignements π
- Create a Simple HTML5 Page with a Header and Count Button
- Increment and Display Count when Clicking the Button
- Create an Article Like Page
- Redo 03 using VueJS
- Create a Blog with Fake Content
Installation π
- Docker to Encapsulate
- Python 3.8+
- FastAPI
- MongoDB
Assignments π
- Adapt the Blog to Parse Markdown to Create Page Content
- Put Website Markdown Articles into a Folder and Serve the Folder with FastAPI
- Initiate a MongoDB with Articles Metadata and Content
- Implement a REST API to Fetch MongoDB with FastAPI
- Fetch Content from API to populate the Blog
Assignements π
- Create a Blank HTML Page with a Full Size Canvas
- Draw in the Canvas
- Erase in the Canvas
- Make a Simple Document Signing Website
Objectives π₯
The Artificial Intelligence (AI) track aims to provide deep understanding and design skills on Data-Driven Modelisation using modern Deep Learning (DL).
Content π
This course covers basic, intermediary, and advanced topics in modern Artificial Intelligence called Deep Learning.
Skills πͺ
- Use Numpy and PyTorch Frameworks
- Design, Implement, Train and Deploy at Scale advanced Neural Networks
- Build an advanced Autograd Library
Bibliography π
- Deep Learning - Ian Goodfellow, Yoshua Bengio et al. - The MIT Press
- L'Apprentissage Profond - François Chollet - Machinelearning.fr
- Linear Algebra and Learning from Data - Gilbert Strang - Wellesley-Cambridge Press
- Pattern Recognition and Machine Learning - Christopher M. Bishop - Springer-Verlag New York Inc
- Reinforcement Learning: An Introduction (second edition) - Richard S. Sutton - Bradford Books
Requirements π·οΈ
- Hack & Puzzle
- Linear Algebra
- Statistics and Probabilities
- Python
- C++
Rating Constraints π
- Design and Train a Custom Model
- Deploy the Model either on Web (Server or In-Browser) or in Device
- The Model must use an Acceleration Device (GPU, NPU, TPU, ... etc.)
- The Evaluation of the Model must Contain at least one Objective and one Subjective Metric
- The Model must be Benchmarked against State of the Art or at least Ground Truth when Available
- Model Weights (kB) and Inference Speed must be evaluated
- The Model must Solve a Problem that is not solvable without Deep Learning
- Multi-Layer Perceptron, Back Propagation, and Convolutional Neural Network for Computer Vision
- Recurrent Neural Networks, Bag of Words, Embeddings, Auto Encoders, Attention Mechanism and Transformers for Natural Language Processing
- Q Learning, Deep Q Learning, Actor Critique, and Policy Optimization for Atari Games
- Prunning, Quantization, Distillation, TochScript, and ONNX for Embedded Deep Learning Applications (Web, Devices)
- Tensors, and Autograd for Automatic Backward Differentiation from Scratch
AI01: Multi-Layer Perceptron, Back Propagation, and Convolutional Neural Network for Computer Vision
Installation π
- Python 3.8+
- Numpy
- PIL
- PyTorch (with Cuda 10.2 ou 11.1 & CudNN 7 if Nvidia GPU GTX/RTX >= 980 availbale)
- TorchVision
- Google User Account
Notions π§¬
Assignements π
- Setup a DataLoader for the MNIST Dataset
- Implement a Simple Multi Layer Perceptron (MLP)
- Define the Loss Function (Cross Entropy) and the Optimizer (AdamW)
- Train the Model on Multiple Epochs following a Train, Validation and Test scheme
- Save the model's Weights on Disk as a ".pt" file
- Implement a LeNet5 architecture and Retrain
- Implement a VGG16 architecture and Retrain
- Implement a ResNet15 architecture and Retrain
- Use a Pretrained EfficientNet and Finetune on CIFAR10
AI02: Recurrent Neural Networks, Bag of Words, Embeddings, Auto Encoders, Attention Mechanism and Transformers for Natural Language Processing
Installation π
- TorchText
- HuggingFace
Assignments π
- Download The Entire Harry Potter Books
- Use a Tokenizer, a Lemmer, and a Stemmer (and more) to Clean the Dataset and build a Dictionary
- Train a Recurrent Neural Network Language Model on this data
- Save the model's Weights on Disk as a ".pt" file
- Generate new Sentences based on user Inputs
- Train a Long Short Term Memory Language Model on this data
- Train a Long Short Term Memory Language Model with Attention on this data
- Use a Pretrained Transformer Model and Finetune on this data
- Train a Seq2Seq Model with Attention on this data
- Visualize a Subset of the Harry Potter Dictionary and their Hidden Variable (Downsampled to 2 dims)
Installation π
- Gym
Assignments π
- Initialize a CartPole-v1 Gym Environment
- Make a Random Agent
- Train a Deep Q Network (DQN) Agent from State Vector
- Train a DQN Agent from Image Only
- Train a DQN Agent from Image Only with Replay Memory
- Train a DQN Agent from Image Only with Prioritized Replay Memory
- Train a Dueling Double DQN from Image Only with Prioritized Replay Memory
AI04: Prunning, Quantization, Distillation, TochScript, and ONNX for Embedded Deep Learning Applications (Web, Devices)
Installation π
- ONNX Runtime
- Tensorflow
- Git
Assignments π
- Use EfficientNet and Finetune on CIFAR10 with Augmentation and Dropout
- Repeat 01 with Mixed Precision
- Save the model's Weights on Disk as a ".pt" file
- Fuse Layers
- Export as a JIT model
- Export as an ONNX model
- Export as an TensorJS model
- Build an HTML/JS Web Page to Drop Images
- Perform Inference on the Image and Display the Class
- Show Top-5 Probabilities as a Bar Plot Under the Image
- Serve as a Github Page
Installation π
- CMake
- G++
- PyBind11
Assignements π
- Build a Tensor Class in C++
- Implement Standard Operators (+, -, *, /, @)
- Implement Broadcast for Scalars and Include in Operators
- Implement a Context Based Gradient System
- Implement Minimal Layers and Activations (Linear, ReLU, Softmax)
- Train a Simple Network on FizzBuzz
- Implement Python Bindings using PyBind11
- Train a Simple Network on FizzBuzz
Objectives π₯
The Computer Graphics (CG) track provides advanced development methods for Game Design and 3D Graphical Experiences.
Content π
This course covers basic, intermediary, and advanced topics in Computer Graphics for AR/VR Video Games and 3D Experiences.
Skills πͺ
Develop a rendering engine with OpenGL from scratch Game development based on the Unity Game Engine for VR/AR experiences
Bibliography π
- Linear Algebra and Learning from Data - Gilbert Strang - Wellesley-Cambridge Press
- Fundamentals of Computer Graphics - Steve Marschner, and Peter Shirley - A K Peters/CRC Press
Requirements π·οΈ
- Hack & Puzzle
- Python
- C/C++
- C#
Rating Constraints π
- Design a User Experience
- Use at least One 3D Rendering Technique (Rasterization, RayTracing, RayMarching, ... etc.)
- Deploy an Executable on a Platform (Web, Mobile, or a Game Provider, ... etc.)
- The Controller must involve one or more Body Parts (Voice, Eyes, Hands, Motion Capture, ... etc.)
- 3D Geometry, and the OpenGL Rendering Pipeline
- Forward Rendering, Signed Distance Fields, Ray Marching, Pixel/Fragment Shaders for Demo Scene
- Unity Game Engine, Unity Game Loop Pipeline, Components, and Entity Component System for Video Game Creation
- Guidelines for Building Virtual and Augmented Reality Experiences
- Camera Calibration and Feature Detection for Spatial Positioning
Installation π
- CMake
- G++
- OpenGL
- GLAD
- GLFW
- STB Image
Assignments π
- Initialize a Blank Window with GL Context
- Draw a Triangle (VBO, IBO, VAO, Vertex, and Fragment Shader)
- Implement a Simple Perspective Camera
- Draw a Cube and Enable Depth Test
- Add Support for Uniform Variables
- Add Normals to the Cube
- Implement a Simple Phong Shader given a Light Direction and Color
- Add UVs to the Cube
- Read, Load a 2D Texture and Apply to the Cube
- Rotate the Cube with the Mouse
CG02: Forward Rendering, Signed Distance Fields, Ray Marching, Pixel/Fragment Shaders for Demo Scene
Assignments π
- Draw a Quad (Simple Vertex and Fragment Shader)
- Add Time and Resolution as Uniform Variable to Access in the Pixel Shader
- Draw a white Circle on the Screen
- Move the Circle using a Sinusoidal Pattern
- Implement a Sphere Signed Distance Field (SDF)
- Raymarch the Scene to Show the Sphere
- Implement a Simple Perspective Camera
- Approximate the Normals of the Intersection Point
- Add Simple Directional Phong Lighting
- Add Other Primitives and Mix them using (Max, Min, and their Soft Version)
CG03: Unity Game Engine, Unity Game Loop Pipeline, Components, and Entity Component System for Video Game Creation
Installation π
- UnityHub
- Unity (Latest Available, LTS)
Assignments π
- Instantiate a Cube and a Plane
- Make the Cube move onto the Plane
- Make the Cube Jump and Crouch (Add Spice with the Animation System)
- Spawn Collectibles using Triggers
- Spawn Obstacles using Colliders
- Implement a Fixed Size Cached Obstacle and Collectable System
- Using those Implement a Simple Subway Surfer Game
- Use the Particle System and Animation System to add Juice to the Game
- Use the Shader Graph to Bend the Terrain into Random Direction During the Game
- Show Success, Failure, and Collectable Count using the UI System
- Build the Game for Windows, Linux, Mac, Web, or Mobile
Installation π
- Oculus, HTC Vive or HoloLens Integration
Assignments π
- Create a Simple Scene with Physics Objects and a Floor
- Setup Movement and Simple Hand Interactions (Collisions, ... etc.)
- Implement Object Selection by Pointing at It
- Implement UI Interaction by Pointing at It
- Using CG03 and previous Assignments Recreate Subway Surfer in AR/VR
- Improve the Game by taking Scale and Physical Condition into Consideration
Installation π
- Python 3.8+
- OpenCV
Assignments π
- Use OpenCV to retrieve Images from a Webcam
- Implement a Simple Pinhole Perspective Camera and their Projection from World to Image Coordinates
- Augment the Pinhole Perspective Camera with a Simple Distortion Model
- Use Zang's Method and a Calibration Checkerboard to Extract Intrinsic Parameter from Camera
- Detect the Corners of a Fiducial Tag Printed on a Paper
- Use those Corners as a Basis for a Simple Cube Geometry
- Project the Cube into the Image Plane and Draw it on top of the Image Input
- Optimize for Realtime
Objectives π₯
This module provides knowledge and skills necessary for the design of Bio Technologies, living and Low-Tech products. The students will experiment with different technologies in order to take them in hand and understand their capacities and limitations.
Content π
This teaching module introduces the different techniques of frugal and organic manufacturing. Students will practice in particular the design of tools operating on human motive energy to carry out biological tasks, the study of the principles of fermentation, epigenetics and bioprinting and biofabrication.
Skills πͺ
- Master the manufacturing and frugal innovation processes.
- Understand basics of bio technologies practices (hygiene, etc)
- Understanding of the reproductive cycles of living organisms, and the principles of epigenetic modification
- Build advanced technologies with frugal innovations
Requirements π·οΈ
No requirements.
- Low Tech bio Frugal Innovation
- BioTech Introduction
- Designing Responsive and Dynamic Frontend Applications by Playing with CSS and the Canvas
Teacher π
- Marc Teyssier
- Zacharie Guillaume
Where does low tech come from, what is it for? Introduction to the dependency theory.
Assignments π
- Primary / secondary needs, identification and conception
- Dissasemble and reformulate. Understand the techniques involved, the energy involved
Teacher π
- Marc Teyssier
- Zacharie Guillaume
Overview of methods of frugal prototype for bio technologies.
Assignments π
- Mechanical and optical : Paper microscope / Centrifuge Reproduction
- Water : Analyzer, Purification with moringa seeds + Flexible tanks
Teacher π
- Madalina Nicolae
How to make flexible substrates safe for the environment
Assignments π
- Build a substrate based on your choice technology
- Create electrical pattern
- Form the sensor
- Characterisation
Teacher π Thr34d5 NGO Design Studio (Vivien Roussel, Joanne Jones,
TBD
Assignments π
- Setup the lab
- Basics of lab hygiene
Teacher π Thr34d5 NGO Design Studio (Vivien Roussel, Joanne Jones, ... )
TBD
Assignments π
- Start the mycelium cultures
Teacher π Thr34d5 NGO Design Studio (Vivien Roussel, Joanne Jones, ... )
TBD
Assignments π
- Start the Kombucha cultures
Teacher π Thr34d5 NGO Design Studio (Vivien Roussel, Joanne Jones, ... )
TBD
Assignments π
- TBD
Teacher π
- Marc Teyssier
- Zacharie Guillaume
Assignments π
- Kinetic energy wheels + crankset / structure / Principles
- Create a simple and manual βengine blockβ
- Analyze its power capabilities
- ( Learn to weld / cut wood ) ?
- Design a way of control ( crank, foot)
Teacher π
- Marc Teyssier
- Zacharie Guillaume
Assignments π
- Application of the βengine blockβ
- Use the engine block to cut, saw, centrifuge, charge electrical energy
Teacher π Thr34d5 NGO Design Studio (Vivien Roussel, Joanne Jones, ... )
TBD