Travail 3 (T3)

Code source et donnés: ExpenseVisualization.zip (ancienne version)

Code source et donnés: ExpenseVisualization-v2.zip (nouvelle version)

Pour ce travail, vous avez à développer une visualisation interactive de dépenses gouvernementales. On vous fournit deux ensembles de données ("hospitality expenses", concernant des repas dans des restaurants, et "travel expenses", concernant des dépenses pour des voyages) et le code source d'un logiciel de base qui lit un des ensembles de données et permet de faire une visualisation simple de certains aspects des données. Vous aurez à modifier le code source pour permettre des visualisations interactives plus riches.

Le code fourni est écrit en Java, et se sert de l'API de Processing (en héritant de la classe PApplet), et aussi de la librarie Interfascia pour les widgets.

Les données brutes sont dans les fichiers de texte hospitality_expenses-utf8.txt et travel_expenses-utf8.txt. Des petits échantillons de ces fichiers se trouvent dans hospitality_expenses-sample.txt et travel_expenses-sample.txt, qui pourraient vous être utiles pour tester et déboguer votre code avec des petits ensembles de données. Le code fourni se sert d'une base de données SQLite (stockée dans le fichier log740.db) créée à partir de hospitality_expenses-utf8.txt.

Notez que les fichiers .jar pour l'API de Processing, Interfascia, SQLite, et la documentation pour Interfascia sont inclus dans le .zip qui vous est fourni. Vous n'avez pas besoin d'installer ces choses separément.

Vous avez à concevoir et réaliser des modifications au code pour permettre différentes visualisations des données. En un premier temps, vous devez

Cette première vue des données, montrant les dépenses en fonction du temps, permet de voir quand l'argent a été dépensé. Ensuite, vous devez aussi réaliser d'autres vues des données pour permettre à un utilisateur de faire un sous-ensemble des choses suivantes:
  1. Voir qui a dépensé de l'argent, et combien. Par exemple, cette vue devrait permettre de voir quel individu a dépensé le plus d'argent par rapport aux autres individus.
  2. Voir quels départements ont dépensé de l'argent, et combien, et lesquels ont dépensé le plus. Notez: il y a moins de 50 départements uniques dans les ensembles de données.
  3. Voir de l'argent a été dépensé, et combien, et où le plus d'argent a été dépensé. Il y a déjà du code de base pour voir les dépenses par ville dans une province donnée. Vous pouvez garder cette approche et l'améliorer (par exemple: en montrant la somme des dépenses pour chaque province dans la carte du Canada), ou bien adopter une approche différente (par exemple: voir toutes les villes du Canada en même temps, mais regroupées par province; ou voir aussi les villes à l'extérieur du Canada; ou voir les dépenses par restaurant en ordre alphabétique).
  4. Voir quand l'argent a été dépensé par rapport à des évènements connus ou des périodes de temps particulières. Par exemple, est-ce que plus d'argent est dépensé en campagne électorale par rapport au reste du temps? Durant l'été? Les vendredi? Durant d'autre évènements internationaux (conférence de l'OMC, ...)?
  5. Permettre de lire et visualiser le deuxième ensemble de données ("travel expenses") avec les mêmes genres de vues que vous avez réalisées pour le premier ensemble de données ("hospitality expenses").

Si vous êtes une équipe de 3 (ou 2) personnes, vous pouvez choisir trois (3) des items de la liste ci-haute à réaliser. Si vous êtes une équipe de 4 personnes, vous devez faire quatre (4) des items dans la liste ci-haute.

En faisant la conception et la réalisation de vos différentes vues des données, essayer de penser à des manière intéressantes d'utiliser

Si vous faites une vue qui est trop grande pour voir l'ensemble des données, il devra être possible de "scroller" à l'intérieur de la vue pour voir toutes les données.

De plus, dans chacune de vos vues, il devra être possible d'aller chercher des informations plus détaillées sur chaque item (point, barre, pointe de tarte, province, etc.) dans la vue. Cela peut se faire via une infobulle qui apparaît lorsque le curseur est par dessus l'item, ou bien apparaître dans un "popup" lorsqu'on clique sur l'item, ou bien apparaître dans le bas de la vue (dans un champ spécial), etc. L'important et de permettre à l'utilisateur d'aller chercher des "details on demand" (détails sur demande).

La version finale de votre code doit étre un applet qu'on peut intégrer dans une page web.

Vous avez à remettre un rapport (avec votre code) et aussi à présenter votre projet en classe.

Le rapport devra contenir les sections suivantes:


Remise

À remettre par courriel à l'adresse log740remise@... mentionnée sur la page principale du site web du cours:

À remettre dans la chute du département:

Notez: En collaboration avec VisibleGovernment, un organisme à but non-lucratif qui nous a fourni les ensembles de données, nous aimerions bien pouvoir utiliser le code (ou des parties du code) de certains projets d'étudiants pour monter un applet disponible en ligne pour le public, pour faciliter l'accès à ces données. Si vous ne voulez pas que votre code soit utilisé à ces fins, veuillez l'indiquer dans votre rapport et aussi dans un fichier README.TXT (ou LISEZMOI.TXT) dans votre code source. Si vous êtes d'accord que votre code puisse être utilisé à ces fins, et qu'en plus vous voulez que vos noms paraissent dans des remerciements et/ou comme (co-)auteurs de l'applet sur le site web public qui sera éventuellement mis sur place, veuillez aussi l'indiquer dans votre rapport et dans un fichier README.TXT (ou LISEZMOI.TXT) avec votre code.


Évaluation de T3 (15% de votre note finale au cours)


Rapport (incluant la qualité des images et de la langue):
   section "Documentation"                     20%
   section "Implémentation"                    15%
   section "Améliorations"                     15%
   section "Opinion de Processing"              1%
Logiciel:
   vue temps-dépenses                          12%
   changements au choix                        24%
   détails sur demande                          3%
   bonne utilisation de surbrilliance,
      infobulles, étiquettes                    5%
   qualité et originalité de l'interface        5%
      (qualité visuelle, utilisation simple,
      espace ni surchargé ni sous-utilisé)
Total:                                        100%

Présentation orale en classe (5% de votre note finale au cours)

Chaque équipe doit présenter leur projet en classe. La présentation sera évaluée par le prof du cours.

Les présentations auront lieu le 6 avril pendant le cours. Chaque présentation aura une durée de 10 minutes + une courte période de questions. L'ordre des présentations sera établi au hasard. Si certaines équipes veulent présenter leur projet une semaine d'avance, au cours du 30 mars, veuillez contactez le prof par courriel.

Évaluation des présentations en classe: sur un total de 5 points

Dans l'intérêt du temps, vos présentations n'ont pas besoin d'avoir d'introduction ou de conclusion formelle.

Il y aura aussi un prix pour le meilleur projet, choisi par un vote.


Voici des captures d'écran montrant ce que le code qu'on vous fournit peut déjà faire: