Pourquoi apprendre l'algorithmique ?

Pourquoi apprendre l'algorithmique ?

SOMMAIRE


00:10 Pourquoi s’entraîner à l’algorithmique ?

00:20 La difficulté des exercices est bien plus élevé que le travail quotidien du développeur

00:50 Pourquoi c’est comme ça qu’on recrute alors ?

01:35 La naissance des plateformes de tests des candidats (codingame, codewars etc.)

02:10 C’est devenu une compétence à part entière d’être recruté !

04:10 On doit se plier à cette règle malheureusement

04:30 Les compétences que vous allez acquérir dans ce module

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