Students looking for a project to work on under my supervision can consider the ones below.
If you don't know what the "X Window System" is, just pretend it means "Linux". There is a working version of Edgy released in Summer 2004, implemented in C++. It has to be tried to really feel how much better it makes using the mouse. If you've used a good implementation of mouse gestures you'll have some idea, especially if you've experienced using the mouse without having to look at the screen!
Ideas for how to contribute:
(If you don't know what the "X Window System" is, just pretend it means "Linux".) This app lets you select and click on a point on the screen using the keyboard. It divides the screen into a 3x3 grid, and you type one of the numeric keys in the numeric keypad (they're arranged as a 3x3 grid on most keyboards) to select a square on the screen. The grid then shrinks to divide up the square you've chosen, and you type again to select a square from that grid, etc. When the grid is small enough and positioned over the point you want, typing "/", "*" or "-" at the top of the numeric keypad causes a left, middle or right click. Or to abort before clicking, type the "+" key on the keypad.
I completed a version of this a few years ago. Download a Linux executable and run it from the command line. If the executable is compatible with your installation of Linux, you will see a dashed grid dividing up your screen. If you're on CDF, you can run "~gfb/pub/grid-pointer". Or you can try compiling the C++ source code: the first line is a comment suggesting what command to use to compile it.
Once you get it working, the idea is to make a keyboard shortcut to launch it (how to do that depends on the desktop / window manager you're running), e.g. keypad 0 seems a good choice.
I haven't cleaned up the source code at all. I appear to have been playing around with a meaning for the "Enter" key on the keypad, and using modifier keys for dragging.
Ideas for how to contribute:
Step 1: Richer Programming Language Extension.
Step 2: TBA.
This game has a series of screens, each of which has a new visual object the player controls with mouse position. More abstractly, the object is an image parameterized by two continuous (real) variables: the mouse (x, y) position. For example, the easy first screen could have the image of a sphere, with radius and hue controlled by the mouse.
The player is shown a target image to achieve by moving the mouse. Scoring is based on how quickly they achieve the target image.
There's a simple specific educational variant I'd like to play. Display a 2x2 real matrix as four vectors: the two rows and the two columns, and allow the endpoints of the column vectors to be grabbed and moved. Adjusting a column vector affects both rows of the matrix. Random target configurations of the row vectors can be presented. What I want to find out is whether one can get good at this, and whether this provides an intuition for matrix transposition in Linear Algebra.
Expanded the working Java style checker. Also noted that producing XML (instead of sexp) representations of source code is sufficient for our purposes. There may already be code out there to do this. And removed the mention of Rewrite Programming: that will go into a more general project about tree transformation.
Added "Tree Manipulation" project to "Waking Up From the Machine".
Posted a style checker for Python code.
Added the project "Game: Exploring Parameter Space".
Added the beginnings of an sexp syntax for python under "Step 1" of the "Richer Language Extension" page.