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

De EduTech Wiki
Aller à la navigation Aller à la recherche
Ligne 247 : Ligne 247 :
* Ne vous lancez pas tout de suite dans votre projet d'application. Essayez d'abord des exemples, donnez-vous un petit objectif atteignable (e.g. faire marcher un bouton) et gagnez confiance dans la compréhension du code.
* Ne vous lancez pas tout de suite dans votre projet d'application. Essayez d'abord des exemples, donnez-vous un petit objectif atteignable (e.g. faire marcher un bouton) et gagnez confiance dans la compréhension du code.
* Commentez votre code, pas seulement/forcément en fonction de ce que le code fait, mais surtout pour la raison (quelle est l'intention du code?)
* Commentez votre code, pas seulement/forcément en fonction de ce que le code fait, mais surtout pour la raison (quelle est l'intention du code?)
* Référez vous aux concepts constitutifs de la pensée computationnelle (voir [http://tecfa.unige.ch/perso/mafritz/teaching/slides/stic-1-introduction.html#/6 Slide pour l'ex2])
* Référez vous aux concepts constitutifs de la pensée computationnelle
* Par exemple, utilisez <code>console.log("...")</code> pour décomposer votre code et identifier la source du problème. Imaginez d'avoir un bouton qui déclenche une fonction quelconque. Vous cliquez sur le bouton et ça ne marche pas. Votre problème peut-être :
* Par exemple, utilisez <code>console.log("...")</code> pour décomposer votre code et identifier la source du problème. Imaginez d'avoir un bouton qui déclenche une fonction quelconque. Vous cliquez sur le bouton et ça ne marche pas. Votre problème peut-être :
*# Le gestionnaire d'événement associé au bouton ne marche pas
*# Le gestionnaire d'événement associé au bouton ne marche pas

Version du 21 octobre 2018 à 12:25

Cet article est en construction: un auteur est en train de le modifier.

En principe, le ou les auteurs en question devraient bientôt présenter une meilleure version.


Cette page fait partie des cours STIC I et STIC II

Introduction

Cet exercice introduit le développement de page/application web interactives avec JavaScript.

Connaissances/compétences envisagées

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

  • Consolider les bases de la programmation et ses composantes principales (variables, types de données, structure de contrôle, etc.)
  • Avoir des notions de base sur la computation et l'intérêt de l'automatisation
  • Connaître les principes fondamentaux de l'interaction d'un point de vue "bottom-up"
  • Comprendre l'implémentation de JavaScript dans un navigateur web et sur des pages web dynamiques (i.e. modification programmée du DOM)
  • 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
  • Créer des interactions simples à travers la combinaison gestionnaire d'événement + manipulation du DOM

Prérequis

Contenu à maîtriser
Lectures conseillées pour se préparer au cours en présence

La lecture complète et la maîtrise des contenus est prévue pour la période à distance.

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/Démo JavaScript (fonctionnement du langage)
  • 09:30 - 10:10 : Activité/Workshop JavaScript de base
  • 10:10 - 10:30 : Présentation sur les principes de base de computation et automatisation des processus
  • -- pause --
  • 11:00 - 11:30 : Démo JavaScript côté-client (interactivité)
  • 11:30 - 12:10 : Activité/Workshop JavaScript côté-client
  • 12:10 - 12:30 : Présentation sur les principes de base de l'interactivité avec JavaScript

Présentation/Démo JavaScript

  • Retour sur Premiers pas avec JavaScript
  • Live-coding session
    • Présentation des caractéristiques du langage
    • Illustration des composantes principales (variables, opérateurs, structure de contrôle, boucles, ...)

Workshop JavaScript de base

Fichiers à télécharger :

Présentation des principes de base de computation et automatisation des processus

  • Faire le trait d'union entre l'Introduction à la programmation et Computation avec JavaScript
  • Pensée symbolique et processus de traitement de l'information
  • Avantages de l'automatisation :
    • Rendre les processus plus vite (sur le moyen terme !)
    • Rendre les processus plus fiables (si le code est bon !)
    • Répliquer les processus par d'autres personnes (e.g. problème de réplicabilité des Sciences Sociales)

Démo JavaScript côté-client

Analyse techniques des deux applications pour la lecture présentées en P1 :

  •  : entraînement de la voie d'assemblage (construction des mots à travers le déchiffrage des lettres)
    • L'algorithme permet d'afficher les lettres qui composent un mot à l'inverse, de cette manière on ne peut pas utiliser la forme du mot.
  •  : entraînement de la voie d'adressage (reconnaissance des mots par leur "forme")
    • L'algorithme affiche le mot seulement pour 200ms, de cette manière on n'a pas le temps de construire le mot lettre par lettre.

Liens vers le repository avec les fichiers des exemple : MALTT-STIC/stic-1-app-examples

Workshop JavaScript côté-client

Fichiers à télécharger :

Présentation sur les principes de base de l'interactivité avec JavaScript

Projet 3 / Tâche

Voici de suite la description détaillée de la tâche et le matériel de support à votre disposition pour compléter l'exercice pendant la période à distance.

Lectures et matériel de support

Ces articles proposent les contenus utiles aux finalités pédagogiques du cours. Pour compléter l'exercice ou atteindre les objectifs spécifiques à votre dispositif (voir plus bas), d'autres ressources peuvent être nécessaires.

  •  : aspects théoriques et pratiques, lecture commune avec exercice 4, niveau des exemples à calibrer en fonction de vos besoins et intérêts
  •  : aspects théoriques et pratiques, niveau des exemples à calibrer en fonction de vos besoins et intérêts.

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
  • 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)
  • 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

Dimanche 20:00 avant la semaine des cours présentiels P3

Feedback intermédiaire

Vous pouvez demander un feedback intermédiaire sur votre travail à travers la page discussion de cet exercice (voir Aide plus bas) au plus tard 2 semaines avant le délai.

Ressources

Théoriques

Techniques

Références de base

Références plus avancées

Bibliographie

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.
Livres sur informatique/codage (pas de code)
  • Denning, P. J., & Martell, C. H. (2015). Great Principles of Computing. Cambridge, MA: MIT press.
  • Petzold, C. (2000). Code. The Hidden Language of Computer Hardware and Software. Redmond, WA: Microsoft Press.

Aide

Discussion de cette page

Utilisez la page discussion de cette page pour poser des questions. Pour insérer un nouveau titre, utilisez simplement le "+".

Important: Si vous cliquez sur l'étoile ("Ajouter cette page à votre liste de suivi"), le wiki vous enverra un mail après chaque modification de la page.

Journée de Support Libre

Le jeudi de la semaine après la semaine des cours en présence M1 (i.e. celle où vous avez STIC le vendredi), une Journée de Support Libre et organisée pour vous aider, entre autre, à progresser avec vos exercice STIC. La présence d'au moins un assistant/moniteur spécifiquement pour STIC est garantie de 10h à 12h s'il y a assez d'étudiants qui ont manifesté leur présence.

Quelques conseils

Voici quelques conseils pour cet exercice :

  • Ne vous lancez pas tout de suite dans votre projet d'application. Essayez d'abord des exemples, donnez-vous un petit objectif atteignable (e.g. faire marcher un bouton) et gagnez confiance dans la compréhension du code.
  • Commentez votre code, pas seulement/forcément en fonction de ce que le code fait, mais surtout pour la raison (quelle est l'intention du code?)
  • Référez vous aux concepts constitutifs de la pensée computationnelle
  • Par exemple, utilisez console.log("...") pour décomposer votre code et identifier la source du problème. Imaginez d'avoir un bouton qui déclenche une fonction quelconque. Vous cliquez sur le bouton et ça ne marche pas. Votre problème peut-être :
    1. Le gestionnaire d'événement associé au bouton ne marche pas
    2. La fonction déclenchée ne marche pas
var myBtn = document.getElementById("clickMe");
//Gestionnaire d'événement
myBtn.addEventListener(function () {
  //Mettez ici un console.log pour être sûr que votre événement est déclenché
  console.log("Le bouton clickMe marche!");
  //Puis votre fonction quelconque
  doSomething();
});

//Définissez votre fonction
function doSomething() {
  //Mettez ici un console.log pour être sûr que la fonction est invoquée
  console.log("doSomething a été invoquée!");
  //suite de votre code...
}

Avec ce type de décomposition vous pouvez savoir si le problème est dans le gestionnaire d'événement ou dans la fonction. Quand tout marche correctement, pensez à enlever les console.log().

Erreurs dans Brackets

À partir de la version 1.11 de Brackets, vous pouvez obtenir des alerts ou des erreurs du type :

  • ERROR: 'document' is not defined. [no-undef]
  • ERROR: 'console' is not defined. [no-undef]

À ce propos voir : Débug JavaScript sur la page de Brackets