• 199 € ou 5 paiements mensuels de 39,80 €

Module algorithmique

Apprends l'algorithmique et entraîne-toi sur CodinGame, la plateforme préférée des entreprises pour faire passer les entretiens techniques !

Imagine une méthode facile à apprendre te permettant de résoudre n'importe quel exercice de programmation. Il te suffit de suivre chaque étape, pas à pas, dans l'ordre indiqué.

Après 3 mois de pratique à plein temps avec cette méthode, tu deviendras suffisamment à l'aise en algorithmique pour créer tes propres algorithmes et passer un entretien technique d'embauche avec succès.

Le mieux c'est que je laisse mes étudiants t'en parler dans les témoignages ci-dessous.

Thomas

Maxime

Guillaume

Frank

Le syndrome de la page blanche

Tu es face à un nouvel exercice et tu ne sais pas par où commencer ? C'est ce qu'on appelle le syndrome de la page blanche.

Après plusieurs relectures de l'énoncé tu commences à coder mais ton esprit s'embrouille. Tu te perds dans ta tête et tu ne sais plus comment continuer.

Tu as déjà lu beaucoup de solutions à ce type d'exercice, tu les comprends peut-être toutes très bien et pourtant : impossible de trouver ces solutions par toi-même en partant de zéro.

Tu n'arrives pas à décomposer un problème complexe en petits problèmes plus simples puis à assembler leurs solutions respectives en une solution globale.

Tu as aussi du mal avec les boucles et les fonctions récursives (quel cauchemar !). Tu ne comprends pas la logique qu'il y a derrière et tu as plein de questions :

  • Quand utiliser une boucle ?

  • Comment faire pour rédiger mes propres algorithmes ?

  • Comment réussir à répondre à un exercice en toute autonomie, de A à Z ?

  • Comment résoudre un problème avant de passer au code à proprement parler ?

Tu as l'impression qu'il te manque une étape clé entre l'énoncé du problème et le code…

ET TU AS RAISON (on va y revenir)

La difficulté des entretiens techniques d'embauche

Tous ces blocages ne sont pas vraiment un problème pendant ton apprentissage du langage car tu êtes guidé.

Mais ce n'est pas la même chose pendant un entretien technique d'embauche...

Si tu as eu l'occasion d'en faire, tu t'es rendu compte qu'ils sont non seulement décorrélés de la réalité du travail mais qu'en plus ils sont complexes (parfois même chronométrés !) et réalisés sur des plateformes que tu découvres pour la première fois (CodinGame) au moment de les faire.

Une véritable recette pour un échec assuré si on n'y est pas préparé.

Malheureusement pour toi, les entreprises ont recours à ce type d'entretien pour tester les capacités des candidats. Même si ces tests sont souvent inadaptés, faute de mieux, ils sont toujours utilisés.

Réussir un entretien technique devient donc une compétence à part entière qu'il va falloir acquérir. C'est tout le sujet de ce module !

Devenir bon en algorithmique, ça se travaille comme un muscle. Chaque jour où tu ne pratiques pas atrophie ce muscle.

Comment vas-tu faire pour atteindre tes objectifs si tu ne t'entraînes pas régulièrement, avec méthode, à l'algorithmique ?

Chaque exercice que tu n'arrives pas à faire va effriter ta confiance en toi.

Chaque entretien raté sera une opportunité de décrocher un premier job qui s'évanouit à jamais (on retente rarement un entretien là où on a échoué et les places sont limitées).

Tu vas rentrer dans un cercle vicieux qui risque de te faire perdre tout espoir et de te faire abandonner ton projet de reconversion professionnelle rapidement.

Une étape cachée

Tout ça n'est pas de ta faute.

Il te manque une étape essentielle dans ton raisonnement, un ingrédient clé pour acquérir cette logique dont sont dotés tous les développeurs professionnels.

Cette étape cruciale (dont personne ne parle dans aucune formation) : c'est l'utilisation du pseudo-code.

