DÉVELOPPER EN C++
AU QUOTIDIEN

Faîtes valoir vos compétences sur le marché de l'emploi

Certification : "Développer en C++"

Les nouvelles technologies numériques sont considérées comme les principales innovations d’une nouvelle révolution industrielle et s'accompagnent d’un besoin de professionnels maîtrisant tous les aspects du développement logiciel, à la fois les techniques de programmation courante, mais aussi les contraintes matérielles et la science que ce même code traduit.

 

Depuis sa création, le langage C++ est devenu l'un des langages de programmation les plus utilisés au monde car les programmes écrits en C++ sont rapides et efficaces. 

Ce langage est plus flexible que bien d’autres :

  • Il peut fonctionner aux plus hauts niveaux d'abstraction, jusqu'au niveau du processeur. 

  • Le langage C++ fournit des bibliothèques standards hautement optimisées. Il permet notamment d'accéder à des fonctionnalités matérielles de bas niveau, afin de maximiser la vitesse d’exécution et de minimiser la consommation en mémoire. Il permet de créer n'importe quel type de programmes : jeux, appareil pilotes, calcul haute performance (HPC), cloud, applications de bureau, embarquées et/ou mobiles, et bien plus encore. Même les bibliothèques et les compilateurs d’autres langages de programmation sont écrits en C++.

 

Avec le C++ moderne, le code est plus simple, plus sûr, plus élégant et toujours aussi rapide.

 

La certification se positionne comme une des réponses à ces enjeux en développement de compétences, transposables dans différentes situations professionnelles et différentes organisations.  Elle s’adresse à des ingénieurs en informatique désireux d’élargir leurs compétences pour favoriser l’employabilité.

LES OBJECTIFS

Alliant un haut niveau d’abstraction à un haut niveau de performance, C++ est le langage de prédilection pour la construction de logiciels d’infrastructure ou de logiciels demandeurs de fortes performances.

"Développer en C++" a pour objectif de valider les compétences techniques de programmation nécessaires à une maîtrise à la fois du langage C++ et des stratégies de développement associées : programmation impérative, programmation orientée objet, approche fonctionnelle des algorithmes, programmation générique. 


Les pré-requis :

"Développer en C++" est destiné aux développeurs qui ont déjà une expérience de la programmation informatique (C, Python, Java etc...) et s’adresse notamment à un public de développeurs, techniciens, ingénieurs et scientifiques, responsables du développement logiciels, qui sont susceptibles d’utiliser un langage de programmation performant dans leurs tâches de tous les jours. Pour se présenter comme candidat à la certification ils doivent avoir :

 - Diplôme Niveau 6 minimum et 2 ans d'expérience dans le développement de logiciels avec un langage quelconque 

ou

- Titulaire du Bac + 2 années d'expérience en Développement C++.

LES COMPÉTENCES ATTESTÉES

5 compétences sont évaluées :

Compétence n°1 :

C1 - Développer des programmes informatiques « simples » utilisant les composants fondamentaux du langage C++, pour réaliser les opérations de base nécessaires au développement d’applications.

Compétence n°2 :

C2 - Structurer le code de ses programmes en tenant compte des principes de la programmation structurée pour développer des applications en C++ modulaires et extensibles.

Compétence n°3 :

C3 - Exploiter les composants de la bibliothèque standard C++ en utilisant les types, flux, conteneurs, itérateurs et algorithmes au sein d'applications complexes afin d’obtenir un code plus robuste.

Compétence n°4 :

Concevoir un modèle objet en C++ en utilisant les composants natifs du langage pour gérer les ressources mises à disposition par le système (mémoire, fichier, threads, etc…).

Compétence n°5 :

C5 - Appliquer les principes de la programmation générique en C++ afin de développer des méta-programmes aboutis et optimisés.

LES MODALITÉS D'ÉVALUATION

Les évaluations alternent entre contrôle de connaissances et pratiques à distance :

Évaluation n°1 :

Contrôle continu : le candidat doit répondre à l’intégralité d’une série d’exercices

Tout au long du parcours, l’apprenant doit répondre à une série d’exercices d’application avec un système de contrôle automatique qui donne des indications sur celles-ci. L’apprenant peut répondre correctement du premier coup, se tromper et retenter sa chance, poser une question, ou encore passer l’exercice. 

