Programming Pluralism: Using Learning Analytics to Detect Patterns in the Learning of Computer Programming