Formative feedback, aimed at helping students to improve their work, is an important factor in learning. Many tools that offer programming exercises provide automated feedback on student solutions. We have performed a systematic literature review to find out what kind of feedback is provided, which techniques are used to generate the feedback, how adaptable the feedback is, and how these tools are evaluated. We have designed a labelling to classify the tools, and use Narciss' feedback content categories to classify feedback messages. We report on the results of coding 101 tools. We have found that feedback mostly focuses on identifying mistakes and less on fixing problems and taking a next step. Furthermore, teachers cannot easily adapt tools to their own needs. However, the diversity of feedback types has increased over the last decades and new techniques are being applied to generate feedback that is increasingly helpful for students.
Low retention rates in higher education Information Technology (IT) studies have led to an unmet demand for IT specialists. Therefore, universities need to apply interventions to increase retention rates and provide the labor market with more IT graduates. However, students with different characteristics may need different types of interventions. The current study applies a person-oriented approach and identifies the profiles of first-year IT students in order to design group-specific support. Tintos (1975, 1993) integration model was used as a framework to analyze questionnaire data from 509 first-year IT students in Estonia. The students response profiles were distinguished through latent profile analysis, and the students were divided into four classes based on their responses to questions about academic integration, professional integration and graduation-related self-efficacy. The difference in academic integration was smaller between the classes than the difference in professional integration. Based on the results it was suggested that one class of students need extra courses to increase their academic integration. Two classes need more professional integration (e.g., work practice), which can be achieved in collaboration with IT companies. In addition, one class of IT students seems to need no additional interventions applied by the university to be retained.
Research suggests that the notion of social identity can be useful to investigate learning in a broader sense and to better understand the problem of retention, low engagement and diversity in science, technology, engineering, and mathematics (STEM) education. There is little prior work in computing and engineering education research that builds on theories of social identity. This article summarises the findings of a longitudinal study exploring identity development in computing higher education. Students of two computing study programmes, computer science (CS) and IT Engineering (IT), were followed over a three-year period. In semi-structured interviews, the students reflected on their engagement in CS/IT. Phenomenographic analysis produced an outcome space describing increasingly broad ways in which students experience participation in CS/IT, i.e. engaging in doing, thinking, feeling, in relation to CS/IT, and in relation to other people. Experiences described by two categories were of increasing relevance as the students proceeded in their studies, participation as problem solving and problem solving for others. Another result is two outcome spaces providing nuanced descriptions of experiences that fall into these two categories. These results give us new insight into the students reflections on their engagement in CS/IT over the years. Participation as described by the category problem solving becomes the predominant way of participating in CS/IT, as is experienced by the students. Social aspects, introduced in the category problem solving for others, become more visible among third year students. However, some third year students express scepticism for less-technical ways of engaging in CS/IT.
Global software engineering has changed the way software is developed today. To address the new challenges, many universities have launched specially tailored courses to train young professionals to work in globally distributed projects. However, a mere acknowledgment of the geographic, temporal, and cultural differences does not necessarily lead to a deep understanding of the underlying practical implications. Therefore, many universities developed alternative teaching and learning activities, such as multi-university collaborative projects and small-scale simulations or games. In this paper, we present a small-scale exercise that uses Lego blocks to teach skills necessary for global work. We describe the many different interventions that could be implemented in the execution of the exercise, and share the results from two runs of the exercise with a group of international students. Our results suggest that the exercise can be a valuable tool to help students dealing with troublesome knowledge associated with global software engineering and a useful complement to the courses dedicated to this subject.
SQL is taught in almost all university level database courses, yet computer language research in an educational context is focused on programming languages rather than query languages. In this study, we present a database management system independent error categorization of SQL query errors that students make in an introductory database course. We base the categorization on previous literature on syntax and semantic errors, present a previously unreported category of logical errors and review and complement these findings by analyzing over 33,000 SQL queries submitted by students. Our analysis verifies error findings presented in previous literature and reveals additional types of errors, namely logical errors recurring in similar manners amongst different students. We present a listing of fundamental SQL query concepts we have identified and based our exercises on, a framework of syntax, semantical and logical error categorization and an operational model for designing SQL exercises.
In order to apply their computing knowledge to everyday situations and systems, students first need to be able to identify those situations in which computing even plays a role. This task becomes increasingly difficult, however, as computing systems become more and more ubiquitous and invisible. Based on the analysis of 28 semi-structured focus interviews, we present a grounded theory of students' conceptions and reasoning related to the identification of computing within technical devices. At its core is the finding that students seem to differentiate technical artifacts with respect to three conceived levels of capability. Many household appliances, for instance, may very well be seen as electronic and programmed, but still as too limited in their capability to warrant the presence of a real computer or to be related to informatics. Given the increasing versatility and power of modern embedded systems and the advent of the internet of things, this issue should clearly be addressed. Based on our grounded theory, we propose some first ideas for how this might be done.
Capstones and Large Projects in Computing Education
One of the challenges of global software engineering courses is to bring the practices and experience of large geographically distributed teams into the local and time-limited environment of a classroom. Over the last six years, an on-campus studio course for software engineering has been developed at The University of Queensland that places small teams of students on different features of a common product. This creates two layers of collaboration, as students work within their teams on individual features, and the teams must interoperate with many other teams on the common product. The class uses continuous integration practices and predominantly asynchronous communication channels (Slack and GitHub) to facilitate this collaboration. The original goal of this design was to ensure that students would authentically experience issues associated with realistically-sized software projects, and learn to apply appropriate software engineering and collaboration practices to overcome them, in a course without significant extra staffing. Data from the development logs showed that most commits take place outside synchronous class hours, and the project operates as a temporally distributed team even though the students are geographically co-located. Since 2015, a course adapted from this format has also been taught at the University of New England -- an Australian regional university that is also Australia's longest continuous provider of distance education. In this course, most students study online, and the class has to be able to work globally, because as well as students taking part from around Australia, there are also typically a small number of students taking part from overseas. Transfering the course to a smaller but predominantly online institution has allowed us to evaluate the distributed nature of the course, by considering what aspects of the course needed to change to support students who are geographically distributed, and comparing how the two cohorts behave. This has produced an overall course design, to teach professional distributed software engineering practices, that is adaptable from large classes to small, and from local to global.
This exploratory study examines the development of an instrument for assessing dispositional knowledge in the context of global software engineering. It focused on the development and use of a set of instruments for assessing affective domain student learning of global Information Technology (IT)/Software Engineering (SE) professional values. The effort needed to generate the questionnaires was relatively low, and were deployed to students and alumni from an open-ended global software engineering project course. The project included making explicit the IT professional values of interest among the participating faculty in the form of actionable value statements. It also included validation of these statements with an expert panel as question roots, and the use of these questions to investigate student and alumni receiving, responding and valuing of these professional values. Students responding reported significant agreement receiving these global values, but more mixed responses in responding and valuing them. The effort helped identify several actionable values worth reinforcing in future course offerings.
In this NSF CSforALL funded research study, the authors sought to understand the extent to which an urban districts teacher instructional support network enabled or constrained access to social capital and their capacity to implement and diffuse DLCS instructional practice throughout the K-12 curriculum. Social network analysis was used to investigate informal teacher advice-seeking and advice-giving patterns of DLCS support. Network measures of cohesion and centrality were computed. Findings revealed that DLCS focused teacher support networks tend to exhibit very low density, have relatively few ties, include a high number of isolates (teachers with no connections), and centralize around a particular actor. In addition, results revealed that teacher sense self-efficacy (a belief in their own ability to implement DLCS instruction) was significantly lower than their self-efficacy related to the implementation of more general instructional practices. Overall, study findings suggest that district capacity for the implementation of K-12 digital literacy and computer science curriculum and instruction may be quite low. Authors conclude that examining and strengthening teacher access to social capital and networks of instructional support may be a crucial step for educators concerned with school improvement and the diffusion of digital literacy and computer science curricula in US schools. CCS Concepts: " Human Centered Computing Collaborative and social computing design and evaluation methods Social Network Analysis; Social and Professional Topics Computing Education Computing literacy, K-12 education
Teaching Distributed Software Development with real distributed settings is a challenging and rewarding task. Distributed courses are idiosyncratically more challenging than standard local courses. We have experienced this during our distributed course, which has now been run for 14 consecutive years. In this paper, we present and analyze the emerging diversities specific to distributed project-based courses. We base our arguments on our experience and we exploit a three-layered distributed course model, which we use to analyze several course elements throughout the 14-years lifetime of our distributed project-based course. In particular, we focus on the changes that the course underwent throughout the years, combining findings obtained from the analyzed data with our own teaching perceptions. Additionally, we propose insights on how to manage the various diversity aspects.
Global software engineering (GSE) courses traditionally require cooperation between at least two universities so as to provide distributed development environment to the students. This study presents an alternative way of delivering such courses by incorporating open source software development (OSSD) in the absence of multiple universities alliance. The results show that the new setup provides challenges similar to multi-site software development as well as challenges associated with software development outsourcing. The present paper further compares a combined GSE and OSS course against a traditional GSE course in terms of students learning outcomes and course organization. The authors found that a combined GSE and OSS course provides similar learning opportunities to the students as a traditional GSE course, but with the added benefit of relative ease of organizing the course within a single university setting.
Context: Programming courses are mandatory in most Engineering degrees, and students performance in these courses is all too often not as good as expected. Programming is difficult for students to learn, given that it includes a lot of new, complex and abstract topics. All this leads us to acknowledge that fresh teaching techniques are needed if students are to be motivated and engaged in learning in programming courses. Gamification has come to be an effective technique in education in general, and it is especially useful in programming courses. This fact motivated us to develop a gamified platform, called UDPiler, for use in a programming course. Objective: The main goal of this paper is to obtain empirical evidence on the learning effectiveness of UDPiler in comparison to a non-gamified compiler. Method: A quasi-experiment was performed with two groups of first-year Engineering students at Diego Portales University in Chile, using a non-gamified compiler and a gamified platform respectively. Moreover, a post-experiment questionnaire was subsequently handed out, in order to obtain qualitative data about the gamified platform. Results: The results reveal that the students obtained better marks when the gamified platform for learning C programming was used. In addition, there is statistical significance in favor of a positive effect on the learning effectiveness of the students who used the gamified platform. Conclusions: The results allow us to conclude that gamification is an encouraging approach for teaching C programming. This finding is aligned with previous empirical studies about gamification, carried out in academic contexts.
The purpose of this paper is to discuss the findings of a survey of nearly 300 computing professionals who are involved in the design and/or development of software across a variety of industries. We report on the surveyed professionals perceptions of the importance of a range of topics and skills, and the degree to which recent graduates felt that each topic or skill was stressed in their undergraduate experience. Our findings highlight the value of breadth and flexibility in technical skills, and the universal importance of critical thinking, problem solving, on-the-job learning, interpersonal skills, and the ability to work well in cross-disciplinary teams. However, the recent graduates we surveyed report inconsistent coverage of these most important topics in their degree experiences. We discuss implications for education and for future research.
Recursion is one of the most important and hardest topics in lower division computer science courses. As it is an advanced programming skill, the best way to learn it is through targeted practice exercises. But the best practice problems are hard to grade. As a consequence, students historically have completed only a small number of recursion programming exercises as part of their coursework. We present a new way for teaching such programming skills. Students view examples and visualizations, then practice a wide variety of automatically assessed, small-scale programming exercises that address the sub-skills required to learn recursion. The basic recursion tutorial (RecurTutor) teaches material typically encountered in CS2 courses. Experiments showed that RecurTutor supports recursion learning for CS2 level students. Students who used RecurTutor had significantly better grades on recursion exam questions than did students who used typical instruction. Students who experienced RecurTutor spent significantly more time on solving programming exercises than students who experienced typical instruction, and came out with a significantly higher confidence level.
Global Software Development (GSD) is a strong industry trend at the present time. This means that if computer science engineers are to be trained with respect to this paradigm, it is very important to include the topic in software engineering courses, attempting to ensure that students learn about GSD and become familiar with its advantages and challenges. However, software engineering curricula courses do not always consider this paradigm. It must also be recognized that it is also difficult to find a suitable method with which to teach/develop the different skills that are advisable to have in GSD, given that it is frequently the case that there is a lot of content and not a great deal of time available to deal with it all. In this paper we propose the use of a serious game called GSD-Aware, with which students can suffer some of the typical challenges of GSD by interacting with avatars and by using several means of communication to solve some given problems. The paper focuses on the empirical validation of the game, for which an experiment was conducted, the aim being to analyze whether the game helps students to be aware of GSD challenges. It was discovered that after playing the game the students gave the same degree of importance as before playing it to these factors: lack of communication, lack of experience in the use of communication tools, and language difference. On the other hand, after playing the game the students were aware of the greater influence that the following factors can have: lack of coordination, trust, cultural differences, lack of face to face and informal communication, time difference and lack of team spirit. In their final analysis, students agreed that the serious game scenario helped them to understand the importance of GSD challenges. As a result, it can be concluded that the serious game seems to be an appropriate tool to help teach GSD features, as these games are often more affordable and entertaining than other traditional methods. Data indicate that by using GSD-Aware students can in a short period of time realize the importance of different factors that influence GSD projects. This method may be a better way of explaining these factors to them than by means of explanations given from a merely theoretical point of view.