CODE RECKONS suit en interne l'évolution de chaque candidat.

Compétence n°1 :
Types et variables : 45 exercices.
Structure de contrôle : 20 exercices.
Entrées/sorties : 15 exercices.

Compétence n°2 :
Aspects impératifs : 55 exercices.
Structure de données : 30 exercices.

Compétence n°3 :
Conteneurs et algorithmes : 40 exercices.
Bibliothèque standard : 20 exercices.

Compétence n°4 :
Programmation orientée objet : 30 exercices.
Gestion des ressources : 20 exercices.

Compétence n°5 :
Programmation template : 40 exercices.
Manipulation de types : 30 exercices.

Évaluation n°2 :

Évaluation écrite sous forme de QCM / Questionnaire. 

CODE RECKONS remet un questionnaire à choix multiples qui porte sur les connaissances associées à la programmation en langage C++. Le candidat mobilise ses savoirs et son savoir-faire pour répondre aux questions.

Évaluation n°3 :

Mise en situation à partir des compétences C4 et C5.  

Le candidat doit démontrer sa maîtrise du développement et justifier ses choix de conception par la réalisation de mini-projets soumis par CODE RECKONS.

 

Un juré est présent lors de la présentation orale et interroge le candidat sur les compétences mise en œuvre pour la réalisation de ses mini-projets. Il livre son appréciation sur la base du référentiel d’évaluation.

LES TARIFS

3 500,00 euros HT

LE CONTENU EN DÉTAIL

Chapitre 1 - Introduction

Historique du langage.
Positionnement dans l’écosystème logiciel actuel.
Eléments de base d’un programme C++.
Processus de compilation.
C++ comme un langage multi-paradigme.

Chapitre 4 - Aspects impératifs

Définition et déclaration de fonctions.
Fonctions récursives.
Passage de paramètres.
Paramètres par défaut.
Surcharge de fonctions.
Surcharge d’opérateurs.
Fonctions génériques.
Inférence du type de retour.
Retours multiples.
Gestion des erreurs : codes de retour.
Gestion des erreurs : exceptions.
Gestion des erreurs : valeurs optionnelles.
Espace de noms.
Principe de « argument dependant lookup ».

Chapitre 7 - Conteneurs et algorithmes

Conteneurs séquentiels.
Conteneurs associatifs.
Adaptateurs de conteneurs.
Allocateurs.
Itérateurs.
Algorithmes.
Fonctions anonymes.

Chapitre 10 - Programmation templates

Rappels sur la généricité.
Template de classe.
Spécialisation et spécialisation partielle.
Guide de déduction
Template variadique.
Perfect Forwarding et Références Universelles.
Alias de type.

Chapitre 2 - Types et variables

Types natifs du langage.
Types composites du langage.
Types structurés.
Qualificateurs.
Inférence de type.

Chapitre 5 - Entrées/Sorties

Modèles de flux.
Flux console.
Flux de chaîne.
Flux de fichiers textes.
Flux de fichiers binaires.
Manipulations de flux.
Outils pour le formatage.

Chapitre 8 - Programmation orientée objet

Principe d’encapsulation.
Héritage : factorisation de code.
Héritage : support du polymorphisme.
Classes abstraites.
Gestion du polymorphisme : « final » & « override ».
Pattern NVI.
Principe de substitution de Liskov.

Chapitre 11 - La bibliothèque standard

Gestion du temps.
Fonction de hachage.
Outils pour le calcul numérique.
Gestion du système de fichier.
Variant.

Chapitre 3 - Structures de contrôle

Notion de flots de contrôle.
Bloc conditionnel.
Structure répétitive déterministe.
Structures répétitives conditionnelles.
Bloc de sélection.

Chapitre 6 - Structures de données

Structure définie par l’utilisateur.
Interaction avec les fonctions.
Notion de fonctions membres.
Liste d’initialiseurs.

Chapitre 9 - Gestion des ressources

lvalue et rvalue.
Sémantique de transfert.
Principe de la RAII.
Pointeur à sémantique riche.

 
 
 
 
 
Emploi

L'emploi visé est : "Développeur C++"

Formacode : 30809

Code générique : 30854

NSF : 326 - Informatique, traitement de l'information, réseaux de transmission des données

ROME : M1805 - Études et développement informatique