Aux nouvelles
Permamence TP2
Une permanence aura lieu le jeudi 5 janvier de 10h à 13h et de 14h à 16h au local 3174.
Notes finales à ce cours
L'ensemble des notes au cours IFT1015 sont maintenant disponibles
sur la page des notes. Pour des demandes concernant les TPs ou les
démonstrations, envoyez un message
à dift1015@iro.umontreal.ca. Prenez
note que les démonstrateurs répondront probablement à vos reqêtes à la
rentrée (5 janvier 2012). Aussi, une permamence pour venir voir vos
copies aura lieu le lundi 9 janvier de 10h à 12h.
Notes de Demo 9
Les notes de Demo 9 sont disponibles.
Notes de TP1
L'échéance pour la remise du TP2 a été repoussée au lundi 19 décembre à 23h30. Il vous appartient de vérifier que la remise est correctement effectuée (suivre les instructions décrites à même le sujet). Un bonus sera donné aux personnes dont la dernière remise est antérieure à samedi matin.
Notes de TP1
Les notes de TP1 sont disponibles.5 points ont été attribués aux
tests des modes AFFICHE, TRACE
et EXECUTION, 4 points ont été donnés pour le bon
fonctionnement du mode SIMPLIFIE. Le reste des points ont
été donnés sur votre code. Un bonus d'un point a été donné aux
personnes ayant remis un fichier readme informatif. Pour
toute question concernant votre TP, merci de contacter Maria.
À propos du final et varia
Voici l'examen final de la session passée de manière à vous pratiquer. La classe était l'an dernier un peu plus avancée que nous l'étions, aussi ce final est d'un niveau légèrement plus élevé que celui que vous aurez à composer. Je vous rappelle également que ce jeudi, les démontrations seront utilisées pour terminer le cours (comme la semaine dernière). Aussi, vos notes de demo7 et demo8 sont disponibles.
Codes de la Demo10 et de la Demo9
Les ressources suivantes seront utilisés en démonstration cet après-midi: [no1_1.java] [no1_23.java] [no2_1.java] [no2_2.java] [texte.txt] [tab2d.txt]. Un partie d'entre-vous avez eu accès à un corrigé proposé par Maria du premier exercice sur les objets de la demo 9 (location de films). La voici: [Demo.java]
Changements à l'horaire
Les créneaux horaires des séances de démonstration (jeudi) seront utilisés pour avancer dans le cours. Nous avons donc cours demain 3h. Les salles ne changent pas. La planche de démo 10 (la dernière) est disponible sur le site web et sera présentée mardi (pendant les heures habituelles de disponibilité. Le cours de mardi 6 décembre sera remplacé par une séance de révision (encadrée par vos démontrateurs).
TP2
Le sujet du TP2 est disponible. N'attendez pas le dernier moment pour le faire, et encore moins pouyr y réfléchir. Nous ne répondrons à aucune question de compréhension du sujet dans la dernière semaine de la remise. C'est écrit dans le sujet mais: la seule structure de donnée autorisée dans ce TP est le tableau. Bon courage.
Pour demain
En raison de la levée de cours de demain, nous avons décidé d'annuler les 2 séances de démonstations (l'une étant l'après-midi pendant la manifestation prévue). Une planche d'exercice sera cependant disponible d'ici demain dans laquelle un exercice sera à remettre (le dimanche 20 novembre). Les séances de mardi après-midi (14h30 à 16h30) seront dédiées à cette planche d'exercices. Comme indiqué en cours mardi dernier, je me présenterai en cours jeudi après-midi mais n'avancerai pas dans la matière. Je serai donc là pour répondre à d'éventuelles questions.
Permamence Intra
Venez voir vos copies mercredi 16 novembre 2011 entre 15h et 18h au 2233 du pav. A.A. Essayez de ne pas venir tous en même temps, mon bureau est petit. Prenez note également que vos notes de demo5 sont sur le Web.
Remise du TP
Vous êtes plusieurs à m'envoyer votre TP par mail, ce qui n'est pas accepté. Remettez par la commande remise tel qu'indiqué.
Notes à l'intra
Vos notes à l'intra sont disponibles sur la page du cours. La moyenne est de 15.5 (sur 25), la note maximale est de 25, la note minimale de 3.2.
Reprise Intra
Cette capsule s'adresse aux personnes qui n'étaient pas présentes à l'Intra et qui ont présenté un certificat médical. Un examen de reprise aura lieu jeudi 10 novembre 2011 de 9h30 à 11h30, salle 2211 pav. A. Aisenstadt. Je vous rappelle que conformément au réglement de l'université, il n'y a pas de reprise de reprise. Donc une absence à cet examen équivaut à une note de 0 à l'intra (en cas de conflit horaire, il convient donc de donenr priorité à l'examen). À fortiori, les absents de l'intra qui n'ont pas présenté de certificat médical ont obtenu la note de 0 à l'intra. Comme à l'intra, tout document est autorisé. La matière porte sur tout ce qui a été vu jusqu'à la démonstration de ce jeudi.
TP1
Vous êtes plusieurs à avoir noté (bravo et merci) la différence de
sémantique entre l'instruction JUMP et
l'instruction JMPZ. J'ai changé les programmes pox en
conséquence dans le sujet (ainsi que les traces attenantes) et précisé
la sémantique de ces opérateurs de manière plus claire. Merci de votre
attention.
Demo7
Une note (en rouge) a été déposée dans le sujet de la démo 7
concernant les consignes try/catch de l'exercice
noté. Désolé pour la confusion. Il y a plusieurs raisons pour
lesquelles je ne vous autorise pas le try/catch lors de la
conversion d'un string en entier, l'une est que nous ne l'avons pas vu
en cours ! L'autre est que je préfère que vous traitiez vous-même les
problèmes qui pourraient nécessiter l'utilisation d'une telle
construction.
Demo7/TP1
La démonstration de demain est disponible. Un exercice noté (à remettre après la relâche) vous y attend. L'objet de la démo 7 est de vous familiariser avec la lecture de fichier dont vous avez besoin dans le TP1.
Intra
Je vous rappelle la tenue de l'intra mardi prochain à 8h30 en salle P310 PV ROGER-GAUDRY. La matière à l'examen est celle qui est couverte depuis le début du cours jusqu'à la matière couverte par la démonstration d'aujourd'hui. (Il se peut que je vous demande d'écrire une méthode, mais sans porter attention aux problèmes de syntaxe que nous sommes en train de voir). Je vous rappelle que les documents (livres, notes de cours, etc. sont autorisées, mais pas les ordinateurs, téléphones mobiles, tablettes, etc.
Demo 4
Les notes de démo 4 sont disponibles à la rubrique notes de la page.
TP1 !!!
Le sujet du TP1 est disponible à la rubrique travaux. Prenez le temps de le lire afin de comprendre ce qui vous est demandé. Cela vous permettra de poser des questions pertinentes mardi prochain, jour où le TP vous sera présenté (en séance TP). Prenez note que le sujet pourra subir quelques modifications d'ici mardi prochain afin de tenir compte de remarques des démonstrateurs ou les vôtres.
Intra !!!
Je vous rappelle que l'examen intra arrive à grands pas. Voici pour pratiquer le sujet donnée à la session passée: [intra-IFT1015-H11.pdf]. Nous n'avons pas encore vu les méthodes (semaine prochaine), donc pour le moment, l'exercice 6 vous paraîtra peut-être obscur.
Notes de démo 3
Vos notes de demo3 sont disponibles à la rubrique notes de la page. Si votre note n'apparaît pas mais que vous pensez avoir remis, il est urgent que vous premiez contact avec un démonstrateur. La page des notes vous indique comment obtenir votre code à nouveau (votre code vous a été envoyé il y plus d'une semaine à votre adresse courriel départementale).
Notes de démo 2
Un code a été envoyé à votre adresse courriel du DIRO qui vous permettra de consulter vos notes. Les notes (qui ne comptent pas) de l'exercice à remettre de la planche de démo2 sont disponibles ici. Vous avez été 95 à remettre quelquechose. Vous êtes 69 à avoir la note parfaite (1), 5 à avoir la note de 0.75, et 19 à avoir 0 (lire la suite), reste 2 personnes que je n'ai pas réussi à identifier (qui ne sont pas dans ma liste des étudiants du cours).
Note: une capsule vous indiquera très prochainement comment obtenir votre code si vous n'avez pas reçu le courriel que je vous ai envoyé.
Quelques conseils:
- Respectez scrupuleusement le nom de fichier qui vous a été demandé (
MonProfil.javaetMonprofil.javane sont pas les mêmes noms de fichier). - Vous êtes plusieurs à ne pas avoir réussi à remettre quelque chose par la commande remise, assurez vous auprès de vos démonstrateurs que vous faites les choses correctement
- Je n'accepterai aucun code par mail: un mail peut se perdre, n'a aucun caractère officiel et cela m'obligerait à faire moi-même à votre place la remise
- Lisez bien le sujet:
- Il vous était demandé de fournir chaque information sur une ligne
- Il vous était demandé d'indiquer
aucunsi vous n'avez jamais programmmé avant de suivre ce cours (aucunne veut pas dire ne rien mettre)
- Ne prenez pas d'initiative: ne remettez jamais une applet (même si l'effort est louable) et n'introduisez pas d'entrées au clavier si cela n'est pas demandé.
À partir de maintenant, seules les séances TP2 et TP3 du mardi seront encadrées par un démonstrateur. La séance de TP1 reste donc une séance pendant laquelle vous pouvez pratiquer sur les machines du DIRO.
À propos des séances TP de mardi (demain)
Mariangel continuera pendant les périodes TP1 (13h30 -- 14h30) et TP2 (14h30--15h30) la démonstration de jeudi dernier. De préférence, le groupe Lab1 devrait venir à la séance TP1 et le groupe Lab2 à la séance TP2. Au programme: branchement au DIRO depuis l'extérieur, installation de Java, etc.
!!! Changement de salle !!!
C'est maintenant officiel, nous changeons de salle le mardi. Le cours du mardi (à commencer de mardi 13 septembre) aura donc lieu en G-615 (pavillon Roger-Gaudry). C'est au 6è étage, dans le labyrinthe que consitute l'aile de médecine, aussi, prévoyez un peu de temps pour vous y rendre!
TP versus Lab
Votre premier lab (démo) aura lieu ce jeudi. Un lab est une séance animée par un démonstrateur pendant laquelle vous manipulerez du code dans l'environnement du DIRO. Votre première séance de TP aura lieu mardi prochain. Un démonstrateur assumera une permanence dans ces séances afin de répondre à vos questions (si vous en avez).
Premier cours et première démonstration
Bienvenue sur la page du cours IFT1015. Le premier cours aura lieu jeudi 1er septembre 2011 en salle 1360 du pavillon André-Aisenstadt à 15h30. La première démonstration (lab) aura lieu le même jour en salle 1340 du pav. André-Aisenstadt de 10h30 à 12h30 (lab 1) pour les personnes dont les 3 premières lettres du nom de famille sont dans l'ordre alphabétique entre AAA et LES (de Adje à Lessard) et de 16h30 à 18h30 (lab 2) pour les autres (de Li à Zummer). Cette démonstration fait partie des séminaires Unix donnés au DIRO afin de vous aider à appréhender l'environnement du DIRO. Cette démonstration sera donnée par Sébastien Roy, professeur au DIRO.
Mise en garde: Aux personnes n'ayant encore jamais programmé (la cible de ce cours): nous allons rencontrer beaucoup de concepts spécifiques à Java qui ne sont pas forcément faciles à maîtriser. Les exercices vous aideront à les maîtriser. Vous allez également devoir maîtriser un système d'exploitation Linux.
Surtout ne vous découragez pas et posez des questions en cours, en démonstration et pendant les permamences !
Cours après cours
Cette page vous indique ce que je prévois de faire pour chaque cours et vous donne accès aux ressources utilisées en cours (programmes, acétates, etc.). À la fin de chaque cours, cette page sera modifiée de manière à refléter ce que nous avons réellement vu ensemble.
jeudi 01/12/2011
[algo2] (3 heures)
Un cours de 2h sera donné le matin (salle de démo), puis répété
l'après-midi (salle de démo). Le cours habituel d'une heure à 15h30
est maintenu.
- Récursivité (suite et fin)
- La récursivité par l'exemple [Recurse.java] (suite):
- Notion de récursion terminale et nouvelles versions récursives et
efficaces de
fact,fibonacci - Palindromes
- Recherche dichotomique
- Notion de récursion terminale et nouvelles versions récursives et
efficaces de
- Deux problèmes d'intérêt:
- Tri rapide: [QuickSort.java]
- Le cavalier d'Euler: [Cavalier.java]
- La récursivité par l'exemple [Recurse.java] (suite):
mardi 29/11/2011
[algo2] (2 heures)
- Récursivité
- Le cas de factoriel: [CompareFact.java]
- La récursivité par l'exemple [Recurse.java]
- Affichage d'une chaîne sans boucle
- Nombres de Fibonnaci récursif ou itératif (discussion)
jeudi 24/11/2011
[algo1] (3 heures)
Un cours de 2h sera donné le matin (salle de démo), puis répété
l'après-midi (salle de démo). Le cours habituel d'une heure à 15h30
est maintenu.
- Algorithmique (suite):
- Rechercher un élément dans un tableau trié (une bonne partie du TP2): [BinarySearch.java]
- Tri d'un tableau (tri à bulle, tri par insertion, tri par sélection): [TestSort.java]
- Merge de deux tableaux triés en un seul: [Merge.java]
mardi 22/11/2011 [algo1] (2 heures)
- Tableaux à plusieurs dimensions (suite et fin): [FinalH2000.java]
- Algorithmique (enfin !):
- Rechercher un élément dans un tableau trié (une bonne partie du TP2): [BinarySearch.java]
- Ajouter un élément dans un tableau trié
- Vérifier qu'un tableau est trié
- Tri d'un tableau (tri à bulle, tri par insertion, tri par sélection): [TestSort.java]
- Merge de deux tableaux triés en un seul: [Merge.java]
jeudi 17/11/2011 [oop2] (1 heure)
- Questions ouvertes sur les objets
- Tableaux à plusieurs dimensions: [FinalH2000.java]
mardi 15/11/2011 [oop2] (2 heures)
- La référence
this(suite) - Étude d'une classe plus complète: [Rational.java] et de son utilisation: [RationalTest.java]
mardi 08/11/2011 [oop1] [oop2] (2 heures)
- Modificateurs d'accès (public, private); notion d'encapsulation et de couplage
- La référence
this - Étude d'une classe plus complète: [Rational.java] et [RationalTest.java]
- Quelques mots sur javadoc. Voici la javadoc de la classe Rational.
jeudi 03/11/2011 [oop1] [oop2] (1 heure)
- Les objets (suite)
- variables d'instance versus variables de classe: [Piece2.java] [TestPiece2b.java] [Piece3.java] [TestPiece3.java]
mardi 01/11/2011 [oop1] [oop2] (2 heures)
- Fonction retournant un objet
- Les objets
- notion d'état et de comportement, dissection d'une classe: variables d'instances, constructeur(s), assesseurs, mutateurs,
toString: [Piece.java] [TestPiece.java] - les variables d'instance sont initialisées (pas les variables locales)
- variables d'instance versus variables de classe: [Piece2.java] [TestPiece2.java]
- notion d'état et de comportement, dissection d'une classe: variables d'instances, constructeur(s), assesseurs, mutateurs,
jeudi 20/10/2011 [fonctions1] [fonctions2] (1 heure)
- Les méthodes (suite)
- Notion d'environnement, modèle de mémoire plus précis (pile et tas)
- En Java, le passage de paramètre se fait par valeur
- passage de types primitifs
- passage de types référence (objets)
- Surcharge d'une méthode: [Surdefinition.java]
jeudi 13/10/2011 [fonctions1] [fonctions2] (1 heure)
- Les méthodes (suite)
- Études de cas:
- Apprendre à découper un problème en unité testables facilement: [CompareGenerateur1.java] [CompareGenerateur2.java] [CompareGenerateur3.java] [CompareGenerateur4.java] [CompareGenerateur5.java] [CompareGenerateur.java] [CompareGenerateur6.java]
- Notion d'environnement, modèle de mémoire plus précis (pile et tas)
- En Java, le passage de paramètre se fait par valeur
- passage de types primitifs
- passage de types référence (objets)
- Surcharge d'une méthode: [Surdefinition.java]
- Exemple de méthode retournant une référence
- Études de cas:
mardi 11/10/2011 [fonctions1] [fonctions2] (2 heures)
- Les méthodes
- Définition d'une méthode, terminologie (entête, signature, corps, paramètres formels, procédure, fonction)
- Études de cas:
- Notre premier programme un peu sérieux (nous verrons les
Enumplus tard): [CompareInverse.java] [CompareInverse2.java]
- Notre premier programme un peu sérieux (nous verrons les
jeudi 06/10/2011 [tableaux] (1 heure)
- Initialisateurs de tableaux
- Tester un générateur aléatoire: [TestAlea.java], [TestAlea2.java]
- Algorithmes typiques sur les tableaux: max, argmax, mélange, décalage
- Comment faire si je ne connais pas la taille d'un tableau au moment de la création ?
mardi 04/10/2011 [boucles] [boucles2] [tableaux] (2 heures)
- Les boucles (suite)
- Études de cas:
[Inverse.java] [Inverse2.java]
- Études de cas:
- Les boucles imbriquées:
- Tables de multiplications: [TableMul.java]
- Tout sur le X: [DessineMoiUnX.java]
- Récréation:
- entrées / sorties en Unix
- tracer proprement un programme: [Assertion.java]
- Introduction aux tableaux à une dimension
- déclaration, création
jeudi 29/09/2011 [boucles] (1 heure)
- Les boucles (suite)
- Boucle
for - Pièges classiques avec les boucles: [InfiniteLoop.java] [FloatingLoop.java]
- Études de cas:
[BuyMore.java]
- Boucle
mardi 27/09/2011 [conditions] [conditions2] [boucles] (2 heures)
- Instructions conditionnelles
- Gloire au compilateur Java: Instruction conditionnelle et initialisation: [Tordu2.java]
- Opérateur conditionnel ternaire
? : - Expression conditionnelle: [NewMember.java]
- Comparaison de 2
String, de 2char
- Les boucles
- Boucle contrôlée par un compteur, par un événement: [GuessNumber.java] [GuessNumber2.java]
- Boucle gérée par une sentinelle: [SentinelleSum.java] [SentinelleSum2.java] [SentinelleProd.java]
jeudi 22/09/2011 [conditions] (1 heure)
- Instructions conditionnelles
- Règle d'indentation concernant les imbrications multiples [NoteToGrade.java]
- Expression booléenne complexe: [AnneeBissextile.java]
mardi 20/09/2011 [conditions] (2 heures)
- Règles de bonne écriture d'un programme
- Instructions conditionnelles
- Instructions
ifetif ... else - Le type primitif
boolean: [AdditionQuiz.java] - Partout où une instruction est possible, un bloc d'instruction l'est aussi
- Instructions conditionnelles imbriquées: [MaxOfTrois.java]
- Règle d'indentation concernant les imbrications multiples [NoteToGrade.java]
- Instructions
jeudi 15/09/2011 [expressions] [conditions] (1 heure)
- Les conversions / opérateurs raccourcis (suite et fin)
- les opérateurs de pré- et post-incrément (
++et--) - un programme tordu: [Tordu1.java]
- les opérateurs de pré- et post-incrément (
- Le type primitif
char - La table ASCII
- Première rencontre avec le type (non primitf)
String
mardi 13/09/2011 [expressions] (2 heures)
- Les opérateurs arithmétiques
- Le cas de la division
- Le cas des opérateurs
+ - Opérateur modulo (%) [CalculTime.java]
- Table de priorité
- Associativité des opérateurs
- Les conversions / opérateurs raccourcis
- implicites et explicites
- à propos des littéraux numériques (convention)
- les opérateurs raccourcis (
+=,*=, etc.) - les opérateurs de pré- et post-incrément (
++et--)
jeudi 08/09/2011 [expressions] (1 heure)
- Éléments du programme [CalculAire.java]
- Rencontre de l'API API Java
- Variables, expressions et affectations
- À propos des identificateurs (conventions de nommage, règles)
- Liste des mots réservés
- Que dit la BNF?
- Déclaration versus initialisation d'une variable
- Les types primitifs
- Attention aux erreurs d'approximation avec les nombres flottants
- À propos des identificateurs (conventions de nommage, règles)
mardi 06/09/2011 [intro] (2 heures)
- Présentation de la page de cours (suite et fin):
- matière abordée
- à propos des notes de cours
- Introduction:
- Vue générale d'un ordinateur
- De l'Eniac à l'ipad
- Architecture de Von Neumann
- Simulation d'une machine hypothétique [assemblage.pdf]
- Quelques mots sur le language Java
- Quels autres languages ?
- Une hiérarchie très incomplète (mais suffisante)
- Les languages en demande: [art1] [2002]
- Java versus Lisp
- Notion de language de bas et de haut niveau:
binaire hex 10001011 8B \ 01000101 45 | lire 1er entier dans reg. AX 00001010 0A / 00000011 03 \ 01000101 45 | lire 2em entier et ajouter a AX 00010100 14 /
- Quels autres languages ?
- Quelques points sur l'histoire de Java
- Compilation, Interprétation, le cas de Java
- Notre premier programme Java: [Hello.java]
- Vue générale d'un ordinateur
- Variables et expressions
- Notre premier algorithme: calcul de la circonférence d'un cercle.
- Variable = emplacement mémoire qui (en Java) doit être déclaré
- Entrée au clavier
- Un programme possible: [CalculCirconference.java]
- Notre premier algorithme: calcul de la circonférence d'un cercle.
jeudi 01/09/2011 [intro] (1 heure)
- Présentation de la page de cours:
- Livres
- Modalités de notation
- Conseils d'usage