Projects

Assignment

Choose your project. If you don't know what you want to do, see the instructor (Geyer) and we will talk about it.

Start a design document for your project.

At this stage we want as complete and precise a description of the problem or problems the package will solve. A high-level description of the problem is just fine at this point, but it must be precise.

Example

Suppose you were going to write a package having a function to do least squares regression, like what the R function lm does but dumber. Given a vector y (the response) and a matrix M (the design or model matrix) we will find a β that minimizes the quantity

(yM β)T (yM β)

We will do this by solving the normal equations

MT y = MT M β

And we will do that by using a QR decomposition of the model matrix M = Q R where Q is orthogonal and R is upper triangular.

And so forth. Stuff at this level of generality, but very precise.

What Not to Do

What your design document should not look like is a typical journal article or textbook. We are interested in theory only in so far as it directly affects computation.

This cannot be emphasized strongly enough! Do not write something that looks like a thesis proposal. I do not want to know the theoretical background or what theory justifies what your package does. I want to see that you have thought through the computing (as much as you can in a few weeks — what you say may need to be revised later as you get into the actual coding of the package).

What to Do

What tasks will your R package do?

What functions will your R package have?

What will be the formal arguments of each function? What will be valid values of each? What object will each return?

What algorithm will each function use (if not trivial)? What details of these algorithms need to be carefully thought through?

What to Hand In

Your design document, PDF format preferred. Or you could just hand in a paper copy in class.