Pour ce projet, vous avez à programmer une interface logicielle de votre choix et suite à mon approbation. (Si vous êtes incapables ou vous refusez de faire de la programmation, il y a peut-être des projets alternatifs que vous pourriez faire, mais dans ce cas votre projet risque d'être moins intéressant, et je m'attends à ce que la grande majorité des élèves fassent de la programmation.)
L'interface n'a pas besoin d'être conçue pour un ordinateur -- elle pourrait être conçue pour une automobile, un "PDA" ou ardoise, téléphone cellulaire, etc. Aussi, l'interface n'a pas besoin d'être conçue pour des périphériques conventionnels, tels une souris et un clavier. Toutefois, l'interface que vous allez monter pourrait bien être un prototype qui tourne sur un ordinateur conventionnel.
L'application derrière l'interface n'a pas besoin de fonctionner réellement. Vous pourriez avoir une simulation. Par exemple, si une interface pour un fureteur de web ou gestionnaire de fenêtres vous intéresse, mais vous ne voulez pas modifier un vrai fureteur de web ou gestionnaire de fenêtres, vous pourriez monter une simulation de pages webs ou de fenêtres (peut-être stockées comme images statiques) et monter une interface pour faire une preuve de concept, pour démontrer votre idée. L'interface doit, bien sûr, être intéractif! Par exemple, dans l'exemple du fureteur de web ou du gestionnaire de fenétres, les images statiques des pages web ou des fenêtres doivent être réellement manipulables (exemple: on clique sur un lien simulé, et on passe réellement à une autre page simulée).
Le sujet de votre projet n'a pas besoin nécessairement d'être une interface consistant d'une fenétre complète avec une barre de menu, des boutons, et tout le contenu associé. Votre projet pourrait se concentrer sur un seul widget, une seule "technique d'interaction", ou un seul algorithme que vous dévellopiez, si celui ci est suffisamment novateur et intéressant et vous allez en profondeur dans l'analyse et la conception de celui ci.
Un élément nécessaire dans votre projet sera que l'interface ait un aspect novateur, ou expérimental, ou hors de l'ordinaire, ou un peu bizarre, ou qui essaie de combiner les avantages de deux interfaces ou produits conventionnels. Une partie de l'évaluation de votre projet sera basée sur son originalité et sa créativité. Une partie encore plus importante dépendera de votre capacité de faire preuve d'analyse et de raisonnement, et de justifier les décisions que vous allez prendre dans la conception de l'interface, même si en bout de ligne vous vous rendez compte que votre idée de conception originale n'était peut-être pas très bonne. Un projet idéal menerait à un article publiable, mais je m'attends à ce que la grande majorité des étudiants n'atteignent pas ce niveau.
Remmettez une proposition d'environ 1-2 pages (sans page couverture s.v.p.) qui décrit votre idée de projet. Si vous êtes moins sûr, décrivez 2-3 idées possibles. J'aimerais savoir quel langage/plateforme/librarie(s) de programmation vous avez l'intention d'utiliser. Donnez une briève motivation pour votre projet. Spécifiez en quoi votre interface sera novateur/experimentale/hors de l'ordinaire. De préférence, mettez une esquisse / figure ou deux dans la proposition pour montrer votre idée.
Quelques remarques élémentaires:
Si, sur mon site web, vous voyez un projet antérieur sur lequel j'ai déjà travaillé qui vous intéresse, je pourrais vous fournir le code source pour que vous puissiez le modifier.
Voici une liste de suggestions et d'exemples de projets pour vous inspirer:
Java
Petit tutoriel sur les applets Java
JOGL - permet d'utiliser le OpenGL à partir du Java, pour créer des interfaces 3D
Java3D - permet de monter des interfaces 3D en Java; c'est une alternative au OpenGL
JInput - permet d'utiliser, par exemple, deux souris en même temps comme dans une interface bimanuelle
Échantillon de code source:
SimplePaint (application démontrée en classe)
C/C++
Conseils, et échantillon de code source, pour la programmation 3D en C++ avec OpenGL
Si vous avez besoin d'utiliser des images bitmaps dans votre interface, j'ai des routines C++ qui permettent de lire des images en format PPM / PGM / PBM
Des boîtes à outils d'interface ou de widgets: Qt (compatible avec le OpenGL), GLOW (utilise OpenGL), GLUI (utilise OpenGL). Notez que le Qt ne nécessite pas le OpenGL, et qu'il a des fonctionalités permettant d'afficher des pages web.
Python
Le Python représente un avancement technologique par rapport au Java semblable à l'avancement représenté par le Java par rapport au C++. Le Python a plusieurs libraries qui facilitent la création d'interfaces utilisateurs, la manipulation d'images, l'interaction avec les boîtes à courriels, etc. Si cela vous intéresse, je pourrais vous indiquer plus de resources et d'informations.
D'autres possibilités de langage et de plateformes: Flash, Visual Basic, C#, ...
Votre rapport final aura à décrire votre interface. Idéalement, ce rapport serait publiable comme article académique, mais je m'attends à ce que la plupart des étudiants n'atteignent pas tout à fait ce niveau de contribution. Toutefois, je vous demande d'émuler le style académique d'écrire un article.
Je vous permettrez la liberté d'écrire votre rapport avec une grande flexibilité, en utilisant votre bon sens. Je n'imposerait pas de gabarit à suivre à la lettre. Toutefois, je m'attends à voir des sections dans votre rapport qui couvrent les éléments suivants:
Comme mentionné ailleurs, une partie de mon évaluation de votre projet sera basée sur son originalité et sa créativité.
Une deuxième partie, encore plus importante, dépendera de votre capacité de faire preuve d'analyse et de raisonnement, et de justifier les décisions que vous allez prendre dans la conception de l'interface, même si en bout de ligne vous vous rendez compte que votre idée de conception originale n'était peut-être pas très bonne. Donc, il serait souhaitable que vous ayez une section explicite dans votre rapport qui fait de l'analyse, par exemple, qui identifie, discute, analyse, et compare différentes possibilités de conception, ou différents systèmes existants, pour motiver et justifier la conception et l'approche que vous adopterez dans votre interface.
Une troisième partie de mon évaluation dépendra du défi technique représenté par le projet, et de l'habileté technique que vous avez démontrée. Si vous avez des capacités de programmation assez limitées, et que l'aspect programmation de votre projet risque d'être plutôt simple, je vous encourage fortement d'essayer de compenser en mettant plus d'accent dans les aspects analytiques de votre rapport, par exemple en discutant différentes possibilités de conception, les pours et contres et compromis, les stratégies et solutions possibles, et peut-être même en développant une taxonomie de stratégies ou de possibilités. (De plus, si vous pensez avoir à passer beaucoup de temps à apprendre un langage de programmation ou une librarie avant de pouvoir vous concentrer sur la programmation de votre interface, et que votre projet va donc manquer d'envergure technique, vous pouvez essayer de compenser un peu dans votre rapport en parlant en peu des leçons que vous avez retirés ou des fonctionnalités particulières que vous avez maîtrisées dans le langage ou la librarie qui vous ont aidé à réaliser votre interface.)
Quatrièmement, une partie de mon évaluation dépendra de la qualité de présentation du rapport. Ceci comprend l'orthographe, la grammaire, la structure des paragraphes et des sections, la présentation logique des idées, la qualité des figures, etc.
Voici trois exemples de rapports de projets qui pourraient servir à vous donner une idée approximative de mes attentes en termes de contenu et de longueur. Ces rapports n'étaient pas écrits pour des cours de conception d'interfaces utilisateurs. Je ne vous les présentent pas comme gabarits ou exemplaires à suivre nécessairement dans ce cours, mais plutôt pour éviter que certains étudiants n'aient aucune idée des attentes. [ exemple 1 ] [ exemple 2 ] [ exemple 3 ] Vous pouvez aussi regarder les nombreux articles académiques qui décrivent différents systèmes intéractifs pour avoir des idées de comment rédiger votre rapport.
Votre code source ne sera pas noté, mais je demande toutefois une copie de votre code source final. Si votre code source peut-être imprimé en moins de 20 pages, veuillez en annexer une impression à votre rapport. Autrement, veuillez m'envoyer par courriel une copie électronique de votre code source.
De plus, je me réserve le droit de demander une démonstration de votre système si je le juge nécessaire.
Évitez soigneusement toute forme de plagiat, ou même la possibilité de donner l'impression d'un plagiat, dans votre projet et votre rapport. Si vous utilisez une idée, une librarie, un outil, un algorithme, du code source, des données, des images, des fichiers, un gabarit, ou autres choses d'un autre auteur, indiquez le clairement dans votre rapport et expliquer comment vous l'avez utilisé ou modifié. Ne risquez pas de donner l'impression que vous avez créé quelque chose que vous n'avez pas en faite créée par vous même. Il est tout à fait normal pour les chercheurs d'utiliser les idées, les résultats, et les outils des autres pour bâtir de nouveaux résultats et faire des nouvelles découvertes; mais il faut toujours bien citer ses sources et remercier ceux qui nous ont aidés de façon appropriée. Si vous citer une partie du texte d'un article, évidemment, indiquer que c'est une citation et donner la source de la citation. Il existe plusieurs moyens pour un professeur de détecter des cas de plagiat, et lorsque ces cas arrivent, c'est une situation grave qui sera traîtée sévèrement.
Évaluation: