  With the widespread adoption of MOOCs in academic institutions, it has become
imperative to come up with better techniques to solve the tutoring and grading
problems posed by programming courses. Programming being the new 'writing', it
becomes a challenge to ensure that a large section of the society is exposed to
programming. Due to the gradient in learning abilities of students, the course
instructor must ensure that everyone can cope up with the material, and receive
adequate help in completing assignments while learning along the way. We
introduce TipsC for this task. By analyzing a large number of correct
submissions, TipsC can search for correct codes resembling a given incorrect
solution. Without revealing the actual code, TipsC then suggests changes in the
incorrect code to help the student fix logical runtime errors. In addition,
this also serves as a cluster visualization tool for the instructor, revealing
different patterns in user submissions. We evaluated the effectiveness of
TipsC's clustering algorithm on data collected from previous offerings of an
introductory programming course conducted at IIT Kanpur where the grades were
given by human TAs. The results show the weighted average variance of marks for
clusters when similar submissions are grouped together is 47% less compared to
the case when all programs are grouped together.
