text: The authors present 3 architectures for learning representations of programs from execution traces.  In the variable trace embedding, the input to the model is given by a sequence of variable values.  The state trace embedding combines embeddings for variable traces using a second recurrent encoder.  The dependency enforcement embedding performs element-wise multiplication of embeddings for parent variables to compute the input of the GRU to compute the new hidden state of a variable.  The authors evaluate their architectures on the task of predicting error patterns for programming assignments from Microsoft DEV204.1X (an introduction to C# offered on edx) and problems on the Microsoft CodeHunt platform.  They additionally use their embeddings to decrease the search time for the Sarfgen program repair system. This is a fairly strong paper.  The proposed models make sense  and the writing is for the most part clear,  though there are a few places where ambiguity arises: - The variable "Evidence" in equation (4) is never defined.  - The authors refer to "predicting the error patterns",  but again don't define what an error pattern is.  The appendix seems to suggest that the authors are simply performing multilabel classification based on a predefined set of classes of errors,  is this correct?  - It is not immediately clear from Figures 3 and 4 that the architectures employed are in fact recurrent. - Figure 5 seems to suggest that dependencies are only enforced at points in a program where assignment is performed for a variable,  is this correct? Assuming that the authors can address these clarity issues, I would in principle be happy for the paper to appear.