Class Reading and Homework

Please tell me if links don't work or of any other errors, as this page changes daily.

Debugging Pages:

Rubine Homework Debug
Segmentation Homework Debug
Primitive Error Homework Debug

Helpful Code:

Java Sketch Input Program

Criteria:

Summary and Discussion Criteria
Paper Criteria

Matrix Packages:

JAMA for Java: http://math.nist.gov/javanumerics/jama/
or unused for C++: http://www.techsoftpl.com/matrix/download.htm
or unused for C++: http://www.programmersheaven.com/download/30784/download.aspx

August 28, 2006, Class 1: Introduction

Course Slides: Lecture 1

Videos: Randy Davis, Assist, Alan Kay, Graphical User Interfaces (watch minutes 14-22) (need Google Video player, easier just to google in google video)

Reading: Ivan Sutherland, Sketchpad: A Man-machine Graphical Communication System

Homework 1a (due Wednesday, August 30): Write a summary of Ivan Sutherland's paper.

Homework 1b (due Wednesday, August 30): Write a discussion of Ivan Sutherland's paper.

Homework 1c (due Wednesday, August 30): Email hammond at cs.tamu.edu the following:
0) Email
1) Name
2) Year
3) Relevant experience
4) Why you are taking this class
5) What you hope to gain
6) What do you think you will be doing in 5 years
7) What do you think you will be doing in 10 years
8) Interesting fact about yourself
9) Send me a picture of yourself (a link to your website with a picture is fine)
10) Anything else you want me to know


August 30, 2006, Class 2: Sutherland/Rubine

Course Slides: Lecture 2

Reading: Dean Rubine, Specifying Gestures By Example

Homework 2a (due Friday, September 1): Write a summary of Dean Rubine's paper. Good Summary Sample

Homework 2b (due Friday, September 1): Write a discussion of Dean Rubine's paper.
Good Discussion Example, Good Discussion Example

Homework 2c (due Friday, September 1): Implement the 13 features of the Rubine method.
Language:The features should be implemented in either Java, C++, or Matlab. If you use Matlab, note that you will eventually have to write a wrapper in Java or C++ to allow pen input. JMatLink is available free online to connect Java and Matlab.
Object Oriented: When implementing the features, realize that you will be using these features again, several of the features are also useful in other recognition algorithms. You should not be reimplementing them (or copying code), so make sure you spend the time now to make sure they are easily used in the future. Comment your code!
Hand-in: Print out a copy of your code to hand-in.
Data:Hand in the feature values for the following shapes: data folder
I have included actual tablet data here.
NOTE: To use the rubine method, you will have to *remove* duplicate points in the same location for f9, f10, f11.
NOTE: You must *remove* duplicate points with the same timestamp for f12.
NOTE: Divide by zero: Some implementations may have a divide by zero problem for f9,f10,f11 when the numerator is 0 (but the length is not), the lines are perpendicular. You may want to have a special case in loop, and supply the output of the arctan function: (pi/2 for pos numerator and -pi/2 for neg numerator). Here is a graph: http://mathworld.wolfram.com/InverseTangent.html
HAND IN: your features in terms of [f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13]


September 1, 2006, Class 3: Rubine Trainer

Course Slides: Lecture 3

Homework 3a (due Monday, September 4): Fix your Rubine feature code.
NOTE: Java and Matlab returned exactly the same values for atan.
NOTE: Check to see that you are making your integers into doubles before dividing. (BP)
NOTE: Make sure to remove the second point in the case of duplicates. The logic behind this is that the second point is more valuable than the first point.

Homework 3b (due Monday, September 4): Look at the images in the data folder, explain why the values are correct for the 8 images. Note and explain a few of the oddities. Good Homework Sample

Homework 3c (due Monday, September 4): Begin to implement Rubine trainer:
Implement function to compute mean fci
NOTE: Normalization is the process of averaging all of the values of the examples. (In reality we normalize with N-1 for covariance and variance, rather than N. This is an unbiased estimator of the variance of the population from which X is drawn, as long as X consists of independent, identically distributed samples.) We will talk about this in class.
Implement function to compute covariance matrix without normalization (just sum up all of the (fei-fi)(fej-fj))
Implement function to compute covariance matrix with normalization (divide each sum by 15-1 = 14)

HAND IN: Copy of code.
Run your data on the 26 shapes of the alphabet with the first 15 training examples: data folder, or zip file

NOTE: Each letter has 17 files, only run on the first 15, we are saving 16 and 17 for testing.
HAND IN: Average rubine feature vector for the letter `b'.
HAND IN: Covariance matrix for the letter `b'


September 4, 2006, Class 4: Rubine Classification

Course Slides: Lecture 4

Homework 4a (due Wednesday, September 6): Compute common covariance matrix.
NOTE: You need to fix your covariance matrix first. See a covariance matrix above.
NOTE: For N and V, you will get NaN for sin and cos because the length is 0 between point 0 and 2, put a check to use the next point instead if this happens (i.e., point 0 and 3) - preferably with a while loop in case it happens twice.
TURN IN: 13 by 13 common covariance matrix

