DEV1 - Développement I

Appartient à l'UE Développement I

Personnes enseignantes

But de l’UE

Le but de cette unité d’enseignement est de faire découvrir aux étudiants et étudiantes quelques étapes de développement d’un logiciel : la compréhension du problème, la rédaction d’algorithmes, l’écriture de tests et la traduction dans un langage de programmation et la réalisation sur différents systèmes.

Cette unité d’enseignement conscientisera l’étudiant ou l’étudiante sur ce qu’est le métier de développeur ou développeuse d’application. Elle lui permettra d’acquérir les premiers réflexes de développement.

Objectifs généraux

À la fin du cours, l’étudiante ou l’étudiant sera en mesure de :

  • mettre en œuvre un processus de développement d’une application ;

  • analyser un problème, élaborer un algorithme cohérent solutionnant ledit problème et écrire une solution dans le langage de programmation Java ;

  • s’approprier différentes représentations d’un algorithme en vue de les implémenter dans le langage de programmation Java ;

  • reconnaitre et se servir de structures de données classiques ;

  • connaitre et utiliser les types et les structures de contrôle tant dans ses algorithmes que dans le premier langage de programmation ;

  • manipuler les environnements de travail Microsoft Windows et GNU/Linux pour un usage classique d’un utilisateur ou d’une utilisatrice avec un profil de développeur ou développeuse ;

  • se servir d’un IDE (Integrated Development Environment) tout aussi bien que d’un terminal et d’un éditeur de texte pour rédiger et exécuter ses programmes ;

  • utiliser un outil de gestion de version de code pour les tâches habituelles de développement ;

  • travailler sur une machine distante ;

  • gérer son calendrier en fonction des échéances, y compris lorsque les détails sont donnés oralement ;

  • être autonome dans sa recherche documentaire (API Java, pages de manuel…) ;

  • être autonome dans son apprentissage.

Dans son ensemble, la formation tend à développer des compétences comme : l’autonomie dans l’apprentissage en permettant à l’étudiant ou à l’étudiante d’avancer à son rythme dans les laboratoires et le *peer learning (l’apprentissage par les pairs) ainsi que le peer programming (la programmation par les pairs) voire le pair programming (la programmation en binôme)1.*

Objectifs spécifiques

Cours de développement

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • nommer les différents types de données, les illustrer en donnant des littéraux et les utiliser dans ses algorithmes et ses programmes par le biais des variables ;

  • utiliser les structures de données élémentaires ainsi que les tableaux ;

  • utiliser et manipuler les chaines de caractères et différencier, un entier, un caractère ou une chaine ;

  • nommer les principales structures de contrôle, notamment les structures alternatives et répétitives, et les utiliser à bon escient dans ses programmes ;

  • convertir un énoncé écrit en langage naturel en un algorithme écrit dans le langage de programmation du cours. Il ou elle sera capable de décrire quelles sont les données d’un problème en ce compris l’identification et la distinction entre les paramètres, les constantes et quels sont les résultats attendus. Il ou elle choisira les actions qui mènent à une solution ;

  • donner un ensemble de valeurs de test pertinentes pour un problème donné, qui permette une validation a posteriori de l’algorithme ou du programme ;

  • décomposer un problème complexe en sous-problèmes plus simples, et utiliser des fonctions/méthodes pour résoudre les sous-problèmes ;

  • reproduire et adapter des algorithmes classiques — principalement de parcours, de recherche et de tri — à des problèmes spécifiques ;

  • tracer un algorithme pour montrer son fonctionnement et illustrer graphiquement l’utilisation et la portée des variables à chaque étape de l’algorithme ;

  • expliquer l’environnement dans lequel s’inscrit l’activité de programmation : compilation, interprètation, déverminage, tests, …

Laboratoire d’environnement

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • analyser l’environnement dans lequel s’inscrit l’activité de programmation : compilation, interprètation, déverminage, analyse, déploiement…

  • implémenter — éditer, compiler, tester et exécuter — un programme Java tant en ligne de commande que dans un environnement graphique ;

  • utiliser un gestionnaire de versions — git — pour les tâches habituelles de développement — pour un développeur ou une développeuse travaillant seule — telles qu’enregistrer l’état de son travail et consulter l’historique. Il ou elle sera capable de se rappeler et choisir les commandes et paramètres éventuels adéquats de ce gestionnaire de version ;

  • se rappeler, choisir et utiliser les commandes GNU/Linux en ligne de commandes et Microsoft Windows utiles à l’utilisation de ces systèmes pour les tâches courantes d’un utilisateur ou d’une utilisatrice sans droits particuliers ;

  • utiliser un éditeur de code ;

  • se connecter en ssh à une machine distante.

  • comprendre le mécanisme des permissions GNU/Linux sur les fichiers et les répertoires. Citer et utiliser les commandes GNU/Linux permettant de changer ses permissions.

Laboratoire de langage Java

