World Transactions on Engineering and Technology Education 2012 WIETE Vol.10, No.2, 2012 1 INTRODUCTION Introductory university-level programming courses tend to suffer from comparatively high failure rates [1-3]. Various reasons for this problem have been identified [3-6]. Jenkins [4] argues that programming, unlike most subjects at the pre-university level, involves a hierarchy of skills (such as the syntax-semantics-structure-style hierarchy) and a multitude of processes (a given problem specification has to be first translated to an algorithm or a recipe and then to code). Both learning and teaching programming are therefore considered difficult, especially for students who do not study computer science as their major subject and thus often lack the internal motivation to learn programming [7]. Several approaches have been proposed to alleviate the problem of teaching and learning programming. To make programming concepts and algorithms more tangible and thereby easier to grasp, some teachers have employed advanced visualisation tools [8] or multi-sensory approaches [9]. Some courses teach programming by providing the students with ‘attractive’ problems [10]. For instance, students might learn programming through developing computer games [11] or manipulating media files [7][12]. In problem-based and project-based approaches [13-15], students, typically organised in groups, acquire knowledge by working on challenging but possibly ill-structured problems or projects. Active learning approaches [16-18] emphasise the student’s responsibility in gaining his or her knowledge. While traditional, teacher -centered approaches view the teacher as the sole purveyor of knowledge and the student as its passive receiver, active learning approaches regard the student as an active participant in the learning process and the teacher as the ‘mere’ facilitator of learning. Active learning approaches are consistent with the constructivist learning theory [19]. In this paper, we focus on the introductory programming course called ‘Basic Programming’, taught at University of Ljubljana, Slovenia, at the Faculty of Computer and Information Science (UL-FCIS) as a compulsory part of the so- called ‘University programme Computer and Information Science’ [20]. In the academic year 2009/10, UL-FCIS adopted the Bologna reform [18][21][22] to ensure greater compatibility of its programs and courses with other European universities. Among other things, the Bologna reform calls for a more active, student-centred way of learning. To enable the students to assume a greater role in the learning process, we refreshed the lab sessions of the course ‘Basic Programming’ in the academic year 2010/11. While retaining the overall form of the course, we made the lab sessions more interactive and thus closer to the spirit of active learning approaches and the Bologna reform. Many modern approaches to teaching programming take advantage of state-of-the-art technology to encourage greater participation of students in the learning process. The lab sessions of our course were refreshed by the help of a cooperative development system called Assistant’s Assistant. While this system was developed primarily to save some A cooperative development system for an interactive introductory programming course Luka Fürst & Viljan Mahnič University of Ljubljana Ljubljana, Slovenia ABSTRACT: We present a system for the cooperative development of computer programs that was created for the lab sessions of an introductory programming course at University of Ljubljana, Slovenia. The system has relieved the students from the tedious task of retyping programs developed by the teaching assistant and enabled them to cooperate with the teaching assistant in solving programming problems. We have thus made the lab sessions more efficient and interactive and brought them closer to the spirit of active learning approaches.