Introductory programming is an essential part of the curriculum in any engineering discipline in universities. However, for many beginning students, it is very difficult to learn. In particular, these students often get stuck and frustrated when attempting to solve programming exercises. One way to assist beginning programmers to overcome difficulties in learning to program is to use intelligent tutoring systems (itss) for programming, which can provide students with personalized hints of students’ solving process in programming exercises. Currently, mostly these systems manually construct the domain models. They take much time to construct, especially for exercises with very large solution spaces. One of the major challenges associated with handling itss for programming comes from the diversity of possible code solutions that a student can write. The use of data-driven approaches to develop these itss is just starting to be explored in the field. Given that this is still a relatively new research field, many challenges are still remained unsolved. Our goal in this paper is to review and classify analysis techniques that are requested to generate datadriven hints in itss for programming. This work also aims equally to identify the possible future directions in this research field. 2018, Kassel university press gmbh.