Université du Québec en Outaouais Département d'informatique et d'ingénierie
Sigle : INF1563  Gr. 01
Titre : Programmation I
Session : Automne 2006  Horaire et local
Professeur : Handouyahia, Mohamed
1. Description du cours paraissant à l'annuaire :

Objectifs

Permettre à l'étudiant de s'initier à l'application des techniques de programmation dans la résolution de problèmes et le développement d'algorithmes. L'introduire au paradigme orienté objet.

Contenu

Introduction à la résolution de problèmes : formulation du problème, conception des solutions, codage des programmes en Java. Principes de langages de programmation : variables, constantes, expressions, instructions, syntaxe, sémantique, types de données, structures de contrôle. Concepts orientés objet : encapsulation de données, classes, objets, méthodes, messages, héritage. Conteneurs simples de données.
2. Objectifs spécifiques du cours :

L'objectif général de l'activité est d'initier l'étudiant aux concepts et techniques inhérents à la programmation d'application.

Comme objectifs spécifiques, nous verrons à ce que l'étudiant soit adéquatement initié aux diverses technologies et outils entourant la conception, la programmation, et le déploiement de petites applications faisant usage des techniques de programmation couvertes en classe.

Les étudiants devront en effet, via les outils mis à leur disposition, effectuer les tâches généralement dévolues à un programmeur junior en entreprise.

Ces objectifs spécifiques seront atteints si l'on réussit à :

  • Initier l'étudiant à l'application des techniques de programmation dans la résolution de problème.
  • Initier l'étudiant au développement d'algorithmes indépendants des langages de programmation.
  • Développer l'habilité de l'étudiant à mettre en pratique des techniques de conception, de mise au point et de documentation.
  • Développer l'habilité de l'étudiant à concevoir, programmer, faire des essais, documenter et livrer des petites applications fonctionnelles.

3. Stratégies pédagogiques :
Les formules pédagogiques suivantes seront utilisées :
  • L'enseignement est dispensé sous forme magistrale (3h/semaine). Des exercices seront donnés durant ces séances pour illustrer les notions nouvellement introduites.
  • Les concepts cités dans le plan de cours seront traités avec un approche de formulation et de résolution de problèmes.
  • Les étudiants ayant un portable sont fortement encouragés à l'utiliser pendant le cours.
  • Des séances de travaux dirigés (2h/semaine) viendront appuyer les séances de cours. Ces séances se font en présence d'un assistant. La présence des étudiants à ces laboratoires est fortement recommandée. Les séances de travaux dirigés préparent les étudiants à la partie pratique de l'examen.
  • Il y aura cinq devoirs.
  • Un examen de mi-session et un examen final.
  • Une page WebCT sera consacrée au cours.
4. Heures de disponibilité ou modalités pour rendez-vous :
  • Andy Mohamed Handouyahia.
  • Téléphone Bureau (Statistique Canada) : 613 951 0306
  • Heures de consultations sur RDV.
  • Courriel : mohamed.handouyahia@uqo.ca
  • Courriel : andyoui2004@hotmail.com
5. Plan détaillé du cours sur 15 semaines :
Semaine Thèmes Dates
1    Introduction aux langages de programmation et à la résolution des problèmes
  • Introduction aux algorithmes – lecture, affichage, sélection, boucles
  • Pseudo-code et construction des algorithmes
  • De l’algorithme au programme – Édition, compilation, exécution
  • Environnement Java et structure d'un programme Java
  • Les langages de programmation
  • Les différentes étapes de développement d'un logiciel
05 sept. 2006 
2    Résolution de problèmes et conception des algorithmes, boîte noire
  • Comprendre le problème
  • Identifier les sorties
  • Identifier les entrées
  • Décrire le contexte d’utilisation
  • Construire l’algorithme
  • Valider et améliorer l’algorithme
  • Exercices : Exemple de résolution de problèmes
12 sept. 2006 
3    Notion de bases
  • Constantes
  • Variables
  • Types de données simples
  • Déclaration dans les algorithmes
  • Notion d’instructions
  • Instruction d’affectation
  • Expressions arithmétiques
  • Exercices : Formulation d’un problème et sa résolution
