Programming day 1 (Processing)
1: shell program
2: displays a window with a box in it
3: a matrix class: default constructors, addition, multiplication, determinant, inverse, exponential, conversion to string, rotation matrix
4: allows box to be drawn at any given configuration (specified by a matrix)
allows user rotation of the field of view
5: rotates with constant angular velocity on user command
draws axes
6: resets viewer axes and velocity by user command
7: compute moments of inertia (not just all equal)
update reference velocity according to Euler equations
8: allow user to change the dimensions of the box (and hence the moments of inertia)
update angular velocities according to this input
9: text and lines display of angular velocities
user input of initial angular velocities
display of principal axes (red)


Programming day 2

Write a program that can:
-allow you to set the 4 entries of a 2x2 matrix graphically and dynamically, with sliders or something similar (two draggable points in an xy plane would work)
-display the images of the standard basis elements (or other user-definable basis?), and/or the transformed gridlines corresponding to the matrix,
-display the eigenvectors (if they exist) with lengths proportional to the eigenvalues
-display the complex eigenvalues in a small complex plane
-display the linear vector field corresponding to the linear transformation (say, on a 10x10 grid )

Use your program to help you classify 2x2 matrices.  In terms of formulas involving the entries of the matrix:
-When is the image of the transformation just 1 line?  What vector spans this line?
-When does the transformation preserve lengths?  Write a parameterization of all such transformations.
-When do the eigenvalues exist (i.e. when are they real)?
-What characterizes a diagonal/lower triangular/ upper triangular/ anti-symmetric/ symmetric matrix geometrically?
-In terms of the entries of the matrix, what happens to the unit circle under the transformation?