* Ces horaires sont donnés à titre indicatif.
| 1 | Identifier les données utiles au fonctionnement d’un logiciel |
| 2 | Architecturer un logiciel complexe en définissant le modèle des données et la structure des composants à concevoir ou à utiliser |
| 3 | Identifier et manipuler les représentations des données en machine |
| 4 | Utiliser des composants logiciels existants et les intégrer dans un développement |
| 5 | Choisir de façon raisonnée la manière de stocker et d’exploiter les données persistantes d’un logiciel |
| 6 | Intégrer les problématiques de tests, de robustesse, de qualité et de sécurité dans l’architecture d’un logiciel |
| 7 | Structurer et modéliser le code d’un logiciel pour en faciliter la maintenance et en améliorer la qualité, en utilisant des standards du domaine comme l’UML |
| 8 | Produire une interface utilisateur adéquate et pertinente |
| 9 | Planifier les étapes d’un développement |
| 10 | Concevoir des algorithmes répondant à un cahier des charges, en choisissant les structures de données adéquates |
| 11 | Lire et analyser une spécification, en tirer une réalisation |
| 12 | Analyser et décomposer une tâche pour concevoir un algorithme |
| 13 | Identifier et manipuler les représentations des données en machine |
| 14 | Choisir une structure de données pertinente |
| 15 | Utiliser les algorithmes classiques, les combiner pour résoudre des problèmes complexes |
| 16 | Concevoir un algorithme itératif ou récursif adapté à une structure de données |
| 17 | Dérouler un algorithme |
| 18 | Programmer un logiciel implémentant une spécification fonctionnelle et technique |
| 19 | Lire et analyser une spécification, en tirer une réalisation |
| 20 | Établir un jeu de tests répondant à une spécification et le mettre en œuvre |
| 21 | Identifier, utiliser et choisir les différents paradigmes de programmation, au moins les classiques : fonctionnelle, procédurale, orientée objet, évènementielle, logique |
| 22 | Résoudre un problème logiciel (erreur à la compilation, à l’exécution) |
| 23 | Savoir illustrer la bonne exécution d’un programme en programmant les bonnes sorties issues de bons jeux de tests |
| 24 | Résoudre des problèmes élémentaires en mathématiques et en informatique fondamentale |
| 25 | Employer les notions de base en mathématiques : vecteurs et opérations, calculs matriciels, transformations géométriques et problèmes associés, nombres complexes, dérivées, intégrales, arithmétique |
| 26 | Employer les notions d’analyse complexe |
| 27 | Appliquer les techniques d’analyse de fonction et d’analyse matricielle, calcul différentiel, méthode d’optimisation, algorithmique numérique et des outils logiciels (solvers, outils d’intégration numérique) pour résoudre les problèmes classiques |
| 28 | Utiliser les propriétés algébriques, analytiques et géométriques des espaces R, R2, R3 |
| 29 | Résoudre des équations (linéaires, algébriques, différentielles) de façon exacte et par des méthodes numériques |
| 30 | Utiliser les concepts de base des langages de programmation |
| 31 | Interpréter (à la main et via un programme) un code écrit dans un langage |
Organisation
Plusieurs grands thèmes sont proposés dans le format suivant.
Les notions de mathématiques utilisées à travers des applications sont : calcul vectoriel, notion de dérivée/intégrale/gradient, nombre complexe, interpolation, discret/continu, dénombrement, notions de géométrie, etc.
Les notions d'informatique utilisées sont : algorithme de recherche, de stockage dans des structures de données simple (tableau 1D, 2D), voisinage ; gestion d'une première interface avec une boucle d'évènements ; algorithme d'optimisation; calcul discret, différence finie, etc.