How to determine course-based usage of software? I have logs of which users run which programs on our systems at a university. The data shows username, process time, and the time stamp for the sample. I also know which classes each user is in. Given this data, is it possible to reliably tell which professors/courses use a particular piece of software? I figure this method might be more reliable than asking the professors, who never respond to our queries! What statistical method, if any, would appropriate here? Pointers to the appropriate R function would be appreciated. Would principal component analysis be appropriate here?
 A: Purely from a machine learning perspective, I think it is possible to do the inference you want from this data. How reliable it will be will depend on how much data you have (the more the better) and on usage patterns (do students mostly do course-related or course-unrelated stuff on these computers). However, this is not a trivial task. In particular, I don't think there is a single R function which you can just run and it will give you the results. So it is worth exploring other options (particularly social engineering) to get the exact data.
If you do go for a statistical analysis, here are a few ideas to try.
One option is to use regression. Suppose you are interested in just one program and which courses it is used in. Define the following variables: $s_i$ is 1 if in a given term student $i$ used the program, 0 otherwise (you can potentially replace this with how often they used it); $x_{ij}$ is 1 if student $i$ is enrolled in class $j$ and 0 otherwise; $\beta_j$ is 1 if class $j$ uses the program and 0 otherwise. You can build a logistic regression $$logit(s_i) = \sum_j \beta_j x_{ij}.$$ The variables $s_i$ and $x_{ij}$ are known, and the regression will give you the $\beta$'s. If $\beta_j$ is high, it is likely the course uses the program.
Another option is to apply the author-topic model with some modifications. If your dataset is large enough, it can work well. The advantage, compared to logistic regression, is that it is more versatile, so it's easy to incorporate additional information that you have (such as that all students will use standard software like firefox, and there will be a small number of programs that only 1-2 students use). The disadvantage is that it is harder to implement. 
I don't think PCA or LDA would work well here. Your clusters would be the sets of programs students in a particular class use. The problem is that two classes may overlap in what they use, in which case that component will not be picked up by PCA/LDA.
