Article original : The Coding Bootcamp Primer - A free web development course that prepares you to enroll at any bootcamp

Par Per Harald Borgen

Un cours gratuit de 4 heures qui vous apprendra suffisamment de développement web pour être prêt pour n'importe quel bootcamp de codage.

Aujourd'hui, je suis heureux d'annoncer que nous lançons un cours pour les personnes qui envisagent de se lancer dans une formation en développement web.

Il s'appelle Le Guide du Bootcamp de Codage (— lien), et il vous apprendra les blocs de construction les plus fondamentaux pour créer des sites web : HTML, CSS et Javascript. Vous apprendrez également à configurer votre ordinateur, déboguer votre code, rechercher des solutions, résoudre des problèmes et plus encore. À la fin, vous devriez être capable de créer une page stylisée, comme une calculatrice, un générateur de noms ou une page personnelle.

Les leçons ont été créées par V School, un bootcamp de codage de premier ordre situé à Salt Lake City, Utah. C'est en fait le cours exact qu'ils envoient à leurs étudiants avant de commencer leur bootcamp immersif.

C'est aussi une excellente ressource pour les personnes qui ne prévoient pas nécessairement de s'inscrire dans un bootcamp de codage, mais qui sont curieuses à propos du développement web en général. Il est conçu pour le grand public, car nous croyons que tout le monde peut bénéficier de l'apprentissage des compétences de base en codage.

Maintenant, examinons la philosophie pédagogique sous-jacente, ainsi que la structure du cours.

Philosophie d'apprentissage de V School

Au fil des années d'enseignement, V School a développé une philosophie d'apprentissage qui peut être mieux décrite par « La voie facile est la voie difficile ». Cela signifie que résoudre des problèmes et des défis est la meilleure façon d'apprendre. Naturellement, ce cours comportera beaucoup de pratique.

La plupart des tutoriels seront sur Scrimba, mais il y aura également des liens vers quelques ressources externes, comme des devoirs et des vidéos explicatives pour une poignée de sujets.

Il est recommandé de ne pas regarder le cours en marathon. Assurez-vous de faire des pauses fréquentes, de dormir sur les problèmes et de prendre votre temps.

Conseils pour les étudiants de ce cours :

  • Re-regardez les screencasts si vous n'êtes pas sûr de quelque chose. Cela ne signifie pas que vous êtes mauvais en apprentissage ou en mémorisation.
  • Essayez d'utiliser vos connaissances et il est bon de s'écarter pour essayer quelque chose et revenir au cours.
  • L'apprentissage ne devrait pas être solitaire. Trouvez de l'aide en recherchant en ligne, en demandant à un ami ou à un camarade de classe, en contactant un instructeur.

V School a également eu la gentillesse de créer un canal Slack dédié pour que vous puissiez demander de l'aide et aider les autres. Veuillez vous joindre et construisons une communauté autour de ce cours !

Comment utiliser Scrimba

Il est préférable de voir quelque chose une fois que de le lire cent fois. Si vous n'êtes pas familier avec le fonctionnement de Scrimba, regardez notre screencast, où Bob Ziroll, Directeur de l'Éducation chez V School, vous guide à travers.

Lien externe - Configuration de l'ordinateur

Avant de commencer le cours, nous devons configurer votre ordinateur. N'hésitez pas à sauter dans notre screencast pour apprendre comment faire cela.

Lien externe - Utilisation de VS Code

À un moment donné dans le cours, vous devrez être capable d'écrire du code dans un éditeur hors ligne. Nous recommandons généralement VSCode, mais vraiment n'importe quel éditeur de code fera l'affaire. Si vous souhaitez suivre les étapes d'installation, vous pouvez les trouver dans notre vidéo.

Aperçu : le projet de pré-cours de V School

Ce cours est gratuit et ouvert à tous. Il comporte également un projet de fin d'études, qui peut servir de projet de pré-cours pour V School pour toute personne intéressée à postuler.

Donc, si vous pensez à rejoindre V School ou si vous hésitez à propos des bootcamps en général, ce cours est aussi pour vous.

Introduction à HTML

Nate Jensen

Dans ce screencast, Nate Jensen, instructeur de V School, va nous introduire aux concepts de base de HTML : le modèle de base, les balises et la syntaxe HTML.

Éléments HTML