Homework 4b (due Wednesday, September 6): Compute weights for each feature, and initial weights for each class.
TURN IN: initial weight and feature weights for the letter b

Homework 4c (due Wednesday, September 6): Build classifier and classify data:
DATA: Use examples 16 and 17 of each of the letters AND the 8 random shapes.
TURN IN: Chosen gesture class for each example above AND the highest Vc value


September 6, 2006, Class 5: Rubine Alterations

Course Slides: Lecture 4

Reading: Allen Chris Long, `Those look similar!' issues in automating gesture design advice
If you haven't yet read, READ THIS PAPER INSTEAD: Allen Chris Long: Visual similarities

Homework 5a (due Friday, September 8): Write a summary for the Long paper. Good Summary Example

Homework 5b (due Friday, September 8): Write a discussion for the Long paper.

Homework 5c (due Friday, September 8): Simple Improvements
Implement the jitter reduction technique.
Implement rejection technique 1
Implement rejection technique 2
TURN IN: Classification for testing data in a matrix with the columns (cl = class letter):

  label     orig    jitter    rej1   rej2    rej1&jitter   reg2&jitter
  a1        cl       cl       cl ....
  a2        cl ...
  b1        ....
  b2
  ...
  rand1
  rand2
  ...
  rand8
label Build classifier and classify data:
DATA: Use examples 16 and 17 of each of the letters AND the 8 random shapes.
TURN IN: Chosen gesture class for each example above AND the highest Vc value


September 8, 2006, Class 6: Long Paper

Course Slides: Lecture 4

I posted more data for this one. The first data 1-17 were all drawn at the exact same time in the exact same way. 18-20, I tried to draw in the exact same way, but almost a week later. You can use this data to try to improve your results. Note that this data is still *only* one user. The variations would be much greater with several users.

Homework 6a (due Monday September 11): Summary of other Long paper (should be very easy since two papers are similar) Good Summary Example

Homework 6b (due Monday September 11): Discussion Long paper Good Discussion Example

Homework 6c (due Monday September 11): Implement 22 Long features


September 11, 2006, Class 7:

Course Slides: Lecture 4

Reading: Metin Sezgin, Sketch Based Interfaces: Early Processing odr Sketch Understanding

Homework 7a (due Monday September 11): Implement an improvement on the rubine gesture system. TURN IN: Code and results

Homework 7b (due Monday September 11): Summarize the features you have chosen and how it works.

Homework 7c (due Monday September 11): Discussion: Compare your results to Long and Rubine. Why did you choose those features. What happened? Why?

Homework 7d (due Wednesday September 13): Summary of Sezgin paper.

Homework 7e (due Wednesday September 13): Discussion of Sezgin paper.


September 13, 2006, Class 8:

Homework 8a (due Friday, September 13): Paper write up of Rubine changes. See above for paper criteria.


September 15, 2006, Class 9:

Course Slides: Lecture 9

Reading:Tracy Hammond, Fast Sketch Recognition Using Stroke Constraint Indexing

Homework 8 (due Monday, September 19): Critique of Hammond paper in progress. This is your chance to know about a small research project that I did. The paper is in progress (i.e., filled with bugs), so this will help you with your critical editing skills. Your critique should include the following:

  • Summary
  • Present and missing motivation for work
  • Parts of implementation that were hard to understand how to implement (or just plain hard to understand period)
  • Discussion
  • Writing/grammar/typo comments
  • Anything else

  • September 18, 2006, Class 10:

    Homework: Begin implementing Sezgin, no handin yet.


    September 20, 2006, Class 11:

    Homework 11a:Implement Sezgin Curves. Locate corners for: Data. No handin yet. Big handin for Monday

    Homework 11b:Project proposal. Make sure to hand in *how* you are going to do it, as well as what you are going to do, and what questions you have. You will have to present your idea to the class on Friday.


    September 22, 2006, Class 12:

    Homework 12:Hand in Sezgin errors for line, polyline, circle, and complex fit.


    September 25, 2006, Class 13:

    Reading:Yu - A Domain-Independent System for Sketch Recognition

    Homework 13a (due Wednesday September 27): Summary of Yu paper.

    Homework 13b (due Wednesday September 27): Discussion of Yu paper.


    September 27, 2006, Class 14:

    Homework 14 (due Friday September 29): Indepth Proposal:

  • Abstract (3-sentence punchline of what you are doing)
  • Introduction (Motivation - why important)
  • Previous Work (how it relates to those we read)
  • Implementation (How are you going to implement it?)
  • Results/Discussion (what do you expect to have as results?)
  • Testing (how are you going to test it)
  • Future Work (are there things that you would like to do more on this if you have time?)
  • Time Scale (what are you going to complete each week until it is finished)
  • Conclusion (summary of paper)
  • Homework 14a (due Friday September 29): Implementation of Yu paper: Recognize line, circle, ellipse, overtraced circle, and spiral (what they call helix). Recognize helix by similar radii, but moving center.


    September 29, 2006, Class 15:

    Homework 15 (due Monday October 2): Continue to work on lower level recognizer


    October 2, 2006, Class 16:

    Homework 16 (due Wednesday October 4): Continue to work on lower level recognizer


    October 4, 2006, Class 17:

    Homework 17ab (due Friday October 6): Research your project topic on scholar.google.edu, find one related paper, read and write a summary(a) and discussion(b) on the paper. Be prepared to say 2 sentences about your paper.

    Homework 17c (due Friday October 6): Come prepared to draw examples for your project on Friday

    Homework 17d (due Friday October 6): Continue to work on lower level recognizer


    October 6, 2006, Class 18:

    Homework 18ab: Rewrite your discussion for both Sezgin (a) and Yu (b). What have you found to be good/bad about each of the topics. What worked? What didn't? Why?


    October 9, 2006, Class 19:

    Homework 19: Continue programming (work on projects and lower level recognizer)


    October 11, 2006, Class 20:

    Course Slides: Lecture 20

    Homework 20 (due Friday October 13): Implement each of the choices for line recognition. Have your lower level recognizer finished for comparison on Friday


    October 14, 2006, Class 21:

    Course Slides: Lecture 21

    Homework 21 (due Monday October 16): Implement each of the choices for arc recognition. Hand in the errors in a table for different shapes.


    October 16, 2006, Class 22:

    Course Slides: Lecture 22

    Homework 22 (due Wednesday October 18): Implement each of the choices for circle recognition. Hand in the errors in a table for different shapes.


    October 18, 2006, Class 23:

    Course Slides: Lecture 23

    Homework 23 (due Friday October 20): Implement each of the choices for ellipse recognition. Hand in the errors in a table for different shapes.


    October 20, 2006, Class 24:

    Course Slides: Lecture 23

    Homework 24ab (due Monday October 23): Research your project topic on scholar.google.edu, find another related paper, read and write a summary(a) and discussion(b) on the paper. Be prepared to speak about the paper you have chosen.

    Homework 24c (due Monday October 23): Fix ellipse recognition. Implement the helix recognition algorithm. Hand in the errors in a table for different shapes.


    October 23, 2006, Class 25:

    Homework 25 (due Wednesday October 25): Continue working on recognizer.


    October 25, 2006, Class 26:

    Homework 26 (due Friday October 27): Implement linear classifier on lower level stroke data.


    October 27, 2006, Class 27:

    Reading: A Short Introduction to Boosting (Adaboost)

    Homework 27a (due Monday October 30): Summary of Adaboost paper.

    Homework 27b (due Monday October 30): Discussion of Adaboost paper.


    October 30, 2006, Class 28:

    Homework 28: Implement Adaboost


    November 1, 2006, Class 29:

    Homework 29: Finish low level recognizer


    November 3, 2006, Class 30:

    Homework 30:Write paper on your low level recognizer. (See criteria link at top.)


    November 6, 2006, Class 31:

    Reading: Hammond - Tahuti: A Geometrical Sketch Recognition System for UML Class Diagrams.

    Homework 31ab:Write summary and discussion of Tahuti paper.


    November 8, 2006, Class 32:

    Reading: Hammond - LADDER, a sketching language for user interface developers.

    Homework 32ab:Write summary and discussion of LADDER paper.


    November 10, 2006, Class 33:

    Homework 33ab:Find a third paper for your project. Write a summary and discussion.

    Homework 33c:Rewrite your Rubine paper to reflect changes and email to the three people in your group.


    November 13, 2006, Class 34:

    Reading:Seung - The Manifold Ways of Perception

    Homework 34ab:Read Manifold Paper Suggested by Henry: Write a summary and discussion.

    Homework 34c:Start critique the three Rubine papers assigned to you (critique at least one by now). To critique a paper, give a score from 1-5 as well as at least a sentence explanation for your score (including helpfulf feedback) for each of the eleven categories in the paper criteria (e.g., Clarity, Ideas, Abstract...Bibliography)


    November 15, 2006, Class 35 (Henry presents Manifold Learning):

    Homework 35ab:Student Suggested Paper 2: Write a summary and discussion.

    Homework 35c:Finish Critiquing the three Rubine papers assigned to you.


    November 17, 2006, Class 36:

    Homework 36ab:Student Suggested Paper 3: Write a summary and discussion.

    Homework 36cd:Student Suggested Paper 4: Write a summary and discussion.


    November 20, 2006, Class 37:

    Homework 37ab:Student Suggested Paper 5: Write a summary and discussion.


    November 22, 2006, Class 38:

    Homework 38ab:Student Suggested Paper 6: Write a summary and discussion.


    November 27, 2006, Class 39:

    Homework 39ab:Student Suggested Paper 7: Write a summary and discussion.


    November 29, 2006, Class 40:

    Homework 40ab:Student Suggested Paper 8: Write a summary and discussion.


    December 1, 2006, Class 40:

    Homework 40ab:Student Suggested Paper 9: Write a summary and discussion.


    December 4, 2006, Class 41: Class Project Presentations.