Contents of this page:

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:

  1. A new model for declarative input handling from pointing devices (mouse and fingers)
  2. A new way to handle gestures from input devices - new algorithm or method
  3. A new constraint solver or constraint specification language
  4. An evaluation of existing constraint languages, for expressiveness and performance
  5. A new way to program animations in user interfaces
  6. 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
  7. A new toolkit for 2D smartphone games
  8. A new toolkit for 3D garmes / AR / VR
  9. A new toolkit for programming with image recognition - e.g., from a phone camera
  10. A new toolkit for speech processing, making use of low-level ASR services
  11. Support in the toolkit for evaluating UIs made with the toolkit
  12. Support in the toolkit for debugging UIs made with the toolkit
  13. A new interactive tool for prototyping some aspect of UIs
  14. A new interactive tool for drawing or demonstrating some aspect of UIs
  15. A new way to enable end-users to write their own programs (EUP) or do their own development (EUD & EUSE)
  16. 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