Tutoriel d’Introduction à la programmation Web pour débutant
SIO-3103
Introduction à la programmation Web
Section Z1 3 crédits
Enseignant :
Dzenan Ridjanovic, Ph.D.
Pavillon Palasis-Prince Université Laval, Québec, G1V 0A6 Courriel : dzenanr [at] gmail [dot] com
Le cours sur Web : Jeudi 15h30 – 18h15 Site Web :
Forum :
Remarque : le genre masculin est utilisé tout au long de ce plan de cours dans le seul but d’en alléger la lecture.
1. Description du cours
Ce cours a pour objectif de permettre à l'étudiant de se familiariser avec les concepts de base de la programmation web, le cycle de développement d'une application et les différents outils d'aide au développement. L'étudiant apprendra à développer une application web fonctionnelle avec le langage de programmation orienté objet Python et le cadre d'application Django, en utilisant une approche de développement par spirale et des outils d'aide au développement comme Eclipse, Assembla et Mercurial.
Ce cours s'adresse aux étudiants ayant peu d'expérience de programmation, mais peut aussi convenir aux étudiants voulant parfaire leurs connaissances dans la programmation web ou les différentes technologies utilisées dans le cadre de ce cours. Les concepts abordés aideront les futurs spécialistes en systèmes d'information à se familiariser avec les différents aspects de la conception et réalisation d'une application web, ce qui leur donnera la chance de pouvoir mieux estimer l'envergure, la durée et les embûches de la création d'un système d'information. En effet, il est important pour un analyste en systèmes d'information de maîtriser à la fois le langage des gestionnaires et celui des informaticiens.
Remarque concernant la charge de travail : Ce cours universitaire de premier cycle exige en moyenne 9 heures de travail par semaine. Soyez donc bien conscient qu’il est essentiel pour votre apprentissage et pour la réussite du cours d’avoir du temps à y consacrer.
2. Objectifs
Ce cours a pour principal objectif de familiariser les étudiants aux différents concepts de base de la programmation web.
De plus, le cours vise à faire acquérir des connaissances de base dans ces différentes technologies et outils d'aide au développement:
Python
Langage de programmation orienté objet populaire, utilisé autant pour les applications clients que serveurs.
Django
Cadre d'application web qui utilise Python pour fournir du contenu dynamique à des pages web.
XHTML (eXtensible HyperText Markup Language)
Langage de balisage; version plus stricte et épurée de HTML.
CSS (Cascading Style Sheets)
Langage de présentation qui permet de contrôler l'agencement et la stylisation hors des documents XHTML.
Eclipse
Environnement de développement intégré (IDE) utilisé pour écrire le code de programmation.
Mercurial
Mercurial est un système de gestion de versions permettant en particulier la gestion de version décentralisée. Il est disponible sur plusieurs plateformes : systèmes Unix, Windows, Mac OS X.
Mercurial est écrit principalement en Python.
Assembla
Site web dédié à faciliter la collaboration entre développeurs de logiciels à l'aide de différents outils avancés et de pratiques de gestion de projets.
Assembla fournis un espace Mercurial ou le code de programmation peut être sauvegardé de façon similaire à la sauvegarde de données dans une base de données.
Outre que Mercurial, Assembla offre plusieurs autres outils comme Wiki pour organiser de l'information de base sur notre projet et Scrum pour faire la gestion des contributions individuelles au projet.
Google App Engine (GAE)
GAE pour Python et Java propose une solide offre d'hébergement de serveur d'applications. Cette solution de cloud computing est conçue comme « platform as a service » : Google fournit l'infrastructure complète ainsi que l'environnement pour héberger l'application. App Engine propose ainsi de nombreux services dont notamment un système de base de données appelé datastore (basé sur Google Big Table).
GAE permet d'exécuter vos applications web sur l'infrastructure de Google. Les applications App Engine sont faciles à construire, faciles à maintenir et supportent facilement la montée en charge de votre trafic et de vos besoins croissants de stockage de données. Avec App Engine, il n'y a pas de serveurs à maintenir. Vous chargez juste vos applications et elles sont aussitôt disponibles pour vos utilisateurs.
Avec l'environnement d'exécution Python App Engine, vous pouvez implémenter votre application en utilisant le langage de programmation Python et l'exécuter dans un interpréteur Python optimisé. App Engine inclut des APIs riches et des outils pour le développement d'applications web en Python, incluant des APIs de modélisation de données riches, un framework d'applicatino web simple d'utilisation et des outils pour manager et accéder aux données de votre application. Vous pouvez aussi profiter d'une grande variété de librairies matures et de frameworks pour le développement d'application web en Python, tel que Django.
Vous pouvez mettre à disposition vos applications depuis votre propre nom de domaine (tel que ) en utilisant Google Apps. ou vous pouvez utiliser directement le nom qui vous est fourni sur le domaine . Vous pouvez partager votre application avec le monde ou limiter l'accès aux membres de votre organisation.
Google Datastore
Une application de GAE ne peut pas écrire sur le système de fichiers. Une application peut lire des fichiers mais seulement les fichiers chargés avec le code de l'application. L'application doit utiliser la base de données App Engine ("datastore"), memcache ou d'autres services pour toutes les données qui persistent entre les requêtes.
La base de données de GAE appelée datastore repose sur le SGBD Big Table développé en interne par Google. Celui-ci a la particularité d'être hautement scalable et s'appuie sur un système de fichiers distribués géré par GFS (Google File System).
Big Table est une Map ordonnée multidimensionnelle. Les données (ou entités) sont stockées sous forme de <Clé, Valeur> dans des partitions appelées tablets. Des tablettes META1 référencent l'ensemble des tablettes contenant les entités. Une tablette maître appelée META0 référence les tablettes META1 et permet au client d'accéder aux tablettes de la base. Pour optimiser les performances, un mécanisme de cache permet au client de s'adresser directement aux tablettes META1 et aux tablettes contenant les entités.
3. Méthodes pédagogiques
Le matériel didactique et la formule utilisés vous permettent d'adopter une démarche d'apprentissage axée sur la collaboration, la communication et le travail individuel. Ces méthodes pédagogiques vous amèneront à gérer votre temps de manière flexible mais structurée, et ce, afin de respecter le rythme du cours.
Le cours est basé sur le cours donné par Charles Severance l'auteur du livre Using Google App Engine - Building Web Applications :
Voici la liste des activités d’apprentissage qui seront utilisées durant la session :
Lectures obligatoires GAE : Using Google App Engine - Building Web Applications,
Charles Severance, O'Reilly, 2009
Django : Écrire votre première application Django, version web, 2010.
Django de zéro : vos projets Python sur le Web !
Lectures facultatives
The Django Book, Adrian Holovaty and Jacob Kaplan-Moss, version web, 2010.
Présentations (Notes)
Nous utiliserons le contexte de la programmation web pour expliquer les concepts de base de la programmation. Ce choix est principalement justifié par les tendances de développements actuelles et le potentiel de réutilisabilité des concepts web à la suite du cours. En effet, plutôt que d'utiliser un système d'affichage relié à une plateforme ou un langage, l'affichage web permettra aux étudiants de créer ou éditer des pages web en utilisant n'importe quelle plateforme. De plus, l'utilisation de XHTML et CSS (et non HTML) permettra aux étudiants de connaître les standards web établis.
Nous utiliserons le cadre d'application Django pour fournir le contenu dynamique aux pages web. Le choix de Django est justifié par son accent sur le langage Python. De plus, Django utilise une approche de différenciation marquée entre la portion modèle et vue (MVC) d'une application web, ce qui permet de bien répliquer l'environnement de travail en entreprise pour les positions de designer web et programmeur.
La gestion de projets se fera en utilisant deux outils principaux, soit Assembla et Mercurial. Ces outils permettront aux étudiants d'avoir une version unique de leur projet (en ligne), de présenter leur projet, d'organiser le débogage et de faire la gestion de leur équipe.
Remarque : Étant donné la nature pratique des méthodes pédagogiques utilisées, il est impératif que vous ne preniez pas de retard. Les concepts appris chaque semaine sont préalables à la semaine suivante.
4. Évaluation des apprentissages
Il y aura trois exercices en équipe (2-3 membres). Le dernier travail est une simple application web basée sur un modèle librement choisi.
Exercice-0 (0 %)
Exercice-1 (20 %)
Exercice-2 (30 %)
Exercice-3 (35 %)
Pour les exercices en équipe (15 %)
Une évaluation d'effort en équipe, où chaque membre d'équipe évalue d'autres membres (avec quelques explications) :
1-Chacun des étudiants doit vous faire parvenir des évaluations un mon courriel avec le sujet et l'entête : SIO-2109 - Evaluation des coéquipiers
2-Pour chaque membre de votre équipe, et pas pour vous-même, vous devrez mettre une note de 0 à 5 selon les points suivants : a. attitude au travail (min 0, 1, 2, 3, 4, 5 max)
b. qualité du travail (min 0, 1, 2, 3, 4, 5 max)
c. quantité du travail (min 0, 1, 2, 3, 4, 5 max)
d. ajouter des commentaires3-Date limite : 2010-12-09
Une évaluation de 0% à 3% de 15% vous donne un échec dans le cours.
Pondération et barème d’attribution des cotes
La note finale sera transformée en une cote en fonction du barème suivant :
Intervalle Cote Intervalle Cote
[ 100 – 96 ] A + [ 70 – 66 ] C+
[ 95 – 91 ] A [ 65 – 61 ] C
[ 90 – 86 ] A- [ 60 – 56 ] C [ 85 – 81 ] B + [ 55 – 51 ] D +
[ 80 – 76 ] B [ 50 – 46 ] D
[ 75 – 71 ] B - [ 45 – 0 ] E (Échec)
M
Retard motivé Z Note retardée
Règles disciplinaires
Tout étudiant qui commet une infraction au Règlement disciplinaire à l’intention des étudiants de l’Université Laval dans le cadre du présent cours, notamment en matière de plagiat, est passible des sanctions qui sont prévues dans ce règlement. Il est très important pour tout étudiant de prendre connaissance des articles 28 à 32 du Règlement disciplinaire. Celui-ci peut être consulté à l’adresse suivante :
.
5. Évaluation du cours
Une évaluation formative du cours sera effectuée. Cette évaluation confidentielle sera uniquement consultée par votre enseignant afin de valider si la formule pédagogique est correcte et si certains ajustements s’imposent avant la fin de la session.
À la fin de ce cours, la Faculté procédera à l’évaluation du cours afin de vérifier si la formule pédagogique a atteint ses buts et si vous êtes satisfait en recueillant vos commentaires et vos suggestions. Cette évaluation est très importante et les responsables du cours vous remercient à l'avance pour votre collaboration. Veuillez noter que l'évaluation est confidentielle.
Correspondance entre le cours et les buts et objectifs du programme de BAA
Degré d’atteintedans le cours1 d’évaluationMéthodeutilisée2
1. S’initier à la prise de
Amorce
décision
2. Communiquer En développement Exercices en équipe
3. Collaborer et
Intégration Exercices en équipe
travailler en équipe
4. Être ouvert sur le
Amorce
monde
5. Maîtriser les outils
Intégration Exercices
technologiques
6. Être ouvert au
Amorce
changement
7. Avoir un
Amorce
comportement éthique
1 L’amorce veut dire qu’un apprentissage commence à se manifester chez l’étudiant en lien avec les buts ou les objectifs du programme. En développement indique des acquis identifiables en relation avec l’apprentissage de ces mêmes buts et objectifs. L’intégration indique que l’apprentissage des buts et objectifs est compris et appliqué de manière pertinente à une variété de contextes ou de situations nouvelles. Un cours donné peut couvrir un ou plusieurs buts et objectifs de programme. Aussi, un cours peut amorcer l’apprentissage d’un but et intégrer l’apprentissage d’un autre, selon les habiletés et les compétences visées par le cours.
2 Nous faisons référence ici à la méthode d’évaluation utilisée dans le cours pour évaluer le degré d’atteinte du but du programme, par exemple : étude de cas, question ouverte à l’examen, projet, portfolio, quiz, etc. Ces mêmes méthodes d’évaluation pourraient être utilisées pour collecter des données pour l’Assurance of
Learning.
7. Logiciels du cours
Assembla
Assembla_Video_Tutorials Cloud ComputingCSS
Django
(web_framework)
Eclipse
Elluminate
Pour utiliser Elluminate, voici la marche à suivre:
1- Allez à:
2- Entrer votre IDUL/NIP afin d'accéder au calendrier
3- Sélectionnez la date et cliquez sur le lien qui y apparaîtra.
4- Vous devez accepter le téléchargement d'une application Java.5- Des haut-parleurs sont obligatoires et un micro est suggéré si vous désirez poser vos questions de vive voix. Pour en savoir plus sur Elluminate, je vous invite à consulter le site suivant: . Ce site vous indique quoi faire avant, pendant et après une séance. Cours
Forms
Google App Engine
,web-frameworks/google-appengine-avantages-et-inconvenients/ Google Datastore
HTML
Mercurial
Python
(programming_language) (langage)
Sur le site web officiel de Python vous trouverez dans la section « Download » des logiciels d'installation automatique pour les différentes versions de Python. Vous pouvez en confiance choisir la dernière version « de production ».
Par exemple, au 2009-12-29, il s'agit de la version 2.6.4 - Fichier à télécharger : . Copiez ce fichier dans un répertoire temporaire de votre machine et exécutez-le. Python s'installera par défaut dans un répertoire nommé « Python** » (** indiquant les deux premiers chiffres du n° de la version), et des icônes de lancement seront mises en place automatiquement.
Lorsque l'installation est terminée, vous pouvez effacer le contenu du répertoire temporaire.