Logo ÉTS
Session
Cours
Responsable(s) Julien Gascon-Samson

Se connecter
 

Sauvegarde réussie
Echec de sauvegarde
Avertissement
École de technologie supérieure

Responsable(s) de cours : Julien Gascon-Samson


PLAN DE COURS

Automne 2023
GTI525 : Technologies de développement Internet (3 crédits)





Préalables
Programme(s) : 7084, 7086
             
  Profils(s) : Tous profils  
             
    Minimum 40 crédits    
             
Programme(s) : 7365, 7610
             
  Profils(s) : Tous profils  
             
    Minimum 40 crédits ET LOG210    
             
Programme(s) : 7065, 7070
             
  Profils(s) : Tous profils  
             
    Minimum 47 crédits ET LOG210    
             
Unités d'agrément
Total d'unités d'agrément : 58,8 36,7 % 63,3 %




Qualités de l'ingénieur

Qn
Qualité visée dans ce cours  
Qn
  Qualité visée dans un autre cours  
  Indicateur enseigné
  Indicateur évalué
  Indicateur enseigné et évalué



Descriptif du cours

Au terme de ce cours, l'étudiant ou l'étudiante sera en mesure :

  • de décrire l’infrastructure de base d’Internet, du Web et d’une application Web;
  • d'expliquer le rôle des principaux éléments de cette infrastructure (matériel, protocoles, langages, serveurs, navigateurs, etc.);
  • de nommer les principales technologies de développement (langages) d’applications Web statiques et dynamiques et expliquer les principales caractéristiques de chacune;
  • d'identifier les particularités du développement en environnement Web et en tenir compte dans la conception, le développement et le déploiement d’applications Web;
  • de concevoir, développer et déployer des applications Web dynamiques, incluant le choix de l’architecture appropriée, la conception HTML et la programmation côté client et côté serveur basée dans le cadre d'une méthodologie structurée du génie des technologies de l’information;
  • d'appliquer les patrons de conception pertinents et spécifiques à la conception d’applications Web.

Le cours couvre la présentation des outils technologiques et architecturaux actuels pour effectuer le développement d’applications Internet.

Les séances de laboratoire permettent la mise en oeuvre de ces différentes technologies pour construire une application Internet typique consistant en un site Web interactif connecté à des systèmes de données.

Notes sur les préalables :

  • le préalable LOG210 concerne les bacs en génie logiciel et en génie des TI
  • le préalable LOG121 concerne le bac en informatique distribuée;
  • dans tous les cas, l'on doit également cumuler un minimum de 40 crédits de cours de son programme avant de suivre le cours GTI525.



Objectifs du cours

Les objectifs du cours sont les suivants :

  1. Comprendre et décrire la structure des applications web modernes, ainsi que les différentes technologies fondatrices et les standards qui sous-tendent le web d'aujourd'hui.

  2. Comprendre et utiliser les langages côté-client et côté-serveur (JavaScript, HTML, CSS, etc.), les technologies du web ainsi que les APIs ouvertes du web afin de concevoir des applications web modernes frontales et dorsales robustes et sécuritaires qui respectent les standards.

  3. Appliquer les principes pertinents du génie et des TI et du génie logiciel à la conception d’application web modernes, notamment en ce qui a trait aux standards établis, aux enjeux de sécurité, aux bonnes pratiques et à l'utilisation des éléments architecturaux et de conception pertinents.

  4. Comprendre et décrire les interactions dynamiques entre JavaScript et le DOM, les différents éléments du navigateur, les interactions avec les usagers, ainsi que l'accès aux ressources externes.

  5. Survoler et décrire certaines nouvelles tendances émergentes du web.




Stratégies pédagogiques

