  An introductory programming course (CS1) is an integral part of any
undergraduate curriculum. Due to large number and diverse programming
background of students, providing timely and personalised feedback to
individual students is a challenging task for any CS1 instructor. The help
provided by teaching assistants (typically senior students) is not sufficient
as it suffers from unintentional bias and, most of the time, not quick enough.
  In this paper, we present Prutor, a tutoring system platform to conduct
introductory programming courses. Prutor is a cloud-based web application that
provides instant and useful feedback to students while solving programming
problems. Prutor stores, at regular intervals, the snapshots of students'
attempts to solve programming problems. These intermediate versions of the
student programs provide the instructors (and data analysts) a view of the
students' approach to solving programming problems. Since Prutor is accessible
through any standard web browser, students do not need to worry about
dependencies external to the programming course, viz. Operating Systems,
Editors, Compilers, Compiler Options, etc.. This enables the students to focus
on solving only the programming problems. Apart from the code snapshots at
regular intervals, Prutor also collects other valuable data such as the time
taken by the students to solve the problems, the number of compile and
execution events, and the errors made. We have used this data in developing
intelligent tools for giving feedback to students, some of which are described
briefly in this paper. This system thus serves as a platform for tutoring as
well as data collection for researchers.