En continuant sur l'introduction du chapitre précédent, nous abordons ensuite les éléments HTML les plus courants, comme les balises <h1> à <h6>, <span>, <div>, <p>, etc.

Attributs HTML

Dans ce chapitre, Nate couvrira les attributs HTML. Certains éléments HTML, comme une balise pour une image <img>, ont un attribut source src. Une balise d'ancrage <a> a href. Les attributs ajoutent une fonctionnalité supplémentaire à nos éléments.

Devoir - Silly CIA partie 1

C'est notre premier devoir et vous devriez essayer de le compléter vous-même sans prendre de raccourcis comme copier-coller du code, même si cela peut vous prendre beaucoup de temps pour le compléter. Cela dit, si vous êtes bloqué, n'hésitez pas à demander de l'aide à d'autres personnes, soit sur Scrimba, soit sur la page de travail du cours de V School.

Balises sémantiques HTML5

Dans ce chapitre, Nate explique ce que sont les balises sémantiques et pourquoi elles ont été introduites dans HTML5.

Introduction à CSS (style en ligne)

Grant Wilhelm

Dans ce cast, Grant Wilhelm, instructeur de V School, nous montre comment nous pouvons ajouter du style aux éléments HTML en les écrivant en ligne en utilisant l'attribut style.

<div style="color:red;font-size:55px">Bienvenue à CSS !</div>

Sélecteurs CSS

Dans cette partie, Grant nous montre comment lier une feuille de style séparée avec la balise link.

<link rel="stylesheet" href="index.css" />

Ensuite, Grant introduit le style avec des sélecteurs comme une meilleure alternative au style en ligne du chapitre précédent.

Par exemple, pour cibler une balise <h1> dans notre fichier styles.css, nous pouvons écrire :

h1 {
  color: Blue;
  font-size: 55px;
}

Devoir - Silly CIA partie 2

C'est notre prochain devoir autonome et similaire au premier, il est fortement conseillé de ne pas prendre de raccourcis et de demander de l'aide si vous êtes bloqué trop longtemps.

Devoir - CSS Wars : Le Réveil du Sélecteur

Félicitations pour avoir complété le devoir précédent ! Rien ne pousse vos compétences plus loin qu'un bon défi. Continuez ainsi et plongez directement dans votre prochain devoir.

Couleurs et polices CSS

Bienvenue dans votre prochain cast CSS, nous espérons que vous avez apprécié votre défi.

Dans ce chapitre, nous apprendrons que pour définir des couleurs en CSS, nous avons plusieurs options, en plus d'écrire simplement le nom de la couleur.

Nous pouvons utiliser la notation hexadécimale (hex, en abrégé).

body {
  background-color: #a4f6b9;
}

Spécification via les valeurs rouge, vert, bleu avec rgb.

.header {
  background-color: rgb(55, 155, 255);
}

Ou avec rgbaa est un paramètre alpha qui est un nombre entre 0.0, complètement transparent, et 1.0, complètement opaque.

.header {
  background-color: rgba(55, 155, 255, 0.5);
}

Propriété d'affichage CSS

Lorsque nous utilisons HTML, nous allons parler d'éléments de bloc qui prennent toute la largeur de la page, et d'éléments en ligne qui ne prennent que ce dont ils ont besoin.

Souvent, nous pouvons vouloir remplacer les valeurs par défaut. Par exemple, si nous souhaitons afficher quelques images les unes sous les autres, plutôt que côte à côte.

Nous pouvons faire cela par défaut en utilisant la propriété display.

/* img par défaut est un élément en ligne */
img {
  display: block;
  height: 175px;
  width: 175px;
}

Inscription à notre liste de diffusion

Cela pourrait être le moment idéal pour intervenir et proposer de rester en contact et de recevoir les dernières mises à jour de V School. Vous pouvez vous inscrire dans notre screencast.

Devoir - Newsies

Bienvenue à votre prochain défi ! Si vous êtes bloqué, assurez-vous de revenir en arrière et de re-regarder certains des screencasts précédents, sinon, vous avez tout ce qu'il faut !

Modèle de boîte CSS

Dans ce screencast, Grant introduira le modèle de boîte CSS.

Modèle de boîte CSS

Devoir - Grille de couleurs à partir de zéro

Il est temps pour notre nouveau devoir et lorsque vous aurez terminé, nous aurons hâte de continuer le cours dans la prochaine leçon.

Mise en page et positionnement CSS

