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
We will do this by solving the normal equations
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.