« STIC:STIC I - exercice 3 (Wall-e) » : différence entre les versions

De EduTech Wiki
Aller à la navigation Aller à la recherche
mAucun résumé des modifications
 
(30 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
{{stic12}}
{{stic archive}}
 
<categorytree mode="pages" depth="0" style="float:right; clear:right; margin-left:3px; border:1px solid gray; padding:0.7ex; background-color:#f9f9f9;">STIC</categorytree>
<categorytree mode="pages" depth="0" style="float:right; clear:right; margin-left:3px; border:1px solid gray; padding:0.7ex; background-color:#f9f9f9;">STIC</categorytree>


Ligne 13 : Ligne 14 :
* Identifier des mécanismes de Input/Output et les rapporter à des actions de l'utilisateur, du système, etc.
* Identifier des mécanismes de Input/Output et les rapporter à des actions de l'utilisateur, du système, etc.
* Reconnaître un gestionnaire d'événements et le type d'événement déclencheur
* Reconnaître un gestionnaire d'événements et le type d'événement déclencheur
* Connaître les bases de la syntaxe JavaScript (fondamnteaux du langage)
* Connaître les bases de la syntaxe JavaScript (fondamentaux du langage)
* Comprendre l'implémentation de JavaScript dans un navigateur web et sur des pages web dynamiques
* Comprendre l'implémentation de JavaScript dans un navigateur web et sur des pages web dynamiques
* Savoir créer des interactions simples à travers la combinaison gestionnaire d'événement + manipulation du DOM
* Savoir créer des interactions simples à travers la combinaison gestionnaire d'événement + manipulation du DOM
Ligne 24 : Ligne 25 :
* [[JavaScript]] (environ 10 minutes)
* [[JavaScript]] (environ 10 minutes)


Logiciels utilsés pendant l'activité en salle de classe :
Logiciels utilisés pendant l'activité en salle de classe :


* [[Brackets]]
* [[Brackets]]
Ligne 36 : Ligne 37 :
* 09:30 - 10:30 : introduction à la syntaxe de JavaScript  
* 09:30 - 10:30 : introduction à la syntaxe de JavaScript  
* -- pause --
* -- pause --
* 11:00 - 11:45 : JavaScript et le DOM (+ présentation Codepen.io)
* 11:00 - 12:30 : JavaScript et le DOM
* 11:45 - 12:30 : transfert de connaissances, JavaScript avec CSS3 et SVG


===Présentation de JavaScript===
===Présentation de JavaScript===
Ligne 43 : Ligne 43 :
Brève mise en contexte de JavaScript dans le développement web :
Brève mise en contexte de JavaScript dans le développement web :


* Développement frontend et backend
* Programmation et EduTech
* Interactivité
* Développement web frontend et backend
* Importance de l'environnement
* Importance de l'environnement
* JavaScript côté client
* JavaScript côté client


[http://tecfa.unige.ch/perso/mafritz/teaching/stic-1/slides/Introduction%20%C3%A0%20JavaScript.pdf Slides présentation] (format PDF)
Les slides de la présentation sont disponibles dans Moodle.


===Introduction à la syntaxe de JavaScript===
===Introduction à la syntaxe de JavaScript===
Ligne 53 : Ligne 55 :
Survol des éléments fondamentaux du langage :
Survol des éléments fondamentaux du langage :


* Syntaxe
* Syntaxe : règles pour écrire/organiser le code source
* Éléments principaux (variables, opérateurs, types de données, structure de contrôle, boucles, ...)
** Variables : <code>var cours = "STIC I";</code>
** Types de données : (1) primitives (i.e. string, number, boolean, null, undefined); (2) objects (objects, arrays, functions)
** Opérateurs : (1) mathématiques (+, -, /, *, %), (2) logiques (&&, ||, ==, !=, ..), (3) autres (...)
** Structure de contrôle (if... else if... else, switch)
** Boucles (for, while)
** Built-in objects (String, Math, Number, ...) -> properties (i.e. variables) & methods (i.e. functions)
* Instructions
*# Expressions : éléments individuels du langage, e.g. <code>var</code>, <code>+</code>, <code>.</code>, ...
*# Statements : composition d'expressions, e.g. <code>var cours = "STIC" + " I";</code>
*# Bloc de code : composition de statements qui partagent le même scope, e.g. <code>function () { ... }</code>
* Deux types d'instructions :
*# Modifier l'état de la logique de l'application (i.e. "write")
*# Récupérer le résultat d'une manipulation/l'état d'un élément à un moment donné dans la logique de l'application (i.e. "read")


Références :  
Références :  


* [[Tutoriel JavaScript de base]]
* [[Tutoriel JavaScript de base]]
==== Exemple analysé ====
'''Problème''' : je veux obtenir l'inverse d'un mot. E.g. STIC --> CITS
Démarche :
# Avec quelle type de données on a à faire ? Une suite de caractère --> String
# Existe-t-il une fonctionnalité du langage qui fait ce que je veux ?
#* Contrôler la [http://www.w3schools.com/jsref/jsref_obj_string.asp liste des propriétés/méthodes associés aux String]
#* Il n'y a rien qui fait exactement ce dont j'ai besoin
# Existe-t-il quelque chose qui pourrait être utile ?
#* La méthode <code>split()</code> sépare une suite de caractère et en fait une liste indexée, i.e. un array ([http://www.w3schools.com/jsref/jsref_split.asp référence])
#* Donc je peux passer de "STIC" à ["S", "T", "I", "C"]
# Maintenant je me retrouve avec un array. Existe-t-il une fonctionnalité du langage qui permet d'inverser un array?
#* Contrôler la [http://www.w3schools.com/jsref/jsref_obj_array.asp liste des propriétés/méthode associés aux Array]
#* La méthode <code>reverse()</code> s'occupe exactement de cela ([http://www.w3schools.com/jsref/jsref_reverse.asp référence])
#* Donc je peux passer de ["S", "T", "I", "C"] à ["C", "I", "T", "S"]
# Maintenant je me retrouve avec un array qui a les lettres dans le bon ordre. Existe-t-il une fonctionnalité du langage qui permet de passer d'un Array à un String?
#* Contrôler à nouveau la liste des propriétés/méthodes associés aux Array (vour plus haut)
#* La méthode <code>join()</code> s'occupe exactement de cela ([http://www.w3schools.com/jsref/jsref_join.asp référence])
#* Donc je peux passer de ["C", "I", "T", "S"] à "CITS"
# Résolution du problème
Même passage en code :
<source lang="JavaScript">
//Déclarer une variable avec le mot que je veux inverser
var init= "STIC"; //--> "STIC"
//Commencer par le traduir en array
var singleLetters = init.split(""); //--> ["S", "T", "I", "C"]
//Inverser l'ordre des éléments
var reverseLetters = singleLetters.reverse(); //--> ["C", "I", "T", "S"]
//Unire les lettres dans l'ordre inverse
var end = reverseLetters.join(""); //--> "CITS"
</source>
Dans cet exemple de code on a utilisé beaucoup de variables qui en fait ne servent pas. Donc on peut améliorer le code (i.e. faire du '''refactoring''') :
<source lang="JavaScript">
var init = "STIC"; //--> "STIC"
var end = init.split("").reverse().join(""); //--> "CITS";
</source>
À ce point on a un meilleur algorithme, mais si on voulait connaître l'inverse de "ERGO", il faudrait écrire à nouveau les mêmes passages juste avec une nouvelle valeur associée à la variable init. On peut faire mieux, on peut créer une '''fonction''' :
<source lang="JavaScript">
//Déclarer une fonction avec un argument. Ce sera le mot initial
function reverseWord(init) {
  //Renvoyer le mot inversée en utilisant l'aglorithme que nous avons créé
  return init.split("").reverse().join("");
}
//Maintenant il sera suffisant d'invoquer cette fonction et lui passer le mot en tant qu'argument pour obtenir l'inverse
var sticReverse = reverseWord("Sciences et Technologies de l’Information et de la Communication");
var ergoReverse = reverseWord("Design centré utilisateur et ergonomie");
</source>
==== Workshop ====
Workshop files from GitHub :
* https://github.com/MALTT-STIC/stic-1-javascript-essentials


===JavaScript et le DOM===
===JavaScript et le DOM===
Ligne 69 : Ligne 148 :
* Gestionnaire d'événements
* Gestionnaire d'événements


Workshop Codepen.io :
Principe de base :
 
#Identifier un élément dans le DOM
#Lui appliquer un gestionnaire d'événement
#Créer une fonction qui :
##Identifie les éléments à modifier suite à l'événement
##Applique les modifications et met à jour le DOM
 
Exemples Codepen.io :
 
* [http://codepen.io/mafritz/pen/NNmgqG Démo : mise à jour du DOM après téléchargement de la page]
* [http://codepen.io/mafritz/pen/vNRVxw Simple manipulation du DOM avec JavaScript]
* [http://codepen.io/mafritz/pen/XdQZQR Modifier le comportement "normal" du navigateur web]
* [http://codepen.io/mafritz/pen/NGzpEo Événements liés à la souris]
* [http://codepen.io/mafritz/pen/JRVAGj L'object "event"]
* [http://codepen.io/mafritz/pen/OyZzpw JavaScript et CSS]
* [http://codepen.io/mafritz/pen/OyZJvx L'éléments this dans le DOM]
* [http://codepen.io/mafritz/pen/PPeodJ JavaScript et formulaires HTML]
* [http://codepen.io/mafritz/pen/NRvGJZ JavaScript et les événements lié au temps]
 
Ces exemples (et plus) sont disponibles également ici http://codepen.io/collection/XgkejK/


* Présentation Codepen.io
Utiliser JavaScript avec SVG :
* Fork et travail sur les exemples
* [http://tecfa.unige.ch/perso/mafritz/teaching/stic-1/svg/javascript-svg-ex1.html Ajouter des éléments SVG]
* [http://tecfa.unige.ch/perso/mafritz/teaching/stic-1/svg/javascript-svg-ex2.html Rendre des éléments SVG interactifs]


Références :
Références :


* [[Tutoriel JavaScript de base]]
* [[Tutoriel JavaScript côté client]]
* Exemples Codepen.io :
** [http://codepen.io/mafritz/pen/vNRVxw Simple manipulation du DOM avec JavaScript]
** [http://codepen.io/mafritz/pen/NGzpEo Événements liés à la souris]
** [http://codepen.io/mafritz/pen/OyZJvx L'éléments this dans le DOM]
** [http://codepen.io/mafritz/pen/PPeodJ JavaScript et formulaires HTML]


===Transfert de connaissances : JavaScript avec CSS3 et SVG===
==== Workshop ====


Utiliser JavaScript avec :
Workshop files from GitHub :


* SVG :
* https://github.com/MALTT-STIC/stic-1-javascript-client-side
** [http://tecfa.unige.ch/perso/mafritz/teaching/stic-1/svg/javascript-svg-ex1.html Ajouter des éléments SVG]
** [http://tecfa.unige.ch/perso/mafritz/teaching/stic-1/svg/javascript-svg-ex2.html Rendre des éléments SVG interactifs]
* CSS
** [http://codepen.io/mafritz/pen/OyZzpw Utiliser dynamiquement les classes CSS avec JavaScript]


== Projet 3 / Tâche ==
== Projet 3 / Tâche ==
Ligne 105 : Ligne 196 :
==== Contraintes ====  
==== Contraintes ====  


* Contenu de la page selon vos envie, mais en rapport avec une thématique MALTT
* Contenu de la page selon vos envies, mais en rapport avec une thématique MALTT
* Vous devez inclure un fichier JavaScript externe et '''évitez''' du code JavaScript dans les attributs (e.g. onclick="...")
* Vous devez inclure un fichier JavaScript externe et '''éviter''' du code JavaScript dans les attributs (e.g. onclick="...")
* La page doit contenir au moins deux éléments interactifs (e.g. bouton, zone de texte modifiable, ...)
* La page doit contenir au moins deux éléments interactifs (e.g. bouton, zone de texte modifiable, ...)
* Vous devez créer au moins une manipulation du DOM qui modifie le contenu de la page sans actualiser la page ou pointer vers une autre lien
* Vous devez créer au moins une manipulation du DOM qui modifie le contenu de la page sans actualiser la page ou pointer vers un autre lien
* Vous pouvez utiliser du clipart (SVG ou autre) fait par d'autres, mais citez la source dans le rapport et dans la page de votre dispositif
* Vous pouvez utiliser du clipart (SVG ou autre) fait par d'autres, mais citez la source dans le rapport et dans la page de votre dispositif
* Vous pouvez utiliser des bouts du code depuis les examples en cours, mais il faudra au moins adapter le code JavaScript (pas simplement changer l'intituler des boutons et du contenu HTML modifié)
* Vous pouvez utiliser des bouts du code depuis les exemples en cours, mais il faudra au moins adapter le code JavaScript (pas simplement changer/adapter le contenu HTML)


=== Pour les plus ambitieux ===
=== Pour les plus ambitieux ===
En général : si vous maîtrisiez bien JavaScript, concentrez-vous sur les aspects interactifs/ergonomiques/pédagogiques de l'application : il ne suffit pas de savoir coder pour créer un bon dispositif !
;Niveau intermédiaire


* Vous pouvez essayer l'une des [[Bibliothèques JavaScript]] listés ou en proposer une autre.  
* Vous pouvez essayer l'une des [[Bibliothèques JavaScript]] listés ou en proposer une autre.  
* Vous pouvez utiliser [[jQuery]] (mais pas jQuery UI qu'on verra en P3) à condition que vous ayez compris les principes du "vanilla" JavaScript.  
* Vous pouvez utiliser [[jQuery]] (mais pas jQuery UI qu'on verra en P3) à condition que vous ayez compris les principes du "vanilla" JavaScript.
 
;Niveau avancé
 
Si vous avez enfin un background informatique avec des bonnes connaissances d'un langage style C++, C#, Java, à la limite PHP, vous pouvez utiliser [https://www.typescriptlang.org/ TypeScript].
 
Dans ce cas, pensez à utiliser un éditeur de texte qui supporte cette syntaxe, à ma connaissance il n'y a pas de plugin Brackets satisfaisants pour l'instant. Je vous conseille [[Visual studio code]], dont la page sur ce Wiki pourrait être améliorée d'ailleurs - [[Utilisateur:Mattia A. Fritz|Mattia A. Fritz]] ([[Discussion utilisateur:Mattia A. Fritz|discussion]]) 1 novembre 2016 à 16:49 (CET)


=== Critères d'évaluation ===
=== Critères d'évaluation ===
Ligne 130 : Ligne 231 :


* Code bien organisé et "élégant"
* Code bien organisé et "élégant"
* Documentation du code (raisonnable : pas plus de commentaires que de code...)
* Utilisation de techniques de programmation (cycles, structure de contrôle, etc.)
* Utilisation de techniques de programmation (cycles, structure de contrôle, etc.)
* Indications pertinentes sur les interactions disponibles (e.g. guidage, texte descriptif, ...)
* Indications pertinentes sur les interactions disponibles (e.g. guidage, texte descriptif, ...)
Ligne 143 : Ligne 245 :
En particulier pour cet exercice, essayez d'expliquer :
En particulier pour cet exercice, essayez d'expliquer :


* En quoi les interactions que vous avez créez soutiennent vos objectifs d'apprentissage/d'utilisation
* En quoi les interactions que vous avez créées soutiennent vos objectifs d'apprentissage/d'utilisation


=== Contribution Wiki ===
=== Contribution Wiki ===
Ligne 160 : Ligne 262 :
=== Délai ===
=== Délai ===


; Lundi 08:59:59 avant la semaine des cours présentiels P3
Lundi 08:59 avant la semaine des cours présentiels P3


== Liens ==
== Liens ==
=== Théoriques ===
* [[Introduction à la programmation]]
* [[Enseignement de l'informatique à l'école]]
** [http://www.rts.ch/play/radio/forum/audio/faut-il-obliger-les-enfants-a-suivre-des-cours-de-programmation-informatique-a-lecole?id=7638246 Débat RTS]
* [http://www.cs.cmu.edu/link/research-notebook-computational-thinking-what-and-why Computational Thinking: What and Why?] (Wing, 2011)
* [https://www.google.com/edu/resources/programs/exploring-computational-thinking/ Google Computational Thinking]


=== Technique ===
=== Technique ===


; JavaScript
* [[Introduction à la programmation]]
* [[JavaScript]]
* [[JavaScript]]
* [[Tutoriel JavaScript de base]]
* [[Tutoriel JavaScript de base]]
* [[Tutoriel JavaScript de base]]
* [[Tutoriel JavaScript côté client]]
* [http://www.w3schools.com/js/ Tutoriel JavaScript sur W3schools]]
* [http://www.w3schools.com/js/ Tutoriel JavaScript sur W3schools]
* Il existe des dizaines de tutos sur le web et des livres
* Il existe des dizaines de tutos sur le web et des livres mais '''attention''' : contrôlez qu'il s'agit de '''ressources récentes''', si non il y a le risque de suivre des pratiques obsolètes.


=== Bibliographie ===
=== Bibliographie ===

Dernière version du 28 septembre 2017 à 14:43

Cette page fait partie des archives des cours Cours STIC (STIC I, STIC II,STIC III,STIC IV)

Introduction

Cet exercice introduit la sensibilisation à la programmation avec JavaScript. Les concepts fondamentaux de la programmation seront abordés, et ensuite appliqués à l'interactivité des pages web.

Connaissances/compétences envisagées

À l'issue de cet exercice vous devez avoir acquis les connaissances/compétences suivantes :

  • Connaître les bases de la programmation et ses composantes principales (variables, types de données, structure de contrôle, etc.)
  • Identifier des mécanismes de Input/Output et les rapporter à des actions de l'utilisateur, du système, etc.
  • Reconnaître un gestionnaire d'événements et le type d'événement déclencheur
  • Connaître les bases de la syntaxe JavaScript (fondamentaux du langage)
  • Comprendre l'implémentation de JavaScript dans un navigateur web et sur des pages web dynamiques
  • Savoir créer des interactions simples à travers la combinaison gestionnaire d'événement + manipulation du DOM

Prérequis

Lectures conseillées (sans code !!!) :

Logiciels utilisés pendant l'activité en salle de classe :

  • Brackets
  • Outils de développement Google Chrome

Activité en salle de classe

Programme

  • 09:00 - 09:30 : présentation de JavaScript dans le contexte du développement web
  • 09:30 - 10:30 : introduction à la syntaxe de JavaScript
  • -- pause --
  • 11:00 - 12:30 : JavaScript et le DOM

Présentation de JavaScript

Brève mise en contexte de JavaScript dans le développement web :

  • Programmation et EduTech
  • Interactivité
  • Développement web frontend et backend
  • Importance de l'environnement
  • JavaScript côté client

Les slides de la présentation sont disponibles dans Moodle.

Introduction à la syntaxe de JavaScript

Survol des éléments fondamentaux du langage :

  • Syntaxe : règles pour écrire/organiser le code source
    • Variables : var cours = "STIC I";
    • Types de données : (1) primitives (i.e. string, number, boolean, null, undefined); (2) objects (objects, arrays, functions)
    • Opérateurs : (1) mathématiques (+, -, /, *, %), (2) logiques (&&, ||, ==, !=, ..), (3) autres (...)
    • Structure de contrôle (if... else if... else, switch)
    • Boucles (for, while)
    • Built-in objects (String, Math, Number, ...) -> properties (i.e. variables) & methods (i.e. functions)
  • Instructions
    1. Expressions : éléments individuels du langage, e.g. var, +, ., ...
    2. Statements : composition d'expressions, e.g. var cours = "STIC" + " I";
    3. Bloc de code : composition de statements qui partagent le même scope, e.g. function () { ... }
  • Deux types d'instructions :
    1. Modifier l'état de la logique de l'application (i.e. "write")
    2. Récupérer le résultat d'une manipulation/l'état d'un élément à un moment donné dans la logique de l'application (i.e. "read")

Références :

Exemple analysé

Problème : je veux obtenir l'inverse d'un mot. E.g. STIC --> CITS

Démarche :

  1. Avec quelle type de données on a à faire ? Une suite de caractère --> String
  2. Existe-t-il une fonctionnalité du langage qui fait ce que je veux ?
  3. Existe-t-il quelque chose qui pourrait être utile ?
    • La méthode split() sépare une suite de caractère et en fait une liste indexée, i.e. un array (référence)
    • Donc je peux passer de "STIC" à ["S", "T", "I", "C"]
  4. Maintenant je me retrouve avec un array. Existe-t-il une fonctionnalité du langage qui permet d'inverser un array?
  5. Maintenant je me retrouve avec un array qui a les lettres dans le bon ordre. Existe-t-il une fonctionnalité du langage qui permet de passer d'un Array à un String?
    • Contrôler à nouveau la liste des propriétés/méthodes associés aux Array (vour plus haut)
    • La méthode join() s'occupe exactement de cela (référence)
    • Donc je peux passer de ["C", "I", "T", "S"] à "CITS"
  6. Résolution du problème

Même passage en code :

//Déclarer une variable avec le mot que je veux inverser
var init= "STIC"; //--> "STIC"

//Commencer par le traduir en array
var singleLetters = init.split(""); //--> ["S", "T", "I", "C"]

//Inverser l'ordre des éléments
var reverseLetters = singleLetters.reverse(); //--> ["C", "I", "T", "S"]

//Unire les lettres dans l'ordre inverse
var end = reverseLetters.join(""); //--> "CITS"

Dans cet exemple de code on a utilisé beaucoup de variables qui en fait ne servent pas. Donc on peut améliorer le code (i.e. faire du refactoring) :

var init = "STIC"; //--> "STIC"
var end = init.split("").reverse().join(""); //--> "CITS";

À ce point on a un meilleur algorithme, mais si on voulait connaître l'inverse de "ERGO", il faudrait écrire à nouveau les mêmes passages juste avec une nouvelle valeur associée à la variable init. On peut faire mieux, on peut créer une fonction :

//Déclarer une fonction avec un argument. Ce sera le mot initial
function reverseWord(init) {
  //Renvoyer le mot inversée en utilisant l'aglorithme que nous avons créé
  return init.split("").reverse().join("");
}

//Maintenant il sera suffisant d'invoquer cette fonction et lui passer le mot en tant qu'argument pour obtenir l'inverse
var sticReverse = reverseWord("Sciences et Technologies de l’Information et de la Communication");
var ergoReverse = reverseWord("Design centré utilisateur et ergonomie");

Workshop

Workshop files from GitHub :

JavaScript et le DOM

Interaction de JavaScript avec le navigateur web :

  • L'objet global window
  • Inclure JavaScript dans une page HTML
  • Manipulation du DOM
  • Gestionnaire d'événements

Principe de base :

  1. Identifier un élément dans le DOM
  2. Lui appliquer un gestionnaire d'événement
  3. Créer une fonction qui :
    1. Identifie les éléments à modifier suite à l'événement
    2. Applique les modifications et met à jour le DOM

Exemples Codepen.io :

Ces exemples (et plus) sont disponibles également ici http://codepen.io/collection/XgkejK/

Utiliser JavaScript avec SVG :

Références :

Workshop

Workshop files from GitHub :

Projet 3 / Tâche

Dispositif

Imaginez un design pédagogique interactif dans lequel l'utilisateur puisse déterminer des modifications par rapport au contenu initial.

  • Créez une page HTML5/CSS qui contient des éléments interactifs (e.g. click, mouseover, etc.)
  • Ajoutez une ou plusieurs manipulations du DOM suite à un événement (e.g. afficher un feedback, remplacer une image, etc.)
  • Le tout doit servir à un objectif déclaré dans votre rapport (pas juste votre objectif d'apprentissage !)

Contraintes

  • Contenu de la page selon vos envies, mais en rapport avec une thématique MALTT
  • Vous devez inclure un fichier JavaScript externe et éviter du code JavaScript dans les attributs (e.g. onclick="...")
  • La page doit contenir au moins deux éléments interactifs (e.g. bouton, zone de texte modifiable, ...)
  • Vous devez créer au moins une manipulation du DOM qui modifie le contenu de la page sans actualiser la page ou pointer vers un autre lien
  • Vous pouvez utiliser du clipart (SVG ou autre) fait par d'autres, mais citez la source dans le rapport et dans la page de votre dispositif
  • Vous pouvez utiliser des bouts du code depuis les exemples en cours, mais il faudra au moins adapter le code JavaScript (pas simplement changer/adapter le contenu HTML)

Pour les plus ambitieux

En général : si vous maîtrisiez bien JavaScript, concentrez-vous sur les aspects interactifs/ergonomiques/pédagogiques de l'application : il ne suffit pas de savoir coder pour créer un bon dispositif !

Niveau intermédiaire
  • Vous pouvez essayer l'une des Bibliothèques JavaScript listés ou en proposer une autre.
  • Vous pouvez utiliser jQuery (mais pas jQuery UI qu'on verra en P3) à condition que vous ayez compris les principes du "vanilla" JavaScript.
Niveau avancé

Si vous avez enfin un background informatique avec des bonnes connaissances d'un langage style C++, C#, Java, à la limite PHP, vous pouvez utiliser TypeScript.

Dans ce cas, pensez à utiliser un éditeur de texte qui supporte cette syntaxe, à ma connaissance il n'y a pas de plugin Brackets satisfaisants pour l'instant. Je vous conseille Visual studio code, dont la page sur ce Wiki pourrait être améliorée d'ailleurs - Mattia A. Fritz (discussion) 1 novembre 2016 à 16:49 (CET)

Critères d'évaluation

Malus
  • Mauvais liens (fichier JavaScript, CSS)
  • Utilisation de JavaScript dans les attributs HTML
  • Copier/coller d'un snippet de code présenté au cours ou tiré d'internet sans aucune modification
  • Agencement de la page approximatif
  • Interaction pas claires/pas bien indiquées
Bonus
  • Code bien organisé et "élégant"
  • Documentation du code (raisonnable : pas plus de commentaires que de code...)
  • Utilisation de techniques de programmation (cycles, structure de contrôle, etc.)
  • Indications pertinentes sur les interactions disponibles (e.g. guidage, texte descriptif, ...)
  • Design graphique soigné (e.g. bonne utilisation CSS)
  • Organisation du contenu

Rapport

Faites un rapport selon les guidelines habituelles :

En particulier pour cet exercice, essayez d'expliquer :

  • En quoi les interactions que vous avez créées soutiennent vos objectifs d'apprentissage/d'utilisation

Contribution Wiki

Contribution libre comme d'habitude :

Quelques suggestions :

Délai

Lundi 08:59 avant la semaine des cours présentiels P3

Liens

Théoriques

Technique

Bibliographie

Livre recommandé pour débutants
  • JavaScript for Kids (Pas forcément pour enfants, pas super drôle, mais bien écrit). La version e-ebook ne coûte pas très cher et elle est partageable.
Livres pour débutants/intermédiares avec aussi de la théorie (free on the web/pay printable version)
  • Haverbeke, M. (2015). Eloquent JavaScript. A modern Introduction to Programming. Second Edition. San Francisco, CA: No Starch Press. Accès libre depuis internet: http://eloquentjavascript.net/
  • Simpson, K. (2015). You Don’t Know JS: Up & Going. O’Reilly Media. Accès libre à la version non editée de toute la série de livres https://github.com/getify/You-Dont-Know-JS
Livre sur les microinteractions (pas de code)
  • Saffer, D. (2014). Microinteractions. Designing with details. Sebastopol, CA: O’Reilly Media.