Dans ce screencast, Grant nous aidera à apprendre les principes de mise en page et de positionnement avec CSS. Par exemple, comment superposer des éléments, en rendre certains collants sur la page, etc.

Devoir - Drapeaux CSS

Dans le prochain devoir, vous serez invité à construire certains drapeaux de pays avec du CSS pur ! En cas de doute, revenez en arrière et re-regardez certains des casts précédents et retrouvez-vous dans le prochain devoir.

Devoir - Concevoir un blog

Notre prochain devoir sera légèrement différent, car vous pouvez facilement le personnaliser et en faire une base pour votre blog réel dans la vie réelle à l'avenir !

Lien externe - Introduction au débogage

La compétence de débogage est extrêmement importante dans le développement web. Quels sont les bugs et quelques moyens de les trouver dans notre screencast.

Lien externe - Outils de développement Chrome

Les outils de développement dans votre navigateur de choix seront l'un des outils les plus importants que vous devrez apprendre. Consultez notre guide sur le sujet.

Lien externe - Utilisation de Google

Nous sommes assez sûrs que vous êtes très familier avec l'utilisation de Google pour rechercher des choses. Nous avons recueilli quelques conseils sur la façon de rechercher efficacement, alors n'hésitez pas à les consulter.

Types de données Javascript

Bonjour et bienvenue dans la partie Javascript du cours, où notre vieux ami Nate nous aidera à écrire nos premières lignes de Javascript. Nate introduira les types de données primitifs et complexes.

Les primitifs sont :

  • chaînes de caractères, par exemple "bonjour"
  • nombres, par exemple 2, 3
  • booléens, par exemple true ou false

Les complexes sont des combinaisons de primitifs :

  • tableau, par exemple [1, 2, true, "bonjour"]
  • objets, par exemple {likes: "voyage", countries_visited: 21, has_passport: true}

Devoir - Épicerie JS

Félicitations ! Vous avez atteint votre premier devoir Javascript. N'hésitez pas à demander de l'aide si vous êtes bloqué et, surtout, amusez-vous !

Tableaux Javascript

Bienvenue dans notre prochain cast. Nate plonge un peu plus profondément dans les tableaux et montre comment accéder à divers éléments d'un tableau et déterminer sa longueur.

//              0        1       2        3         4
var colors = ['blue', 'green', 'red', 'yellow', 'purple'];

console.log(colors[1]); // green
console.log(colors.length); // 5

Conditionnels Javascript

Dans ce screencast, Nate nous aidera à apprendre comment ajouter de la logique à nos programmes Javascript.

Souvent, nous aimerions faire quelque chose seulement si quelque chose d'autre est à la bonne place. Par exemple, si l'anniversaire de l'utilisateur est le jour où il regarde votre page, montrez-lui une animation de confettis :)

Pour cela, nous utiliserions des conditionnels.

Nate nous guidera à travers tous les if, else if et else, comment ils sont utilisés et plus encore.

Devoir - Jeux Olympiques des instructions if

Super, il est temps de pratiquer ces instructions if avec le prochain devoir JS

Boucles Javascript

Une autre chose courante en programmation est de répéter une certaine opération un certain nombre de fois. Vous n'avez pas à copier-coller le code pour le nombre de fois dont vous avez besoin, car il existe des boucles pour cela.

for (i = 0; i < 100; i++) {
  // votre code que vous souhaitez répéter
}

Nate nous apprendra tout sur les boucles for, et même comment vous pouvez les supercharger avec des conditionnels de la leçon précédente.

Devoir - Boucles paires/impaires

Bien joué ! Pratiquons maintenant les boucles. Assurez-vous de ne pas prendre de raccourcis et de chercher de l'aide si vous êtes bloqué. Bonne chance et amusez-vous.

Devoir - Pratique des boucles et des tableaux

Très bien ! Faisons maintenant une tâche de programmation très courante et pratiquons les boucles et les tableaux ensemble.

Fonctions Javascript partie 1

Vous vous souvenez comment nous avons parlé de ne pas avoir à copier-coller du code dans le chapitre sur les boucles ? Eh bien, un terme de programmation pour cela est DRY, Ne vous répétez pas.

Les fonctions sont utilisées lorsque nous avons un morceau de code que nous aimerions réutiliser, à plusieurs endroits.

function sum(x, y) {
  console.log(x + y);
}

Fonctions Javascript partie 2