Au terme des séances, l’étudiante ou l’étudiant sera en mesure de :

  • utiliser un IDE (Integrated Development Environment) pour l’écriture des programmes et préciser les tâches effectuées silencieusement par l’IDE ;

  • mémoriser les raccourcis claviers les plus utilisés de son IDE et les utiliser ;

  • utiliser un gestionnaire de versions — git — pour les tâches habituelles de développement tant en ligne de commande avec bash sous GNU/Linux et Git Bash sous Microsoft Windows que dans son IDE ;

  • élargir sa connaissance du langage Java (API Java) par la consultation de la documentation du langage, comprendre cette documentation afin de l’utiliser dans ses programmes ;

  • appliquer les bonnes pratiques de développement dans ses programmes : modularité, lisibilité, documentation, réutilisabilité…

  • rédiger un plan de tests pour un problème donné et écrire les tests JUnit correspondant en langage Java ;

  • utiliser le mécanisme des exceptions du langage Java dans ses programmes ;

Modalités d’évaluations

L’unité d’enseignement (UE) DEV1 est constituée de trois parties liées :

  • DEV1-DEV Cours de développement
  • DEV1-JAVL Laboratoire de langage Java
  • DEV1-ENVL Laboratoire d’environnement de développement

L’UE est intégrée, c’est-à-dire que les 3 parties forment un tout indivisible. Néanmoins, pour des raisons pratiques, les différentes évaluations (interrogations et examens) peuvent être liées à l’une des trois parties (DEV, JAVL ou ENVL).

Évaluation continue

L’évaluation continue consiste en des interrogations à des dates déterminées. La note finale de l’évaluation continue est constituée selon une pondération reprise dans le tableau ci-dessous.

Toute absence doit être justifiée (p.ex. certificat médical) au plus tôt, et en tout cas avant le lendemain de la date de l’évaluation (voir point “10.4.6 Absence aux épreuves” du règlement des études.), tant auprès du secrétariat que de l’enseignant concerné. Toute absence non-justifiée entraîne une cote nulle pour l’interrogation en question. Une absence à la dernière interrogation d’une partie, justifiée ou non, entraîne une cote nulle pour l’interrogation en question.

Évaluation continue
DEV interro 1 – 9/60 sur papier, sans notes, 1h interro 2 – 9/60 sur papier, sans notes, 1h30
JAVL interro 1 – 10/60 machine, 30’ interro 2 – 10/60 machine, 1h interro 3 – 10/60 machine 1h30
ENVL interro 1 – 6/60 papier + machine, avec notes, 30’ interro 2 – 6/60 papier + machine, avec notes, 1h

Examens

L’examen final se compose d’évaluations pour les différentes parties. Les notes pour les différentes évaluations de l’examen sont pondérées (voir tableau) pour obtenir une moyenne globale.

Par exception, l’étudiant·e qui obtient une moyenne globale au moins égale à 12/20 pour l’évaluation continue est dispensé·e de l’examen final de janvier, et sa note pour cet examen est celle de son évaluation continue.

Examens
DEV 3/10 Partie théorique sur papier, environ 2h (sans notes)
JAVL 5/10 Partie pratique sur machine et papier, environ 3h (avec notes et accès à l’Internet)
ENVL 2/10 Partie pratique sur machine et papier, environ 1h (avec notes et accès à l’Internet)

Calcul de la moyenne, réussite, dispenses et autres reports

À l’issue des examens, les enseignant·es concerné·es se concertent afin d’attribuer la cote de l’UE. La cote étant calculée dans le contexte d’une évaluation intégrée, il n’est pas nécessaire d’atteindre le seuil de 10 / 20 dans chaque partie de l’évaluation. Une note globale est attribuée. L’évolution de l’étudiant·e au cours de l’unité d’enseignement peut entrer en ligne de compte dans cette évaluation. L’étudiant·e qui obtient une cote d’au moins 10 / 20 acquiert les crédits de l’UE. L’étudiant·e qui obtient une cote strictement inférieure à 10 / 20 n’obtient pas le crédit pour l’UE. Dans ce cas, il ou elle devra représenter toutes les parties : il n’y a pas de dispense ni de report de notes des différentes parties.

Estimation de la charge de travail

Cette UE est une unité de 10 crédits, soit une charge de travail estimée à 300h.

Voici une estimation de la répartition de la charge de travail entre les différentes parties de l’UE :

Nombre d’heures de cours ou de labos Nombre d’heures de travail à domicile (estimation) Total du nombre d’heures
DEV602484
JAVL3684120
ENVL181836
  1. La programmation en binôme (pair programming) est un terme usuel dans les environnements agiles. C’est la pratique qui consiste pour deux développeurs ou développeuses de partager une même station de travail. La programmation par les pairs (peer programming) est, quant-à elle la pratique où plusieurs développeurs et développeuses apprennent les unes des autres… pendant les laboratoires et non pendant les évaluations.