Catalogue de Formation - Agenium Campus
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Vue d’ensemble Notre proposition Protocole andragogique • Thématiques : C++ et performance des applicatifs • Sessions de 4 à 10 personnes • De la simple remise à niveau jusqu’au niveau Expert • La manipulation des logiciels est prépondérante • Des intervenants reconnus au niveau international • Validation par la mise en pratique sur des sujets de complexité croissante Types de formations 4 • Formations intra-entreprises • Formations inter-entreprises • Sur site client ou dans nos locaux
Mission pédagogique Direction des programmes Notre objectif Joel FALCOU est ingénieur en informatique, AGENIUM CAMPUS transfère son expertise Docteur et Maître de conférence HDR de technique aux équipes de développement l’Université Paris Saclay. logiciel. Il est le créateur et président de C++FRUG, Pour cela, nous proposons une variété de animateur du Meetup C++ et présentateur dans formations sur différents thèmes souvent sous- de multiples conférences internationales comme estimés et pourtant indispensables dans les BoostCon, C++Now, C++Russia, CppCon et applications d’aujourd’hui et de demain. 5 Meeting C++. Il est aussi membre du comité de standardisation ISO pour le C++ depuis 2014.
Cycle C++ 1 LES BASES DU C++ 2 PERFECTIONNEMENT EN C++ 3 TRANSITION VERS C++14/17 4 METAPROGRAMMATION 5 PROGRAMMATION OBJET AVANCEE
Les Bases du C++ Objectif Cette formation permet d’aborder les bases du langage C++ basée sur les dernières normes du langage (14/17). Niveau Bénéfices attendus • Maîtriser les bases de C++14. INITIATION • Savoir développer une application en C++. • Se familiariser avec l’écosystème C++. 7 Public • Ingénieurs, techniciens et scientifiques désirant s’initier au langage C++. • Une première expérience d’un langage de Durée : 3 Jours programmation quelconque est souhaitable. +1 jour de TP optionnel
Les Bases du C++ • Introduction • Structures de données • Historique du langage et positionnement dans • Types énumérés l’écosystème logiciel actuel • Liste d’initialiseur • Eléments de base d’un programme C++ • Paire et tuple • Processus de compilation • Structure définie par l’utilisateur • Type et variable • Aspect impératif Niveau • Types de base du langage (natif et composite) • Définition et déclaration de fonction • Qualificateurs • Inférence de type • Surcharge de fonction • Fonction générique INITIATION • Inférence du type de retour • Entrées/Sorties 8 • Modèle de flux • La bibliothèque standard • Manipulations de flux • Séquences standards • Formatages/Structurations des entrées • Algorithmes standards • Fonctions anonymes • Structures de contrôles • Notion de flot de contrôle Durée : 3 Jours • Bloc conditionnel • Boucles déterministe et non-déterministe +1 jour de TP optionnel
Perfectionnement en C++ Objectif Cette formation permet d’approfondir la pratique du langage C++ basée sur les dernières normes du langage (14/17). Niveau Bénéfices attendus • Maîtriser les concepts avancés de C++14. AVANCÉ • Savoir utiliser les outils associés au langage. • Savoir développer des composants C++ réutilisables. 9 Public • Ingénieurs, techniciens et scientifiques désirant améliorer leur pratique du langage C++. • Une première expérience en C++ est nécessaire. Durée : 3 Jours +1 jour de TP optionnel
Perfectionnement en C++ • Introduction • La bibliothèque standard • Historique du langage et positionnement dans • Itérateur et allocateur custom l’écosystème logiciel actuel • Gestion du temps • C++ comme un langage multi-paradigme • Outils pour le calcul numérique • Threads et calculs asynchrones • Programmation orientée objet • Principes généraux • Programmation templates Niveau • Notion d’interface • Principes généraux • Héritage et polymorphisme • Méthodologie SOLID • Template de fonction • Template de classe AVANCÉ • Template variadique • Gestion des ressources • Perfect Forwarding et 10 • lvalue et rvalue Références Universelles • Sémantique de transfert • Alias de type • Principe de la RAII • Introspection via les traits • Pointeur à sémantique riche • Calcul à la compilation • Règle du ZERO Durée : 3 Jours +1 jour de TP optionnel
Transition vers C++14/17 Objectif Cette formation permet d’approcher les éléments spécifiques des normes C++14 et 17 à partir d’une base de code C, C++ 98 ou C++ 11. Niveau Bénéfices attendus • Maîtriser les nouvelles fonctionnalités de C++14/17. AVANCÉ • Savoir appliquer ces idiomes sur du nouveau code. • Anticiper les changements à apporter à un code legacy. 11 Public • Ingénieurs, techniciens et scientifiques souhaitant évoluer vers les nouvelles normes C++. • Une première expérience en C++ est nécessaire. Durée : 3 4 Jours +1 jour de TP optionnel
Transition vers C++14/17 • Introduction • La bibliothèque standard • Historique du langage et positionnement dans • Séquences et algorithmes standards l’écosystème logiciel actuel • Fonctions anonymes • C++ comme un langage multi-paradigme • Gestion du temps • Axes de changement en C++14/17 • Outils pour le calcul numérique • Un langage plus simple • Threads et calculs asynchrones Niveau • Inférence de type • Programmation templates • Boucles généralisées • Types énumérés • Inférence du type de retour • Template variadique AVANCÉ • Liste d’initialiseur • Perfect Forwarding et • Paire et tuple Références Universelles • Construction par délégation • Alias de type 12 • Gestion du polymorphisme : final, override • Introspection via les traits • Calcul à la compilation • Gestions des ressources • lvalue et rvalue • Sémantique de transfert Durée : 3 Jours • Principe de la RAII • Pointeur à sémantique riche +1 jour de TP optionnel • Règle du ZERO
Métaprogrammation et techniques template avancées Objectif Cette formation permet de découvrir et de mettre en œuvre les idiomes fondamentaux de la métaprogrammation en C++14 et en C++17. Niveau Bénéfices attendus • Se familiariser avec les principes généraux de la EXPERT métaprogrammation. • Savoir quand et comment l’utiliser. 13 Public • Ingénieurs, techniciens et scientifiques désirant approfondir leur pratique du langage C++. • Une bonne maîtrise du langage C++ est nécessaire. Durée : 3 Jours +1 jour de TP optionnel
Métaprogrammation et techniques template avancées • Introduction • Génération de code • Impacts de la métaprogrammation • Duplication de code • C++ comme un langage métaprogammable • Gén. conditionnelle : SFINAE • Techniques de base • Gén. conditionnelle : Tag Dispatching • Gén. : if constexpr Niveau • Template de fonction et de classe • Calcul à la compilation via template • Spécialisation et spécialisation partielle • Calcul à la compilation via constexpr • Inférence du type de retour EXPERT • Template variadique • Applications • Perfect Forwarding et Références Universelles • Fonctions génériques contraintes • Alias de type • Détections de plateformes 14 • Programmation générative • Manipulation de types • Notion de traits • Introspection de type • Génération de type Durée : 3 Jours • Détection d’interface • Erreur de compilation via static_assert +1 jour de TP optionnel • Séquence de types et algorithmes associés
Programmation objet avancée en C++ Objectif Cette formation permet de se familiariser avec les différentes stratégies de conception et d’implémentation orientées objets spécifiques au langage C++. Niveau Bénéfices attendus • Connaître les bonnes pratiques du design orienté objet. AVANCÉ • Concevoir des composants réutilisables et testables. • Maîtriser la syntaxe objet du C++. 15 Public • Ingénieurs, techniciens et scientifiques désirant améliorer leur pratique du langage C++. • Une première expérience en C++ est nécessaire. Durée : 3 4 Jours +1 jour de TP optionnel
Programmation objet avancée en C++ • Introduction • Méthodologie SOLID • Historique du langage et positionnement dans • Objectifs l’écosystème orienté objet • Single Responsability Principle • C++ comme un langage objet • Open/Close • Principe de Substitution de Liskov Niveau • Programmation orientée objet • Ségrégation d’Interface • Inversion de Dépendances • Principes généraux • Notion d’interface AVANCÉ • Héritage et polymorphisme • Design Patterns • Construction par délégation • Patterns de génération • Gestion du polymorphisme : final, override • Patterns structurels 16 • Patterns comportementaux • Gestion des ressources • lvalue et rvalue • Sémantique de transfert • Principe de la RAII Durée : 3 Jours • Pointeur à sémantique riche +1 jour de TP optionnel • Règle du ZERO
Cycle Outils 1 PREMIERS PAS AVEC PYTHON 3 17
Premiers Pas avec Python 3 Objectif Cette formation permet d’aborder les bases du langage Python en utilisant la dernière version du langage. Niveau Bénéfices attendus • Maîtriser les bases de Python. INITIATION • Savoir développer une application en Python. • Se familiariser avec les idiomes Python. 18 Public • Ingénieurs, techniciens et scientifiques désirant s’initier au langage Python. • Une première expérience d’un langage de Durée : 3 Jours programmation quelconque est souhaitable. +1 jour de TP optionnel
Premiers Pas avec Python 3 • Introduction • Structurer son programme PYTHON • Objectifs du langage • Script vs Module • Pourquoi un langage interprété ? • Notion de packages • Les Doc String • Programmer en PYTHON • Le style PEP8 • Prise en main de l'interpréteur • Test unitaire et benchmark • Structures de contrôle • Gestion des erreurs de syntaxe • Aspect orienté objet Niveau • Notion de classe • Aspect impératif • Principes généraux des fonctions • Données et fonctions membres • Notion de visibilité INITIATION • Arguments de fonctions • Interface et héritage • Fonctions anonymes • Abstract Base Class 19 • Fonctions d'ordre supérieure • Itérateurs et outils associés • Générateur et coroutines • Interface avec l'OS • Autres outils • Pattern Matching • Structures de données • Formules Mathématiques • Chaine de caractères • Connectivité Internet Durée : 3 Jours • Liste, Tuple, Dictionnaire • Gestion des dates et du temps +1 jour de TP optionnel • Autres collections • Numpy
Cycle Performance 1 BONNES PRATIQUES POUR LA PERF. 2 INTRODUCTION PROGRAMMATION PARALLELE 3 PROGRAMMATION GPGPU AVEC NVIDIA
Bonnes pratiques pour la performance en C++ Objectif Cette formation permet de découvrir et de mettre en œuvre les bonnes stratégies de développement et de compréhension du matériel afin de garantir un haut niveau de performance dans des applications C++. Niveau Bénéfices attendus • Connaître les sources logicielles et matérielles de la AVANCÉ performance. • Savoir adapter sa pratique du langage C++ afin de 21 garantir les performances d’un logiciel. Public • Ingénieurs, techniciens et scientifiques soucieux des performances de leur logiciels. • Une première expérience en C++ est nécessaire. Durée : 3 4 Jours +1 jour de TP optionnel
Bonnes pratiques pour la performance en C++ • Introduction • Impact de l’architecture • Historique des architectures modernes • Application Compute bound et • C++ comme un langage performant Memory bound • Adéquation Architecture/Algorithme • Principe de fonctionnement des caches • Impact sur le design logiciel Niveau • Impact sur l’utilisation des composants de • Cycle de vie des objets la STL • Valeur, référence, pointeur • Optimisation et élision des copies AVANCÉ • Sémantique de transfert • Techniques d’optimisation de code • Principe de la RAII • Fusion et fission des boucles • Pointeur à sémantique riche • Tuilage 22 • Array of Structures/Structure of Arrays • Règle du ZERO • Le modèle AoSoA • Gestion du polymorphisme • Polymorphisme d’inclusion • Polymorphisme paramétrique Durée : 3 Jours • Coût et surcoût du polymorphisme +1 jour de TP optionnel • Le CRTP
Introduction à la programmation parallèle Objectif Cette formation permet de se familiariser avec les outils et stratégies de programmation parallèle disponibles dans l’écosystème du langage C++. Niveau Bénéfices attendus • Connaître les métriques utiles du parallélisme. AVANCÉ • Se familiariser avec la programmation sur multicœurs. • Se familiariser avec la programmation distribuée. 23 Public • Ingénieurs, techniciens et scientifiques désirant s’initier à la programmation parallèle. • Une première expérience en C++ est nécessaire. Durée : 3 4 Jours +1 jour de TP optionnel
Introduction à la programmation parallèle • Introduction • Programmation Multi-threading • Historique des architectures modernes • Principes généraux • Historique du langage • Multi-threading en C++ standard • Positionnement dans l’écosystème logiciel • Synchronisations : mutex, condition variable, atomique Niveau • Promesses et Futures : calcul asynchrone • Eléments de base du parallélisme • Programmation multi-threads via OpenMP • Loi de Moore • Classification de Flynn AVANCÉ • Compute bound ou Memory bound • Programmation distribuée • Scalabilité forte : Loi d’Amdahl • Le standard MPI • Scalabilité faible : Loi de Gustafson-Barsis • Communications synchrones 24 • Métrique de performance : accélération • Communications collectives • Métrique de performance : efficacité • Communications asynchrones • Métrique de Karp-Flatt Durée : 3 Jours +1 jour de TP optionnel
Programmation GPGPU avec NVIDIA CUDA Objectif Cette formation permet de se familiariser avec les outils et stratégies de programmation parallèle sur cartes graphiques programmables via le langage CUDA. Niveau Bénéfices attendus • Connaître les principes généraux des GPGPUs. AVANCÉ • Se familiariser avec la programmation sur GPGPU. • Se familiariser avec les stratégies d’optimisation sur 25 GPGPU. Public • Ingénieurs, techniciens et scientifiques désirant s’initier à la programmation sur carte graphique. • Une première expérience en C++ est nécessaire. Durée : 3 4 Jours +1 jour de TP optionnel
Programmation GPGPU avec NVIDIA CUDA • Introduction • Stratégie de parallélisation • Historique des architectures modernes • Opération point à point • La fin de la loi de Moore • Réduction • Architecture de base des GPGPUs • Opération à voisinage • Flux asynchrone et multi-buffering Niveau • Evénements asynchrones • Le langage CUDA • Principes généraux • Notion de kernel • Outils annexes AVANCÉ • Notion de fonction device • cuBLAS • Blocs et Threads • cuFFT • Gestion de la mémoire • Thrust 26 • CUB • Types de mémoire Durée : 3 Jours +1 jour de TP optionnel
AGENIUM CAMPUS GIF-SUR-YVETTE Bâtiment 660 – DIGITEO Rue Noetzlin 91190 Gif-sur-Yvette France Tél. +33 (0)1 69 15 73 26 Mob. +33 (0)6 60 17 98 99 Mail: campus@agenium.com ORGANISME DE FORMATION N° d’agrément : 11 91 07537 91 Certifié Datadock jusqu’en 2021 www.agenium.fr
Vous pouvez aussi lire