Les séances de cours seront d'une durée de 3h / semaine pour 12 semaines, plus un examen intra (voir les modalités à la section Évaluation). Le contenu du cours sera présenté principalement sous forme de cahiers Google Colab et des presentations. Les notions théoriques seront complétées par plusieurs démonstrations et exemples qui seront effectués en classe de manière intéractive, ainsi que par des exercices. Pour faciliter la compréhension, les différents exemples seront mis à la disposition des étudiants sur les plate-formes de collaboration Moodle et/ou GitHub, et il sera possible de les exécuter sur un ordinateur personnel, dans un navigateur moderne ou en ligne de commande.

De plus, un projet pratique sera réalisé durant les 12 séances de laboratoires (deux heures chacune). Un investissement de temps personnel équivalant à 4h/semaine est également requis afin de répondre aux objectifs pédagogiques du cours (travaux pratiques, relecture et compréhension de la matière et des exercices, préparation aux examens, etc.).




Utilisation d’appareils électroniques

Il est interdit de diffuser le contenu des séances de cours (audio, photo ou vidéo) en totalité ou en partie sans l'autorisation préalable du professeur.




Horaire
Groupe Jour Heure Activité
01 Lundi 18:00 - 21:30 Activité de cours
Mercredi 18:00 - 20:00 Laboratoire (Groupe A)
Mercredi 18:00 - 20:00 Laboratoire (Groupe B)
02 Lundi 18:00 - 20:00 Laboratoire
Mercredi 18:00 - 21:30 Activité de cours



Coordonnées de l’enseignant
Groupe Nom Activité Courriel Local Disponibilité
01 Marcos Dias de Assuncao Activité de cours Marcos.Dias-De-Assuncao@etsmtl.ca A-4616
01 Jessy Anglehart-Nunes Laboratoire (Groupe A) cc-jessy.anglehart-nunes@etsmtl.ca
02 Marcos Dias de Assuncao Activité de cours Marcos.Dias-De-Assuncao@etsmtl.ca A-4616
02 Jessy Anglehart-Nunes Laboratoire cc-jessy.anglehart-nunes@etsmtl.ca



Cours
Sujets Heures

Introduction / plan de cours

1 heure

Historique du web et anatomie d'un site web 1 heure
HTML et CSS 1.5 heures
JavaScript 1: principes et concepts de base, modèle orienté-objet prototypal 4.5 heures
JavaScript 2: modèle fonctionnel et fermetures 3 heures
Navigateur, minuteurs, modèle événementiel du DOM 3 heures
--- Intra (contenu approximatif) --- 3 heures
Manipulation du DOM 5 heures
AJAX, JSON, interactions client-serveur 2 heures
Node.js et JavaScript sur le serveur 4 heures
Patrons et architectures logicielles d’applications web, APIs, architectures REST 4 heures
Bases de données du web: SQL, NoSQL, MongoDB 3 heures

Sécurité du web

