Program visualization (PV) is potentially a useful method for teaching programming basics to novice programmers. However, there are very few studies on the effects of PV. We have developed a PV tool called ViLLE at the University of Turku. In this paper, multiple studies on the effects of the tool are presented. In addition, new qualitative data about students' feedback of using the tool is presented. Both, the results of our studies and the feedback indicate that ViLLE can be used effectively in teaching basic programming concepts to novice programmers.
Reflective practice is considered to play an important role in students' learning as they encounter difficult material. However, students in this situation sometimes do not behave reflectively, but in less productive and more problematic ways. This paper investigates how educators can recognize and analyze students' confusion, and determine whether students are responding reflectively or defensively. Qualitative data for the investigation comes from an upper-level undergraduate software engineering and design course that students invariably find quite challenging. A phenomenological analysis of the data, based on Heidegger's dynamic of rupture, provides useful insight to students' experience. A comparison between that approach and a sampling of classic sources in scholarship on learning, reflectiveness, and defensiveness has implications for teaching and education research in software design - and more generally. In addition, a clearer understanding of the concepts presented in this paper should enable faculty to bring a more sophisticated analysis to student feedback, and lead to a more informed and productive interpretation by both instructor and administration.