🚨L'élève doit déjà comprendre la base de la programmation et son application dans un langage textuel pour prendre ce cours. La base inclut les concepts suivants : mémoire, variables, types, opérateurs, fonctions, conditions et boucles.
Ce cours permet à l'élève d'approfondir ses connaissances de la programmation et de les appliquer à résoudre des problèmes classiques en informatique ainsi que des problèmes de son choix. Elle apprend aussi comment partager efficacement un projet de développement logiciel avec une équipe. Le cours est une bonne base pour toute personne qui souhaite devenir développeur ou continuer ses études en génie informatique.
Nous commençons par une unité de traduction de vos connaissances de base à la syntaxe du langage Java. Nous étudions par la suite des notions importantes en programmation :
le stockage de l'information en mémoire
les structures de données liées aux divers types définis dans le langage
la programmation orienté objet
l'efficacité des algorithmes
l'utilisation de frameworks
la gestion d'un projet informatique
la collaboration efficace
Environnement de travail
Mémoire vive : stack et heap
Syntaxe Java
Repérer les erreurs
Concepts de base en programmation
Programmation orienté objet
Structures de données
Algorithmes
Utiliser un framework (JavaFX)
Modèle de projet (dossiers)
Compilation ("build")
Planification et design
Créer des tests
Composition d'une équipe
Collaboration en temps réel
Outiller l'élève avec une connaissance générale et une confiance de comment développer un programme informatique. Ces outils peuvent servir à ceux qui veulent poursuivre des cours en informatique après l'école secondaire ou qui veulent simplement faire du développement de façon autonome à des fins personnels.
Nous utiliserons les logiciels suivants :
Visual Studio Code (éditeur de code exclusif jusqu'à l'introduction de JavaFX)
Éclipse (IDE pour les projets JavaFX)
Maven (via Eclipse... sans installation additionnelle)
Git (via Eclipse... sans installation additionnelle)
Nous utiliserons les références de langue suivantes :
Java 14 (openJDK)
JavaFX 11 (openJFX)
Les évaluations sommatives seront basés sur des programmes soumis par les élèves et, selon le cas, incluant des documents liés à la planification et du design du programme. L'élève devra expliquer la logique et la structure de son travail et sera invité à le faire de divers moyens (commentaires dans le code, documents d'analyse, entrevues, etc.).
Pour les évaluations en cours d'apprentissage, l'élève sera invité à analyser divers extraits de code pour, par exemple : déterminer ce qui se trouve en mémoire vive à un moment donné, où le programme plantera et pourquoi ou c'est quoi le résultat ultime d'un algorithme.
La pondération des compétences dans le cours est la suivante :
CC = 25% > utilisation des techniques
HP = 30% > logique et créativité
CO = 15% > clarté du code pour le développeur et du programme pour l'utilisateur
MA = 30% > performance sans erreurs, respectant les spécifications
Essentielles :
PythonTutor (visualisation de la mémoire vive lors de l'exécution du programme)
Codingbat.org (problèmes d'algorithmes)
Complémentaires :
Débuter la programmation avec Java (mini cours en ligne)
Apprendre le Java (tutoriels Youtube)
Pour la séquence finale du cours :
Installation d'Eclipse avec tutos sur Maven et Git (cours en ligne)
JavaFX for Beginners (tutoriels Youtube)
Le cours est enseigné, après avoir couvert les connaissances essentielles, avec une spirale du génie informatique et de la gestion de projets. À mesure que les projets deviennent plus complexes, de nouveaux outils et techniques de gestion sont introduites. Certains sont nécessaires dès le début, d'autres seront vus juste dans les dernières semaines du cours.
Il y a 44 périodes dans le quadrimestre. Voici le plan, en grandes lignes, pour ces leçons. Les leçons précédés par un astérisque (*) indiquent qu'une évaluation sommative est prévue à ce stade du cours, après la leçon.
Ce plan peut changer en cours de route selon les besoins de la classe.
0
Diagnostic des connaissances et du raisonnement actuel (1 période)
A- Environnement de travail (cmd/Terminal/bash, VS Code) (2 périodes)
C- Modèle de projet (structure des dossiers) et Compilation simple (javac / java) (1 période)
*A- La syntaxe Java (structure d'un fichier texte .java, intrants et sortie au console) (1 période)
A- Stack et Heap (avec Python Tutor) (1 période)
A- Repérer les erreurs (1 période)
A- Revue des concepts de base (variables, types, opérateurs, conditions, fonctions, boucles) (3 périodes)
10
*C- Planification et design (diagramme de séquence UML) (1 période)
B- Programmation orienté objet (OO) (les objets versus les types natifs) (1 période)
B- Structures de données (tableaux, String, HashMap<K, V>, LinkedList<T>) (3 périodes)
*B- Un algorithme de tri des données (1 période)
B- OO > Les classes et les objets (new, static) (1 période)
C- Compilation ("build") (fichiers .bat ou .sh pour les projets multi-fichiers) (1 période)
C- Créer des tests (1 période)
C- Planification et design (diagramme de classe UML) (1 période)
20
B- OO > Encapsulation (public, private, protected, package-protected) (1 période)
B- OO > L'héritage et le polymorphisme (extends) (1 période)
*B- OO > Les interfaces et le Strategy Pattern (implements) (2 périodes)
B- Le framework JavaFX pour les interfaces graphiques (1 période)
A- Environnement de travail > Eclipse (1 période)
C- Compilation ("build") (Maven pour gérer les dépendances) (1 période)
C- Planification et design (document object model, DOM) (1 période)
*B- JavaFX > FXML et SceneBuilder (2 périodes)
30
B- JavaFX > css (1 période)
C- Collaboration en temps réel (Git et GitHub) (1 période)
C- Composition d'une équipe (1 période)
*Projet d'équipe (jusqu'à la fin du cours)
...les sections de ce site pour le contenu du cours seront rendus visibles Ă mesure que le cours progresse.