Super, maintenant que nous savons comment faire une fonction, comment l'utilisons-nous ? Un terme pour utiliser une fonction est appeler une fonction.

Nous pouvons appeler la fonction du chapitre précédent

sum(2, 2); // affiche 4

Plus d'informations sur l'appel, comment stocker les résultats d'une fonction et comment les combiner avec des boucles, dans le screencast de ce chapitre avec Nate.

Devoir - Exercice sur les fonctions

Bienvenue ! Nous avons maintenant un exercice pour pratiquer les fonctions. N'hésitez pas à demander de l'aide si vous êtes bloqué, amusez-vous et bonne chance.

Objets Javascript Partie 1

Il est maintenant temps de couvrir les objets Javascript. Si vous n'en voyiez pas l'utilité après le chapitre sur les structures de données, nous allons les couvrir en profondeur maintenant.

Les objets sont pour ces cas où nous devons décrire quelque chose en profondeur. Les objets ont des propriétés. Par exemple, les détails personnels de vos amis et parents peuvent être stockés dans un objet, afin que vous sachiez quand leur envoyer une carte d'anniversaire.

// pour créer un objet
var person = {
  name: 'Rick',
  age: 70,
  relation: 'grand-père'
};

// pour accéder à une propriété, utilisez la notation '.'
console.log(person.name);
console.log(person.age);

Vous entendrez souvent les gens dire paire clé-valeur lorsqu'ils parlent des propriétés et de leurs valeurs.

Objets Javascript Partie 2

Vous pouvez également créer des propriétés sur des objets existants.

var car = {
  type: 'Honda',
  make: 'Civic',
  wheels: 4,
  honk
};

car.hasHadAccident = true;

console.log(car.hasHadAccident); // affiche true

Et certaines propriétés peuvent être assignées à des fonctions

var car = {
  type: 'Honda',
  make: 'Civic',
  wheels: 4,
  honk: function() {
    console.log('HOOOOONK');
  }
};

car.honk(); // HOOOOONK

Devoir - Social JS

Notre prochain devoir vous aidera à écrire des structures de données plus complexes et à réfléchir à leur sujet.

Devoir - Jeux Olympiques des boucles

Bienvenue à nouveau, le prochain exercice vous donnera une pratique supplémentaire sur l'utilisation et la création de boucles for.

Conventions Javascript

Javascript est un langage très dynamique et il existe de nombreuses façons de faire les choses. Au fil des ans, les développeurs ont élaboré un ensemble de règles de référence et, en général, tout le monde tend à les suivre. Cela inclut les façons de nommer les variables et les fonctions, l'utilisation des espaces blancs, où et comment utiliser les commentaires, etc.

Nate partage ces règles de courtoisie importantes parmi les développeurs dans notre screencast, n'hésitez pas à le consulter.

Devoir - Éditeur Daily Planet

Nous avons maintenant un autre exercice à compléter. Ce devoir vous fera cloner un dépôt de GitHub qui contient du code javascript. Le code est infesté de mauvaises conventions JS, et votre objectif est de le nettoyer et de vous assurer qu'il s'exécute correctement.

Introduction au DOM

Jusqu'à présent, nous avons appris le Javascript, mais comment s'applique-t-il au développement web réel ?

Javascript entre en jeu lorsque vous devez mettre à jour votre HTML et CSS de manière programmatique. Pour ajouter de l'interactivité et faire en sorte que des choses se passent sur votre page.

Dans ce screencast, Bob explique comment cela peut être réalisé.

Qu'est-ce que le DOM ?

DOM signifie "Document Object Model". C'est essentiellement un ensemble d'outils qui sont donnés aux développeurs pour pouvoir changer la page de manière programmatique. Le DOM est simplement un objet, sur lequel nous pouvons utiliser différentes méthodes et propriétés pour apporter des modifications à la page.

La façon dont nous accédons au DOM est en ajoutant une balise <script> à la page avec notre fichier .js.

<html>
  <head>
    <title>Qu'est-ce que le DOM ?</title>
  </head>
  <body>
    <h1>Qu'est-ce que le DOM ?</h1>
    <script src="index.js"></script>
  </body>
</html>

Ensuite, à l'intérieur du fichier index.js, nous pouvons accéder au DOM en utilisant le mot-clé document.

console.log(document);

Devoir - journaliser document dans la console

