Assigned: Wed, 4/1/2020,
Due: Mon, 4/20/2020 at 1:30pm.
Project Schedule (most dates extended by 1 week from original schedule)
Summary of Schedule of Deliverables |
Due Date |
Initial Topic Ideas for Final Projects Entered into Piazza |
Wed,
April 1, 2020 at 1:30pm |
Form Final Project Groups |
Wed, April 8, 2020 at 1:30pm |
One-page proposal for Projects |
Mon,
April 13, 2020 at 1:30pm |
Presentations for Final Projects |
Wed,
April 29, 2020 in class |
Written Reports for Final Projects |
Mon,
May 4, 2020 at 1:30pm |
Topic Ideas
These may be re-implementation of known ideas, or novel ideas that would be appropriate for publication. This topic is frequently published in top venues like UIST and CHI.
Your project might make use of the toolkit you created for homeworks 2-5. You might start from the code of whoever in your group seems to have the best design and implementation, or you can combine code from multiple gropup members. Some of the project ideas would be great add-ons or replacements to your current design. Alternatively, you can build your project on top of a commercial or opensource toolkit.
Here are some ideas for final project topics:
- A new model for declarative input handling from pointing devices (mouse and fingers)
- A new way to handle gestures from input devices - new algorithm or method
- A new constraint solver or constraint specification language
- An evaluation of existing constraint languages, for expressiveness and performance
- A new way to program animations in user interfaces
- A new toolkit for handling sensor input from accelerometers, light sensors, and other sensors on smartphones and other wearables in the context of a UI
- A new toolkit for 2D smartphone games
- A new toolkit for 3D garmes / AR / VR
- A new toolkit for programming with image recognition - e.g., from a phone camera
- A new toolkit for speech processing, making use of low-level ASR services
- Support in the toolkit for evaluating UIs made with the toolkit
- Support in the toolkit for debugging UIs made with the toolkit
- A new interactive tool for prototyping some aspect of UIs
- A new interactive tool for drawing or demonstrating some aspect of UIs
- A new way to enable end-users to write their own programs (EUP) or do their own development (EUD & EUSE)
- Adding to your toolkit a way to do inheritance or cloning to make it easier to get a new copy of a collection of graphical and behavior objects. For example, to make an instance of a button.
Picking Topics and Forming Groups
A preliminary list of topic ideas is displayed above. You can pick one of these or propose your own topic. Remember that all projects must be about creating user interface software or tools, not about just using them. If you are unsure if your idea is appropriate, please discuss with the professor.
All projects must be done in groups of 1 to 4 students. (Originally, individual projects were not allowed, but due to the requirement for social distancing, I am now allowing you to do the project alone if necessary, but I still recommend doing it in a group.)
You should fill in a copy of the form on the class Piazza page under the "project" folder before Wednesday,
April 1, 2020. If you already have a group formed for a project, you can just use one copy of the form with everyone's name listed. If you see someone else's post on Piazza that sounds like a fun project, please make a note of that in their discussion area that you would like to join it, and also fill out your own form listing your skills. Or else it is fine to enter your own project idea and try to find others interested in it. I will help to form the groups, if necessary.
3 students did their homeworks in Java, and the rest were in JavaScript, if that helps with forming groups.
Here is what the form asks for:
Your name:
Which project do you want to work on? Elaborate on one that is on the topics list (for example, including which specific item you want to do) in a sentence or two, or describe your idea in a few sentences.
Please indicate how strongly you want to work on this project. For example, whether you definitely want to work on it, or if you would be happy working on a different project in a related area.
Please describe your background and skills that might be relevant to your or other people's projects. Be sure to include your programming language (Java or JavaScript or both).
if you have in mind others to work on this project with you, please list them here:
Deliverables Details
- Initial Topic Ideas for Final Projects Entered into Piazza
- Wednesday, April 1, 2020 at 1:30pm
- Everyone should fill out the form on the class Piazza page under the "project" folder by Wednesday, March 25, 2020 at 1:30pm. If you want to coordinate with other classmates about project ideas, please go ahead before that date.
- If you want to brainstorm ideas beforehand, Prof. Myers is available after any class.
- Form Final Groups
- Wednesday, April 8, 2020
- In class on Wednesday, April 1, we will go through the Piazza entries see about forming all the groups. Hopefully, we can finalize the groups in class, or else shortly afterwards by email.
- One-page proposal for Projects
- Mon, April 13, 2020 at 1:30pm
- This should be turned in on-line in Canvas, either as a Microsoft Word or pdf file. Note that just one group member should upload it per group.
- This will be a detailed proposal. It should have the following content:
- A short title for your group and/or project. We will call you "the ___ group", so it should be short, clearly related to your project, and specific enough to differentiate you from other groups.
- A full explanation of what you plan to do for your project.
- What platform you are using to build the project (your toolkit or something standard)
- Hopefully, how you will divide up the work among your group members (who will do what part).
- Possibly a few references, if you are building on existing research ideas or commercial systems, to show that you are familiar with the appropriate related work to your project, and a discussion about why these references are relevant.
- I expect this to be at least one page that is single-spaced in TimesRoman 12 point font, but it is OK if it is a little longer.
- This will be graded, and will count as part of your grade on the final project. Being late will incur the standard penalty (5 points per day).
- Sometime during the project, each team will separately have an assigned time to meet with the professor to go over your progress and discuss any issues, but feel free to ask for extra help.
- Presentations for Final Projects
- Wed, April 29, 2020 in class
- Naturally, since the rest of the class must be remote, you will also give the presentations remotely from whereever you are. Hopefully, everyone can find a place with an excellent internet connection, so you can present synchonously and live. If this cannot be arranged, please let me know and we can figure out a way for you to record your presentation and get it to me, so I can replay it for the class.
- Each group should present for about 15 minutes discussing the results of your project. You must be finished within 20 minutes, or I will need to cut you off, so we have time for all 4 groups..
- You should have slides in either pdf or PowerPoint format that will be saved on the course public website. Upload your slides to Canvas after your talk. If you have videos or other material to go along with your slides, please make a zip file of everything together. Name your file with your group name.
- We are interested both in what you final project looks like and how you implemented it. Be sure to cover any algorithms you are using, the architecture of how your system uses the underlying toolkit, and any difficulties / barriers to making it work.
- No late presentations (obviously)
- Everyone will evaluate other groups' project presentations using this Google form: https://forms.gle/d7jnh7zWka9nR4oZ7.
- Final Written Reports for Final Projects
- Due Monday, May 4, 2020 at 1:30pm
- All final reports should be turned in electronically on Canvas.
- The final report should include:
- Introduction: An overview of what you did. Especially point out anything novel or interesting.
- Related Work: A discussion of how it is similar or different from research and commercial systems, with appropriate citations (e.g., URLs) so I can see what you are referencing.
- Example: an example with screen shots or code examples (as appropriate) of how your system works with one or more examples.
- Detailed users manual or reference documentation: An explanation of every element of your system, in sufficient detail so that users will know how to use every part.
- Design rationale: what can you say about why you ended up with the current design? What did you try that didn't work well, and why? What changes did you make along the way?
- Implementation: how your system works internally, for example: what algorithms you are using, the architecture of how your system uses the underlying toolkit, and any difficulties / barriers to making it work.
- Future Work: What you didn't get to finish, and how you envision the system being completed if someone was to do more work on it, or new ideas you had while doing the project that you didn't get to explore.
- In addition, you should turn in a Zip file of all the code for your system. Name your file with your group name.
- I envision that the final reports will be about 10 pages, single-spaced in TimesRoman 12 point font, but it will vary enormously based on what kind of project you do.
- Late penalty for written report: 10 points per day (every day at 1:30pm will be another 10 points off), because I need to grade them quickly.
- When you are finished, please fill in a peer evaluation form (https://www.surveymonkey.com/r/05830spring2020peer) about how well your group worked together.