19 sept. 2006 
4    Structures de contrôle
  • Structure séquentielle
  • Structure conditionnelle simple et opérateurs relationnels
  • Structures conditionnelles imbriquées
  • Applications des structures imbriquées au problème du prix du repas
  • Structure conditionnelle multiple
  • Conditions composées et opérateurs logiques
  • Choix QUAND et conditions composées
  • Exercices : Formulation de problèmes et leurs résolutions
26 sept. 2006 
5    Les structures de contrôle itératives
  • Étapes pour l’écriture d’une boucle
  • Les répétitions: while, do while, for
  • Structures imbriquées
  • Initialisation significative des variables
  • Comment choisir une boucle
  • Exercices : Formulation de problèmes et leurs résolutions
03 oct. 2006 
6    Semaine d'études 10 oct. 2006 
7    Examen de mi-session 17 oct. 2006 
8    Initiation à la programmation orientée objet - Introduction aux méthodes
  • Utilisation de méthodes prédéfinies
  • Conception de méthodes
  • Visibilité
  • Exercices : Formulation de problèmes et leurs résolutions
24 oct. 2006 
9    Introduction aux classes et objets
  • Concepts : classe, objet, instance
  • Classe prédéfinie String
  • Application d’une méthode à un objet
  • Conception d’une classe simple avec des méthodes et ses variables
  • Constructeurs
  • Exercices : Formulation de problèmes et leurs résolutions
31 oct. 2006 
10    Tableaux
  • Déclaration d’un tableau
  • Manipulation d’un tableau
  • Trier un ensemble de données
  • Tableau à plus d’une dimension
  • Accéder aux éléments d’un tableau
  • Exercices
07 nov. 2006 
11   

La notion d’héritage et de polymorphisme

La programmation dynamique

  • Les listes, les dictionnaires
  • La notion de flux
  • Exercices : formulation de problèmes et leurs résolutions

14 nov. 2006 
12    L’archivage des données
  • Les fichiers texte
  • Les fichiers d’objets
  • Gérer les exceptions
21 nov. 2006 
13    Notions de programmation objet avancées et compléments
  • Exercices : Formulation de problèmes et leurs résolutions
28 nov. 2006 
14    Révision par des exemples 05 déc. 2006 
15    Examen final 12 déc. 2006 
6. Évaluation du cours :

Examen final : 50 %

  • À livres fermés.
  • Il influence beaucoup la note finale.

Examen de mi-session : 30 %

  • À livres fermés.
  • But principal : évaluer votre progrès.

Devoirs : 20 %

  • Buts : développement de compétences pratiques et préparation pour l'examen final.
  • Devoirs presque à chaque deux semaines.
  • Distribués électroniquement sur la page Web du cours. À vous de vérifier!
  • Chaque devoir compte.
  • Tous requièrent l'utilisation d'un ordinateur. Les programmes que vous remettrez devront être compilables et exécutables dans l'environnement Java du laboratoire (JDK 1.5/5.0).
  • À remettre via WebCT ou par le chargé d’exercices.
  • Aucun retard ne sera toléré! Une note de 0 sera attribuée pour chaque devoir en retard.
  • Les devoirs peuvent être faits en équipe de deux étudiants. Copier un devoir (ou une partie) constitue un plagiat, qui est une forme de fraude académique sérieuse, et ne sera pas toléré.

Barème d'évaluation

  • Examen final : 50 %, Examen partiel : 30 %, Devoirs : 20 % .
  • Notez bien : la moyenne pondérée des examens doit être supérieure ou égale à 50% pour que les devoirs comptent!

7. Politiques départementales et institutionnelles :
8. Principales références :
  • Non-obligatoire mais recommandé aux étudiants n'ayant pas ou peu d'expérience de programmation: "Le livre de Java premier langage" , 3e édition, Anne Tasso, Éditions Eyrolles, juillet 2005.
  • "Programmer en Java", Delanoy, C. 4e édition (Java 5.0), Eyrolles, 2006.
  • "Java Programming : From Problem Analysis to Program Design", D.S. Malik and P.S. Nair.
  • "A First Book of Java", Gary J. Bronson, Thompson - Brooks/Scole .
  • "On To Java", P. H. Winston et S. Narasimhan, 3rd Edition (version en ligne).
  • "An Introduction to Computer Science Using Java", S. N. Kamin, M. D. Mickunas, et E. M. Reingold.
  • "Conception objet en Java BleuJ", BARNES, D.J., KÖLLING M. Pearson Education, 2003.
9. Page Web du cours :