Thinking in imperative or objects? A study on how novice programmer thinks when it comes to designing an application - Sim, Tze Ying * (2019)
Novice programming is a challenging subject to teach and learn. However, programming is an essential skill that is required by many majors apart from Computer Science. The challenges in a novice programming subject change according to the programming language used. At the beginning of the 90s, the object-oriented programming was introduced. Detienne claimed that it is easier for programmers to program using the object-first approach as humans think naturally in objects. The IEEE and ACM joint task force on Computing Curriculum proposed two tracks of curriculum, one for imperative-first and the other for objectfirst implementation. However, most of the work conducted on novice programming focused on the issues of syntax errors, reducing the possibilities of syntax error through a new or adapted programming environment. This paper will present the preliminary work to investigate if students will naturally think in objects or a series of steps. Three intervention methods were implemented in three different workshops. The intervention methods are the object-first, the imperative-first and the problem-solving-first. The students are then requested to design an application. Through the design, the research will identify if the students use the object-first or the imperative-first design. Assuming that the object-first intervention group will design primarily in objects, and the imperative-first intervention group in a series of steps, the problem-solving intervention will be the ”neutral” group. The object-first design is reflected through the attributes and methods of a particular object. The imperative-first design is identified if the solution contains a series of steps. The findings show that most of the students designed the application using a series of steps reflecting the imperative-first design. This finding should be included when considering if imperative-first or object-first should be the way forward for a novice programming subject.