CodeSimilarity: an approach for clustering introductory programming assignments