Pen Based Computing
Assignment 3

Due Wednesday, March 12, 11:55pm


The goal of this project is to experiment with different algorithms for isolated gesture or shape recognition.   What you need to do is simple to explain: choose two shape recognition algorithms from the papers on the reading page, implement both, and compare their performance on data you collect.  Once again, however, this assignment is not as easy as it sounds (which is why you have 3 weeks to complete it), so please start early!  

As usual, you can implement additional functionality (suggested below) for extra credit.

Software Resources for this assignment

You will find a number of resources that you may find useful in implementing this assignment on the Sakai resources site.  You do not have to use these resources.  For some recognizers, they may not make sense.  Similarly, if you come across any resources that you think would really help you, let me know and I'll see if I can track them down.  Please look at the Sakai site for more detail.

Basic Functionality [60 points]

Implement a WPF application with the following functionality:

Advanced Functionality [up to 15 points extra credit]

For extra credit, implement any or all of the following extensions:

Testing and Writeup [40 points]

Once again, a major component of this project will be your writeup.  Submit the same three files as in the previous assignment: a README file, a Design file and a Testing file.  Details on what should be in each are given below.

Readme file

In a file called README.txt describe how to run your program, how to use it, any missing features or bugs that you are aware of, and any extra credit that you implemented.  Also describe your gesture/shape set, including how to draw them, and pictures where appropriate.

Design/approach Justification

In the first part of your writeup, you will analyze your design.  In a file called "Design.txt", write up answers/explanations for the following:
  1. Which recognizers did you choose to implement and why?    What were the most challenging parts of implementing each and how did you solve these challenges?
  2. Give an overview and critique of your design from a software engineering perspective.  How did you organize your data?  What worked well and what would you change if you had to do it over again.
  3. Comment on any other aspect of your implementation that you feel needs explaining (e.g. running time, data storage, user interface issues, etc).

Testing and Results

In the second part of your writeup, you will report on how well the two algorithms perform.  Unlike the previous assignment, you should focus mainly on quantitative data here.

Once you have your recognizers trained, test them on 5-20 examples of each symbol and keep track of each recognizer's performance.  Report your data in two formats: First, give a side-by-side comparison of each recognizer's performance on each symbol by reporting the percentage of examples of each symbol that was recognized correctly (i.e., was the best match) by each recognizer. Second, give a confusion matrix for each recognizer to show which symbols were confused with which others.  
Next, write one or two paragraphs about the recognizers results and why you believe they behave the way they do.

Finally, comment on which recognizer you would choose in the future and why.

Criteria

Your writeup will be graded on the following criteria:

What to Submit

Through Sakai, submit the following: