Projet: données libres#
Introduction#
L’objectif de ce projet est de créer des programmes de traitement de données en travaillant sur des données réelles. Le traitement de données est un aspect primordial du développement informatique actuel et il existe de nombreuses bibliothèques, architectures et algorithmes spécifiques, en particulier pour traiter les très grands volumes de données. Dans ce projet, nous verrons comment avec les simples connaissances acquises au cours de ce semestre, nous pouvons déjà aborder ces questions à notre niveau.
Contexte#
De plus en plus d’organisations, gouvernementales ou autres, mettent leurs données à la disposition du public, afin que celui-ci puisse se les approprier, en trouver des utilisations nouvelles et créatives, et aussi contrôler le fonctionnement de ces organisations sur la base de faits concrets.
Par exemple tout un chacun peut maintenant, grâce aux données mises en ligne récemment par la RATP, implanter une application adaptée à ses besoins spécifiques; par exemple qui déclenche le réveil matin 25 minutes avant l’arrivée du RER, que celui-ci soit à l’heure ou pas; ou d’un RER précédent en cas de gros retard annoncé sur la ligne. D’autres données incluent le cadastre ou le processus de rédaction des lois à l’Assemblée nationale, etc. Le citoyen peut ainsi consulter les amendements aux projets de lois auxquels son député a participé, et voir si ceux-ci sont conformes aux engagements de campagne de ce dernier. Voir par exemple les actions de l’association Regards Citoyens; et en particulier cet article.
L’analyse de ce type de données a par exemple permis en janvier 2016 à des journalistes de mettre au jour le fait que des matchs de tennis de l’ATP avaient été truqués. Les données ainsi que leurs analyses sont disponibles sur BuzzFeedNews/everything. On y trouvera d’autres analyses de données tels que les tremblements de terre reliés à l’exploitation des gaz de schiste aux États-Unis, les mouvements des donateurs de la campagne présidentielle américaine lorsqu’un candidat sort de la course, ou une analyse du placement des enfants dans les crèches.
Comme les données peuvent être de grande taille, en extraire des informations intéressantes requiert la plupart du temps des traitements automatisés. Ce projet est l’occasion de constater que vous avez dès à présent les moyens de commencer à traiter automatiquement ce type de données ou d’autres ! Par exemple des résultats d’expériences de physique.
À noter: en d’autres occasions, la bonne approche serait d’utiliser des bibliothèques existantes d’analyse de données et d’apprentissage automatique; on peut par exemple penser à pandas et scikit-learn (pour python). Pour des traitements simples sur de petites données, un tableur suffirait.
Ici nous n’utiliserons que la bibliothèque standard de C++ (et éventuellement la SFML / SDL pour les graphiques), quitte à réimplanter des outils de base; en effet l’objectif pédagogique est avant tout de mettre en pratique ce que vous avez appris dans le cours de programmation impérative et de mieux comprendre comment fonctionnent ces outils.
Organisation du projet et difficulté des exercices#
Ce projet est volontairement long afin que chacun puisse s’exprimer en fonction de ses compétences, de son éventuelle expérience préalable et de ses goûts. La progression dans le projet est pensée en terme d’exercices à difficulté croissante.
La Partie 1 est accessible à toutes et tous et nécessaire pour la suite du projet. Les parties 2 et 3 sont indépendantes, commencez par celle que vous voulez. Elles sont cependant toutes les deux nécessaires pour réaliser la partie 4.
Partie 1 : création progressive d’une bibliothèque basique (12 points)
Partie 2 : des requêtes plus difficiles (2 points)
Partie 3 : fichiers CSV (2 points)
Partie 4 : aller plus loin (4 points)
Voici le barème détaillé