Coarse-grained detection of student frustration in an introductory programming course | Synapse