3 heures
Conférencier (thématique à déterminer) 2 heures
Tendances émergentes (AI et Tensorflow.js) 1 heure
Examen final (période d'examens)

Notes:

  • Les heures sont des heures approximatives d’enseignement pour chaque sujet et sont sujettes à changement selon le déroulement du cours.
  • Le cours étant en évolution, il est possible que certains sujets soient couvert plus tôt ou plus tard dans la session.
  • La matière couverte à l’intra dépendra de l’état d’avancement dans la matière du cours à la date de l’examen.



Laboratoires et travaux pratiques

Les laboratoires visent dans un premier temps à mettre en pratique les connaissances acquises durant les cours qui ont une portée plus théorique. Dans un second temps, ils visent à permettre aux étudiants d'intégrer des notions et méthodes d'ingénierie acquises dans ce cours ainsi que dans des cours précédents (par exemple, conception logicielle, patrons de conception, documents et diagrammes d'architecture, tests). Finalement, les laboratoires visent également à permettre aux étudiants d'explorer des technologies complémentaires aux notions théoriques vues en classe (par exemple, l'utilisation de cadriciels (frameworks) web, d'APIs tierce-partie, etc.).

Les laboratoires sont effectués en partie dans les plages attitrées à l’horaire à raison de 2h/semaine, et complétés sur votre temps personnel. Note: il est recommandé d'assister aux laboratoires (pour les laboratoires tenus à distance, au moyen de la plate-forme Discord), puisque c'est la manière préviliégiée pour profiter de la disponibilité de votre chargé de lab.

Concrètement, le volet "laboratoire" du cours consiste en un projet d’application pratique qui est réalisé en équipe, et qui est découplé en 3 livrables. Les dates d’évaluation des différents livrables seront communiquées au cours de la session, et il est important que chacun des membres de l’équipe soit présent à chacune des séances de lab où un livrable est évalué, puisqu’une démonstration des fonctionnalités du livrable devra être faite au chargé de laboratoire.

Note: les sujets et énoncés des différents livrables seront communiqués durant la session; mais ne suivront pas toujours la progression du cours théorique -- il sera demandé aux étudiant(e)s d'explorer par eux-mêmes certains concepts nécessaires à la réalisation des laboratoires, même s'ils n'ont pas encore été présentés durant le cours.




Utilisation d'outils d'ingénierie

Le « web » visant à être un monde ouvert, nous visons à réduire notre dépendance à des outils, systèmes d’exploitation ou environnements de développement spécifiques! Nous utiliserons les outils suivants (SVP assurez-vous qu'ils sont installés sur votre ordinateur) :

  • Les langages HTML, CSS, JavaScript et l’environnement d’exécution Node.js ainsi que le gestionnaire de modules npm

  • Un navigateur qui respecte les standards du web

  • Les outils de débogage du navigateur

  • GitHub en tant qu’outil de contrôle de versions et de travail collaboratif

  • L’engin de bases de données MongoDB

  • Un outil de conception UML

  • Il est recommandé d’utiliser un éditeur de texte adéquat, tel que Atom, Sublime, intelli-J, VSCode, Emacs, VIM ou autre.

  • D’autres outils pertinents pourront s’ajouter à cette liste.

Notes:

  • Certains cadriciels et certaines technologies web spécifiques pourront être utilisées en laboratoire.




Évaluation

Laboratoires (projet en équipe découplé en 3 livrables)

  • Livrable 1: 8%
  • Livrable 2: 11%
  • Livrable 3: 11%

30 %

Examen intra (individuel)

30 %

Examen final (individuel, cumulatif)

40 %

 

À noter :

  • Double-seuil: une moyenne inférieure à 50% dans les évaluations individuelles entraîne automatiquement un échec au cours. Ceci est une condition nécessaire mais non suffisante pour réussir ce cours.
  • L'examen intra et final auront lieu en présentiel sur ordinateur, via la fonctionnalité "Examen" de la plate-forme Moodle. Il est possible que le logiciel SafeExamBrowser soit utilisé. Vous devrez utiliser votre ordinateur personnel.



Double seuil
Note minimale : 50



Dates des examens intra
Groupe(s) Date
1 23 octobre 2023
2 18 octobre 2023



Date de l'examen final
Votre examen final aura lieu pendant la période des examens finaux, veuillez consulter l'horaire à l'adresse suivante : http://etsmtl.ca/Etudiants-actuels/Baccalaureat/Examens-finaux


Politique de retard des travaux
Tout travail (devoir pratique, rapport de laboratoire, rapport de projet, etc.) remis en retard sans motif valable, c’est-à-dire autre que ceux mentionnés dans le Règlement des études (1er cycle, article 7.2.7 b / cycles supérieurs, article 6.5.4 b) se verra attribuer la note zéro, à moins que d’autres dispositions ne soient communiquées par écrit par l’enseignant dans les consignes de chaque travail à remettre ou dans le plan de cours pour l’ensemble des travaux.

Dispositions additionnelles

Tout travail remis en retard recevra la note 0%, sauf si une entente a été prise au préalable avec l'enseignant et à la discrétion de ce dernier.




Absence à un examen
Dans les cinq (5) jours ouvrables suivants, la tenue de son examen, l’étudiant devra justifier son absence d’un examen durant le trimestre auprès de la coordonnatrice – Affaires départementales qui en référera au directeur du département ou du SEG. Pour un examen final, l’étudiant devra justifier son absence auprès du Bureau du registraire. Dans tous les cas, l’étudiant doit effectuer sa demande en complétant le formulaire prévu à cet effet qui se trouve dans son portail Mon ÉTS/Formulaires. Toute absence non justifiée par un motif majeur (maladie certifiée par un billet de médecin, décès d’un parent immédiat, Activité compétitive d’un étudiant appartenant à un club scientifique ou un club sportif d’élite de l’ÉTS ou au programme « Alliance sport étude » ou autre) à un examen entraînera l’attribution de la note zéro (0).



Infractions de nature académique
Les clauses du « Règlement sur les infractions de nature académique de l’ÉTS » s’appliquent dans ce cours ainsi que dans tous les cours du département. Les étudiants doivent consulter le Règlement sur les infractions de nature académique (https://www.etsmtl.ca/docs/ETS/Gouvernance/Secretariat-general/Cadre-reglementaire/Documents/Infractions-nature-academique ) pour identifier les actes considérés comme étant des infractions de nature académique ainsi que prendre connaissance des sanctions prévues à cet effet.  À l’ÉTS, le respect de la propriété intellectuelle est une valeur essentielle et les étudiants sont invités à consulter la page Citer, pas plagier ! (https://www.etsmtl.ca/Etudiants-actuels/Baccalaureat/Citer-pas-plagier).



Documentation obligatoire

Aucune documentation n'est obligatoire - les diapositives du cours contiennent l'ensemble de la matière, en complément avec les exercices et exemples.




Ouvrages de références

Aucun ouvrage de référence obligatoire.

Complémentaires

  • La série de livres numériques “You Don’t Know JS” (gratuits en ligne: https://github.com/getify/You-Dont-Know-JS) -- il est recommandé de lire certaines sections de cette série de livres pour vous aider à clarifier certains concepts du cours.

  • Eloquent Javascript: A Modern Introduction to Programming, 3rd edition, Marijn Haverbeke, 2019.

  • L'ouvrage "JavaScript: The good parts” de Doug Crockford est une bonne référence sur JavaScript.

  • Thomas Hunter, Distributed Systems with Node.js: Building Enterprise-Ready Backend Services, November, 2020.

  • David Flanagan, JavaScript: The Definitive Guide, 7th Edition, O'Reilly Media, Inc., May 2020

  • Shannon Bradshaw, Eoin Brazil, Kristina Chodorow, MongoDB: The Definitive Guide, 3rd Edition, O'Reilly Media, 2019.

  • D'autres ouvrages intéressants ou références en ligne pourront vous être suggérés au fil de la session.




Adresse internet du site de cours et autres liens utiles

Le site du cours est disponible sur Moodle au https://ena.etsmtl.ca/




Autres informations

Politique d'utilisation de ChatGPT (ou tout autre outil similaire):

ChatGPT est un outil formidable. Son utilisation doit toutefois être encadrée dans un contexte pédagogique, puisque l'objectif est de former les étudiant.e.s à devenir des développeurs/développeuses compétent.e.s et qualifié.e.s.

  • Examens: l'utilisation de ChatGPT n'est pas autorisée durant les examens. Son utilisation entraînera un renvoi en comité disciplinaire.
  • Laboratoires: l'utilisation de ChatGPT pour écrire du code ou des rapports n'est pas autorisée, puisqu'il s'agirait d'un plagiat. Cependant, son utilisation pour poser des questions de programmation ponctuelles et très spécifiques est tolérée, mais chaque utilisation doit être déclarée de manière spécifique dans les rapports. Le non-respect de cette consigne sera considéré comme un plagiat.
  • En cours: l'utilisation de ChatGPT est autorisée et bienvenue pour aider à résoudre les exercices faits en classe ou bonifier la compréhension de certains concepts. Il est toutefois attendu que les étudiant.e.s fassent les exercices par eux-mêmes.