Cela va être court. Pour votre prochain devoir, essayez de construire une page HTML basique à partir de zéro, essayez de journaliser document et voyez ce qui est réellement journalisé dans la console.

Sélection des éléments - getElementById

Dans ce cast, Bob nous montre comment nous pouvons sélectionner un élément DOM spécifique par un id fourni sur l'élément.

<html>
  <head> </head>
  <body>
    <!-- Nous spécifions l'id pour h1 -->
    <h1 id="hello"></h1>
    <script src="index.pack.js"></script>
  </body>
</html>

Et maintenant nous pouvons sélectionner cet élément avec Javascript

var hello = document.getElementById('hello');
console.log(hello); // <h1 id="hello">

Devoir - getElementById

Bienvenue à l'exercice suivant. Dans celui-ci, vous pratiquerez la manipulation du DOM et tenterez également de résoudre un problème qui ne vous a pas encore été présenté. Pas de soucis, tout moteur de recherche est votre ami !

Sélection de plusieurs éléments

Dans ce chapitre, Bob nous montre comment sélectionner plusieurs éléments DOM. Vous avez vraiment le choix dans ce cas. Les éléments peuvent être sélectionnés par leur id, leur nom de classe ou leur nom de balise.

<html>
  <head> </head>
  <body>
    <h1 class="things">Thing 1</h1>
    <h1 class="things">Thing 2</h1>
    <h1 class="things">Thing 3</h1>

    <script src="index.js"></script>
  </body>
</html>
var things = document.getElementsByClassName('things');
console.log(things); // HTMLCollection avec 3 éléments.

querySelector et querySelectorAll

Il existe également une autre méthode qui peut nous aider à sélectionner des éléments et qui peut être utilisée avec les trois : balises, ids et noms de classe.

document.querySelector('#favorite-things'); // retourne le premier élément qui correspond à l'id
document.querySelectorAll('#favorite-things'); // retourne tous les éléments qui correspondent à l'id

Modifier le texte d'un élément

C'est bien et bon de pouvoir sélectionner des éléments, mais c'est vraiment utile de pouvoir les mettre à jour une fois sélectionnés. L'une des utilisations les plus courantes est la mise à jour de texte avec Javascript.

Dans ce chapitre, Bob couvre quelques méthodes et examine leurs avantages et inconvénients. L'une d'elles est :

<p id="paragraph">PLACEHOLDER</p>
document.querySelector('#paragraph').textContent = "J'ai changé !";

Modifier les styles

Si nous pouvons modifier du texte, il en va de même pour la modification des styles.

<h1 id="header">Modifier les styles avec JS</h1>
var header = document.getElementById('header');
header.style.color = 'blue'; // le header change de couleur en bleu

Modifier les styles - className et classList

Souvent, vous ne voulez peut-être pas changer un style de manière permanente. Il est courant de changer les couleurs en fonction d'un événement ou d'une entrée pendant un certain temps, puis de les ramener à une position par défaut. Par exemple, vous saisissez un texte dans un champ, vous voulez peut-être mettre en surbrillance les bords de cette boîte.

C'est un cas parfait pour ajouter et supprimer une classe.

<h1 id="header" class="title another">Modifier les styles avec JS</h1>
document.querySelector('#header').classList.add('new-class'); // maintenant les classes dans #header sont : title new-class another
document.querySelector('#header').classList.remove('title'); // maintenant les classes dans #header sont : new-class another

// pour activer ou désactiver utiliser toggle
document.querySelector('#header').classList.toggle('title'); // ajoute la classe title.

Modifier les éléments - value

Pendant que nous parlons de la modification des éléments, la balise <input /> mérite notre attention spéciale. C'est un peu un cas à part, car elle n'a pas de propriété textContent et la façon d'accéder à ce que l'utilisateur a tapé dans un champ de saisie est avec la propriété value.

<input type="text" id="text-input" />
var inputBox = document.getElementById('text-input');
console.log(inputBox.value); // journalisera la saisie de l'utilisateur

Créer des éléments en JS

Si nous pouvons modifier un élément, pourquoi ne pas le créer ?

Nous pouvons le faire avec la fonction createElement().

Par exemple, si nous avons une liste

<ul id="my-list">
  <li>0</li>
  <li>1</li>
  <li>2</li>
</ul>

Nous pouvons ajouter un autre élément <li> comme ceci :

// créer un nouvel élément de liste
var newLi = document.createElement('li');

