# Compétences DATA/IA ## 1 - Unix Shell - Savoir ce que fait exactement `apt install` - Connaitre les redirections `>` et `>>` - Connaitre les pipes `cmd | cmd` - Connaitre les variables d’environnement - Connaitre le fonctionnements de `PATH` - Comprendre la difference entre `apt install` et `pip install` - Connaitre la commande `grep` - Connaitre la commande `find` - Connaitre la commande `which` - Savoir se connecter via `SSH` sur un serveur distant - Connaitre la notion de `port forwarding` en SSH - Savoir créer une clef SSH et savoir où elle est localiser ## 2 - GIT - `git status` - `git add` - `git log` - `git commit - m` - `git push origin` - `git pull` - `git reset` - `git clone` - `git stash` / `stash pop` - `git checkout` / `git checkout -b` - `git branch` - `git fetch` ## 3 - Python basique - Les différentes structures de données : `String`, `Integer`, `List`, `Dict` - Savoir importer un module - Comprendre ce qui se passe réellement lors d’un import - Savoir créer son propre module python - Savoir écrire et utiliser une class - Savoir utiliser une méthode d’un objet - Savoir expliquer la difference entre class et objet - Savoir lire / écrire un fichier (`CSV` par exemple) ## 4 - API - Savoir utiliser le module requests - Savoir la différence entre une requête `GET` et `POST` - Savoir interpreter le format de réponse (`JSON`) - Connaitre les principaux codes de réponse `HTTP` (200, 202. 404, 502, etc) - Comprendre la notion d’identification et de coût d’usage d’une API comme Twitter - Connaitre la notion de `query param` => les `?clef=valeur` dans l’URL - Savoir créer sa propre API via `Flask` ## 5 - Base de données - Savoir ce qu’est une base de données concrètement et son usage - Savoir que le SQL n’est pas le seul type de base de données (`no-SQL`, `GraphDB`, `in-memory DB`, etc) - Savoir se connecter à un serveur SQL (que ce soit en local ou sur Azure) - Savoir utiliser les différentes interfaces (SQL workbench par exemple) - Savoir faire des requêtes simples (`FROM students SELECT *`) - Comprendre la notion de relationnel entre plusieurs tables (notion de jointure) - Savoir communiquer avec une base de données depuis python ## 6 - Azure - Savoir créer une machine virtuelle et savoir évaluer la puissance matériel nécéssaire - Savoir créer une instance base de donnée et interagir avec (ajouter de la data, etc) - Connaitre la différence entre `IaaS` / `SaaS` / `PaaS` / `FaaS` - Savoir lire la documentation et être autonome sur un service de la partie Cognitive Services (`Face API, Speech`, `Language Understanding`, `Custom Vision`, etc) ## 7 - DevOps - Savoir maitriser docker (`pull`, `run`, etc) - Savoir créer son propre `Dockerfile` - Savoir réaliser des tests unitaire de son code - Connaitre la notion de `CI/CD` (`Jenkins`, `CircleCI`, etc) ## 8 - Python avancé - Maitriser la notion de concurrence / parallélisme - Savoir gérer les exceptions - Savoir bien réaliser des messages de logs - Expressions régulières (RegEx) ## 9 - Machine Learning - Savoir afficher des graphs (via `matplotlib` par exemple) - Savoir analyser la data avec `Pandas`/`Numpy` - Savoir nettoyer la data non-conforme (données manquantes, données aberrantes) - Savoir mesurer la qualité du modèle entraîné (overfitting et underfitting) - Savoir choisir le type de modèle : supervisé, non supervisé, regression, classification - Savoir réaliser une approche Machine Learning avec `Scikit-learn` - Savoir établir un dashboard de la data via `PowerBI` ## 10 - Soft skills - Faire preuve de pragmatisme pour répondre à la problématique donné - Savoir être autonome dans sa recherche de solutions techniques - Savoir experimenter (en local par exemple) du plus simple au plus complexe de façon iterative - Savoir restituer à l’oral en vulgarisant