Lorsque tu regardes un développeur résoudre un exercice, tu vois ceci :

  1. Il lit l'énoncé pour bien le comprendre

  2. Il rédige la solution avec son langage de programmation favori

Le problème, c'est qu'il y a une étape cachée entre l'étape 1 et 2 !

Cette étape, c'est la construction d'un algorithme en pseudo-code.

Pourquoi est-ce qu'on te cache cette étape ? Tout simplement parce qu'elle est effectuée dans la tête du développeur, de façon extrêmement rapide. Elle n'est donc pas cachée de façon intentionnelle.

En effet, lorsqu'on est habitué à développer, on ne passe plus par cette phase de rédaction de l'algorithme en pseudo-code.

Mais en réalité, un développeur développe toujours comme ça :

  1. Il lit l'énoncé pour bien le comprendre

  2. Il conçoit un algorithme de solution à ce problème dans sa tête (en pseudo-code)

  3. Il rédige la solution dans son langage de programmation favori (c'est ce qu'on appelle l'implémentation)

Cette seconde étape n'est jamais enseignée. Nulle part. Dans aucune formation.

Il est donc normal que tu bloques précisément à cette étape dans ton apprentissage !

Une charge cognitive trop importante

Lorsque tu apprends un langage de programmation pour la première fois, ton cerveau doit être concentré sur la syntaxe du langage (quel mot-clé utiliser ? Où mettre les parenthèses, les accolades, les point-virgules etc.).

Or ta concentration est une ressource limitée. Ton cerveau n'est capable de supporter qu'une certaine charge pendant un temps donné.

Cette charge c'est ce qu'on appelle la charge cognitive.

Lorsque tu es concentré pour ne pas oublier une parenthèse par-ci, une accolade par-là, ton cerveau n'a plus de ressource pour penser au problème à résoudre et tu es perdu.

En utilisant du pseudo-code, tu vas pouvoir dissocier l'écriture de la solution algorithmique de l'écriture du code : tu pourras alors te débarasser de cette charge cognitive liée à la syntaxe du langage et te concentrer uniquement sur le problème à résoudre.

Cette étape supplémentaire permet de construire et rédiger dans un premier temps l'algorithme qui permettra de solutionner le problème.

Ensuite, tu pourras implémenter dans le langage de programmation de ton choix cet algorithme.

Le pseudo-code permet d'écrire un algorithme en utilisant un langage qui se rapproche plus de ta langue maternelle que d'un langage de programmation.

C'est donc l'outil idéal pour rédiger des algorithmes facilement avec une charge cognitive très faible.

La méthode DECAPI™ et le pseudo-code

Dans ce module, tu vas apprendre à utiliser du pseudo-code et à appliquer la méthode DECAPI™. Grâce à cette méthode tu apprendras à rédiger pas à pas, en pseudo-code, les solutions des exercices sous la forme d'algorithmes.

La méthode DECAPI™ désigne le cycle de création d'un algorithme : Découverte, Exploration, CAs Particuliers, Implémentation.

Cette méthode est exclusive, tu ne la trouveras dans AUCUN livre ni AUCUNE autre formation.

En effet, je l'ai spécialement conçue pour les personnes en reconversion professionnelle : elle s'adresse aux débutants complets en programmation.

Deviens ultra performant aux entretiens techniques pour décrocher ton 1er contrat 🔥

Grâce à l'utilisation du pseudo-code et à la méthode DECAPI™ tu vas acquérir la logique qu'il te manque pour pouvoir résoudre n'importe quel problème en partant de zéro.

Tu n'auras plus jamais peur de démarrer un exercice que tu n'as jamais fait car tu auras une méthode simple à suivre pas à pas pour l'aborder : terminé le syndrome de la page blanche où tu ne savais pas par où commencer !

Tu pourras alors concevoir tes propres algorithmes en structurant ta pensée grâce au pseudo-code et acquérir cette "façon de penser" très spécifique aux développeurs.

De plus tu t'entraîneras sur les plateformes d'entraînement utilisées par les entreprises pour réaliser les tests d'embauche : CodinGame et Codewars.

Tu seras ainsi plus serein lors de tes entretiens techniques car tu connaitras déjà ces sites et tu te seras déjà entraînés dessus.

Comme tu seras plus à l'aise que les autres candidats, tu développeras plus vite une solution à un exercice donné ce qui te permettra de performer même sous la pression d'un chronomètre.

Contenu du module

10 heures de théorie et plus de 50 heures de pratique !

Théorie

  • Pseudo-code

  • Méthode DECAPI™

  • Structures de données : tableaux, piles, files, ensembles, dictionnaires.

  • Notation Big O

  • Récursivité

  • Algorithmes de tris (parfois demandés en entretien techniques) : tri à bulles, tri par sélection, tri par insertion

  • Arrangements, permutations et combinaisons

  • Optimisation via la mémoïsation

Pratique

  • Rédaction d'algorithmes en pseudo-code

  • Implémentation de ces algorithmes en JavaScript

  • Exercices de difficulté croissante sur les plateformes Codewars puis CodinGame

  • Live Coding sur YouTube

50h+ de live accessibles en replay

Nous avons résolus 45+ exercices sur Codewars (niveau 8, 7, 6 et 5 kyu) et 20+ puzzles classiques sur CodinGame !

Regarde ces rediffusions dès l'achat du module algorithmique.

Sommaires des lives

Retrouve rapidement le passage qui t'intéresse pour chaque live grâce aux sommaires

Ce que pensent les étudiants des lives

Voici quelques commentaires que j'ai reçus de mes étudiants suite aux lives que j'ai faits.

Quels sont les prérequis ?

Pour suivre ce module tu dois être familier avec les concepts de base communs aux langages de programmation : les types de données, les variables, les conditions, les boucles et les fonctions.

Je te conseille donc de suivre d'abord le module débutant (gratuit) qui traite de ces sujets.

Tu devras également être à l'aise avec la notion d'objet, les tableaux, les opérateurs mathématiques de base (dont la puissance et le modulo) et enfin les méthodes de la libraire standard Math.

Ces dernières notions sont enseignées dans le module intermédiaire que tu peux suivre si tu en sens le besoin.

Note que tu n'es pas obligé de vouloir apprendre le JavaScript pour suivre ce module. Tu dois simplement vouloir apprendre à programmer, apprendre l'algorithmique.

En effet, le pseudo-code est indépendant du langage de programmation et j'ai structuré les leçons pour que l'implémentation en JavaScript des algorithmes que nous rédigeons soit faite à la fin de la vidéo.

Ainsi, tu peux suivre les leçons théoriques sur l'algorithmique + la résolution des exercices grâce au pseudo-code d'un côté et dès qu'on passe à l'implémentation des algorithmes, tu peux sauter cette étape et le faire de ton côté, avec le langage de programmation de ton choix.

Une garantie satisfait ou remboursé

La formation JavaScript de Zéro est disponible avec une garantie "satisfait ou remboursé" de 14 jours, qui te permet d’obtenir un remboursement si tu n’es pas satisfait de la qualité de la formation ou de son contenu. Tu ne prends donc aucun risque à l'acheter dès maintenant.

Combien ça coûte ?

Ce module coûte 199 €.

C'est un prix vite remboursé quand on décroche un job de développeur quelques mois plus tard !

Un prix dérisoire pour avoir enfin le déclic et prendre plaisir à programmer… pour le reste de sa vie.

Ne passe pas à côté de tes projets pour une question d'argent : tu peux échelonner le paiement sur 5 mois si besoin.

Questions-réponses (FAQ)

Quels sont les concepts algorithmiques les plus avancés traités dans ce module ?

Comme ce module s'adresse aux débutants complets, je ne traiterai pas de sujets complexes en algorithmique. L'objectif est d'obtenir le niveau minimum pour réussir un entretien technique d'embauche. Je ne traiterai donc pas des graphes, de B-arbres, de tas de fibonacci, de calcul matriciel, d'algorithmes multithreads etc.

Penses-tu consacrer une partie des leçons à la pratique du TDD ?

Non. Le TDD est une pratique de développement qui n'a pas sa place dans ce module algorithmique.

Une question ? Contacte-moi !

➡️ Par téléphone ou WhatsApp : 06 67 40 56 09
➡️ Par email : jeremy@javascriptdezero.com

Sommaire des leçons

Prérequis et lives streaming

Prérequis
Aperçu
Conseils pour profiter au mieux des lives et des replays

Introduction

Objectif de ce module
Aperçu
Algorithmie ou algorithmique ?
Aperçu
Définition
Ressources

Le pseudo-code

L'étape cachée qu'il vous manque
Aperçu
Pourquoi le pseudo-code est utile ?
Les qualités d'un bon pseudo-code
Présentation de la syntaxe du pseudo-code
Coloration syntaxique du pseudocode dans VSCode

Les plateformes d'entraînement

Présentation de CodinGame
Aperçu
Présentation de Prologin
Présentation de Codewars
Traduire automatiquement les exercices en français
Déboguer vos exercices Codewars depuis VSCode
Déboguer vos exercices CodinGame depuis VSCode

Contexte d'apprentissage

Pourquoi apprendre l'algorithmique ?
Aperçu
Vidéo de motivation + conseils pour rester motivé

La méthode DECAPI

Introduction
D — Découverte
E — Exploration
E — Exploration — Solution du challenge
E — Exploration — Solution finale de l'exercice
CAP — Cas particuliers
I — Implémentation
CheatSheet — Méthode DECAPI

Concepts d'informatique à connaître

Introduction
La table ASCII et le chiffre de César
Solution alternative avec l'opérateur modulo
La représentation des nombres dans différentes bases

Les structures de données linéaires

Introduction
Les structures de données linéaires
Implémentation des tableaux
Implémentation des ensembles
Implémentation des piles
Implémentation des files

Rediffusions lives (bases + structures de données linéaires)

Live Coding #1 : 1 exercice Codewars "somme des positifs"
Live Coding #2 : 4 exercices Codewars : supprimer 1er et dernier caractères, nombre opposé, pair ou impair, répétition de chaîne
Live Coding #3 : 2 exercices Codewars : trouver le plus petit entier, retourner une chaîne de caractères à l'envers
Live Coding #4 : 3 exercices Codewars : convertissez une valeur booléenne en oui non, somme des nombres de 1 à N, supprimer les espaces
Live Coding #5 : 2 exercices Codewars : retourner les 2 valeurs les plus grandes et convertir un entier en tableau de chiffres inversés
Live Coding #6 : 2 exercices Codewars : compteur de file d’attente et compter les singes
Live Coding #7 : 2 exercices Codewars : nombre de positifs et somme des négatifs et les nombres Doubleton
Live Coding #8 : 2 exercices Codewars : union d’ensembles et espacement valide
Live Coding #9 : 2 exercices Codewars : erreurs d’imprimante et validateur de message
Live Coding #10 : 1 exercice Codewars : parenthèses valides
Live Coding #11 : 2 exercices Codewars : faux binaire et masque de carte de crédit

Les structures de données non linéaires

Les structures de données non linéaires
Implémentation des dictionnaires
Le type Map
Object VS Map

Rediffusions lives (structures de données non linéaires)

Live Coding #12 : 2 exercices Codewars : validation accolades et compter les lettres dans un mot
Live Coding #13 : 4 exercices Codewars : Compter Nucleotides ADN, compter éléments tableau, lettres dans chaîne et compter dans l'ordre
Live Coding #14 : 1 exercice Codewars : Compter caractères et générer un graphe de barres
Live Coding #15 : 2 exercices Codewars : Compteur d’occurences et Compteur de doublons
Live Coding #16 : 1 exercice Codewars : Décompte consécutif
Live Coding #17 : 1 exercice Codewars : Aidez Suzuki à compter ses légumes
Live Coding #18 : 3 exercices Codewars : Compteur de symboles, compteur de l'item le plus fréquent (tableau), Champions league
Live Coding #19 : 2 exercices Codewars (suggestions d’étudiants) : conversion RGB vers hexadécimal, heure lisible par l’homme
Live Coding #20 : 1 exercice Codewars (suggestions d’étudiants) : la vague mexicaine
Live Coding #21 : 3 exercices Codewars (suggestions d'étudiants) : encodeur en double, jouer avec les chiffres, chaînes divisées
Live Coding #22 : 2 exercices Codewars (suggestions d'étudiants) : trouver le nombre présent un nombre impair de fois, chaînes opposées

Performances des algorithmes

Introduction
Calcul de la vitesse d'exécution d'un algorithme
Recherche par dichotomie
Vitesse d'exécution recherche par dichotomie
Rappel / Intro aux fonctions (un peu de maths)
Tracer des courbes avec l'outil desmos.com
La notation Big O

Rediffusions lives (CodinGame — niveaux faciles)

Liste des puzzles classiques (niveau facile) de CodinGame
Aperçu
Live Coding #23 : Explications dépôt et plateforme CodinGame avec 1 exercice CodinGame : températures
Live Coding #24 : 1 exercice CodinGame : Unary
Live Coding #25 : 1 exercice CodinGame : MIME Type
Live Coding #26 : 2 exercices CodinGame : The Descent et Chevaux de courses
Live Coding #27 : 1 exercice CodinGame : The River I.
Live Coding #28 : 1 exercice CodinGame : May the triforce be with you
Live Coding #29 : 1 exercice CodinGame : Credit Card Verifier Luhn's algorithm
Live Coding #30 : 1 exercice CodinGame : Prefix Code
Live Coding #31 : 1 exercice CodinGame : 7-segment scanner

Rediffusions lives (CodinGame — niveaux moyens)

Préparation des exercices
Live Coding #32 : 1 exercice CodinGame : ASCII Art
Live Coding #33 : 1 exercice CodinGame : Expressions parenthésées
Live Coding #34 : 1 exercice CodinGame : Bank Robbers
Live Coding #35 : 1 exercice CodinGame : 1D Bush Fire
Live Coding #36 : 1 exercice CodinGame : The River II
Live Coding #37 : 1 exercice CodinGame : Dungeons and Maps

La récursivité

Introduction à la récursivité
La pile d'appels
Les contextes d'exécution
Exercices sur la récursivité
Aperçu
Solution exercice 0 : Somme de 1 à N
Solution exercice 1 : Puissance
Solution exercice 2 : Factorielle
Solution exercice 3 : Suite de Fibonacci
Solution exercice 4 : Retourner un mot
Solution exercice 5 : Dichotomie

Rediffusions lives (CodinGame — niveaux difficiles)

Live Coding #38 : 1 exercice CodinGame : Rock Paper Scissors Lizard Spock
Live Coding #39 : 1 exercice CodinGame : 1D Spreadsheet
Live Coding #40 : 1 exercice CodinGame : Encryption/Decryption of Enigma Machine
Live Coding #41 : 1 exercice CodinGame : Equivalent Resistance, Circuit Building
Live Coding #42 : 1 exercice CodinGame : Offset Arrays

Fin du module et conseils pratiques

Mes derniers conseils

BONUS : les algorithmes de tri

Présentation du site Visualgo
Le tri à bulles
Pseudo-code tri à bulles
Implémentation du tri à bulles
Le tri par sélection
Pseudo-code tri par sélection
Implémentation du tri par sélection
Le tri par insertion
Pseudo-code tri par insertion
Implémentation du tri par insertion
Optimisation du tri par insertion

BONUS : permutations, arrangements et combinaisons

Définitions
Permutations
Permutations : pseudo-code (récursif)
Permutations : implémentation (récursif)
Permutations : pseudo-code (Heap)
Permutations : implémentation (Heap)
Arrangements
Arrangements : formule de dénombrement
Arrangements : pseudo-code
Arrangements : implémentation
Arrangements avec répétitions
Combinaisons
Combinaisons : pseudo-code
Combinaisons : implémentation

BONUS : optimisation

La mémoïsation
Mémoïsation de l'algorithme de Fibonacci