Prérequis

Prérequis

Avant de suivre ce module vous devez être familier avec les concepts de base communs aux langages de programmation :

  • les types de données

  • les variables

  • les conditions

  • les boucles

  • les fonctions


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


Vous devez é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 (payant) que vous pouvez suivre si vous en sentez le besoin.


⚠️ Notez que vous n'êtes pas obligé de vouloir apprendre le langage de programmation JavaScript pour suivre ce module !

En effet nous travaillerons principalement avec du pseudo-code. Celui-ci est indépendant des langages de programmation.

Une fois le pseudo-code rédigé il faut le transformer dans un langage de programmation pour pouvoir l'exécuter, c'est ce qu'on appelle l'implémentation.

Dans ce module j'implémenterai le pseudo-code que l'on produira en JavaScript mais vous pourrez l'implémenter dans n'importe quel autre langage de votre choix en l'adaptant un petit peu aux spécificités de votre langage.


J'ai structuré les leçons pour que l'implémentation en JavaScript dans les vidéos soit distincte du reste de la vidéo ce qui vous permettra de sauter facilement cette partie si ça ne vous intéresse pas.


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

Module algorithmique

Acheter maintenantEn savoir plus

Prérequis et lives streaming

  • Prérequis
  • Conseils pour profiter au mieux des lives et des replays

Introduction

  • Objectif de ce module
  • Algorithmie ou algorithmique ?
  • Définition
  • Ressources2

Le pseudo-code

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

Les plateformes d'entraînement

  • Présentation de CodinGame8
  • Présentation de Prologin
  • Présentation de Codewars3
  • Traduire automatiquement les exercices en français
  • Déboguer vos exercices Codewars depuis VSCode3
  • Déboguer vos exercices CodinGame depuis VSCode

Contexte d'apprentissage

  • Pourquoi apprendre l'algorithmique ?1
  • Vidéo de motivation + conseils pour rester motivé12

La méthode DECAPI

  • Introduction
  • D — Découverte
  • E — Exploration18
  • E — Exploration — Solution du challenge
  • E — Exploration — Solution finale de l'exercice6
  • CAP — Cas particuliers
  • I — Implémentation4
  • CheatSheet — Méthode DECAPI2

Concepts d'informatique à connaître

  • Introduction
  • La table ASCII et le chiffre de César4
  • Solution alternative avec l'opérateur modulo1
  • La représentation des nombres dans différentes bases2

Les structures de données linéaires

  • Introduction
  • Les structures de données linéaires1
  • Implémentation des tableaux2
  • Implémentation des ensembles
  • Implémentation des piles
  • Implémentation des files4

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

  • Live Coding #1 : 1 exercice Codewars "somme des positifs"26
  • Live Coding #2 : 4 exercices Codewars : supprimer 1er et dernier caractères, nombre opposé, pair ou impair, répétition de chaîne8
  • Live Coding #3 : 2 exercices Codewars : trouver le plus petit entier, retourner une chaîne de caractères à l'envers3
  • Live Coding #4 : 3 exercices Codewars : convertissez une valeur booléenne en oui non, somme des nombres de 1 à N, supprimer les espaces3
  • 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 singes2
  • Live Coding #7 : 2 exercices Codewars : nombre de positifs et somme des négatifs et les nombres Doubleton4
  • 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édit2

Les structures de données non linéaires

  • Les structures de données non linéaires
  • Implémentation des dictionnaires2
  • 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 mot2
  • 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 doublons2
  • Live Coding #16 : 1 exercice Codewars : Décompte consécutif
  • Live Coding #17 : 1 exercice Codewars : Aidez Suzuki à compter ses légumes2
  • 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 CodinGame2
  • Live Coding #23 : Explications dépôt et plateforme CodinGame avec 1 exercice CodinGame : températures
  • Live Coding #24 : 1 exercice CodinGame : Unary4
  • 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é4
  • 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 conseils6

BONUS : les algorithmes de tri

  • Présentation du site Visualgo
  • Le tri à bulles
  • Pseudo-code tri à bulles
  • Implémentation du tri à bulles3
  • 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