// ajouter un numéro d'ordre à l'intérieur, pour qu'il ressemble à <li>3</li>
newLi.textContent = '3';

// sélectionner la liste existante
var myList = document.getElementById('my-list');

// ajouter le li nouvellement créé à la liste.
myList.append(newLi);

Créer des éléments en JS - innerHTML

L'approche que Bob nous a montrée dans le chapitre précédent est la méthode de référence. Mais dans ce chapitre, il nous montre que pour de telles opérations rapides, nous pouvons simplifier le code en utilisant innerHtml.

var myList = document.getElementById('my-list');
// innerHTML est une représentation de chaîne, c'est pourquoi il est possible de simplement ajouter un autre élément.
myList.innerHTML += '<li>3</li>';

Créer des éléments en JS - boucles for + createElement

D'accord, appliquons maintenant ce que nous avons appris.

Nous pouvons combiner nos connaissances des boucles avec createElement pour afficher des informations à l'écran.

Imaginez que vous organisez une fête et que vous avez envoyé les invitations. Lorsque quelqu'un accepte de venir, vous souhaitez afficher leurs noms sur une page. Cette liste de personnes peut changer. Ainsi, différents utilisateurs peuvent voir différentes informations selon le moment où ils ont vu votre page.

Voyons comment cela peut être fait

<html>
  <head> </head>
  <body>
    <ul id="guests"></ul>

    <script src="index.js"></script>
  </body>
</html>
// mes invités
var partyGuests = [
  'Jason Lee Scott',
  'Kimberly Hart',
  'Zack Taylor',
  'Trini Kwan',
  'Billy Cranston'
];

// récupérer la liste
var guestList = document.getElementById('guests');

// pour chaque invité dans le tableau partyGuests
for (var i = 0; i < partyGuests.length; i++) {
  // créer un élément de liste pour chacun
  var newName = document.createElement('li');

  // et ajouter le nom de l'invité à l'élément de liste
  newName.textContent = partyGuests[i];

  // ajouter l'élément de liste à ma liste d'invités
  guestList.append(newName);
}

Écouteurs d'événements

Toutes les modifications du DOM que nous avons apprises jusqu'à présent menaient à ce chapitre très important. Beaucoup de changements dépendent généralement de l'interaction de l'utilisateur avec votre page.

Cela nous amène aux événements et aux écouteurs d'événements. Les événements sont des clics, des survols, des pressions sur le clavier, les moyens habituels par lesquels les gens interagissent avec les pages web. Les écouteurs d'événements sont des morceaux spéciaux de code qui attendent ces événements et déclenchent ensuite votre code lorsque quelque chose se produit.

Regardons un exemple de bouton.

<html>
  <head>
    <link href="styles.css" rel="stylesheet" />
  </head>
  <body>
    <button id="button">Cliquez-moi</button>

    <script src="index.js"></script>
  </body>
</html>
var button = document.getElementById('button');

// ajouter un écouteur d'événement pour les clics
button.addEventListener('click', function() {
  // lorsque l'utilisateur clique sur le bouton, exécutez cette fonction.
  console.log('Le bouton a été cliqué !');
});

Auto-étude - obtenir la valeur d'un élément d'entrée

Bienvenue à votre prochain défi. Vous devrez enregistrer la saisie de l'utilisateur et la journaliser dans la console après qu'il ait cliqué sur un bouton. Pas de soucis si vous n'êtes pas sûr de comment faire. Il y a quelques liens utiles dans le cast et nous sommes sûrs que vous pouvez le faire.

DJ JS - Pratique des écouteurs d'événements

Super travail pour être arrivé aussi loin dans le cours. Il est maintenant temps de pratiquer les écouteurs d'événements dans notre prochain exercice. Comme toujours, si vous êtes bloqué, regardez certains des screencasts précédents et n'hésitez pas à demander de l'aide.

Projet de pré-cours

Bien joué. Vous avez parcouru les matériaux du cours et vous êtes prêt pour le projet de pré-cours. Ce projet est destiné aux personnes qui souhaitent s'inscrire à V School, mais si vous souhaitez une pratique supplémentaire, n'hésitez pas à vous lancer.

Félicitations !

Félicitations pour avoir complété le cours. Vous avez travaillé très dur et vous devriez être vraiment fier de vous. C'est le début d'un voyage incroyable pour vous !