Self-Efficacy in Programming among STS Students

A few years ago, the introductory programming course for STS students, engineering students within sociotechnical systems engineering, at Uppsala University was redesigned according to principles presented in [5]. One concern that was raised after this change is whether those students are now appropriately prepared for future programming courses with the new design in the introduction course. To investigate this closer, a starting point is to study the students’ self-efficacy beliefs, i.e., their judgment about their own programming capabilities as there are other studies that confirms a correlation between students self-efficacy in programming and their success in learning and using programming. [7, 8] We have investigated how the self-efficacy in programming among STS students change during the year after their introductory programming course and have also studied how well they consider themselves to meet specific course goals from the programming course. Our results show no significant difference in the overall self-efficacy score, but a significant increase in self-regulation. Students perceive an increase in most of the abilities expressed by course goals investigated. We find no indication that students would be insufficiently prepared to face programming tasks in other courses after their introductory course on the topic. Introduction and Motivation Self-efficacy theory is used within several domains concerning education, training or other activities where a person is to attain a new or develop a higher level of skill. The theory has its beginning in the 70’s when Albert Bandura a Canadian psychologist known by many as the originator of the theory defined self-efficacy as “. people’s judgments of their capabilities to organize and execute courses of action required to attain designated types of performances” [3]. Bandura argues that self-efficacy beliefs affect: 1. Choice of activities 2. Level of effort expended 3. Persistence in the face of difficulties 4. Performance [2,3] Self-efficacy beliefs are also malleable and affect a person’s intellectual performance. For these reasons, studies concerning self-efficacy are highly relevant and the theory is widely applied in education as well as other activities where skill development is processed [6]. Wiedenbeck [7] among others present a view on self-efficacy as factor of success. When comparing students at the same level of cognitive skill development, a student with higher self-efficacy beliefs is more likely to take on more advanced and progressive challenges and will strive harder to reach goals. With low self-efficacy beliefs an individual tends to exaggerate problems and may therefore undergo stress and depression which can make a solvable problem impossible [1,7]. The theory of self-efficacy gives four sources of information from which a person’s self-efficacy beliefs arise: 1. Personal mastery experiences, in which an individual practices a skill 2. Vicarious experience, for example, modeling of a behavior of others 3. Verbal persuasion, such as suggestions that the individual can cope with a situation 4. Emotional arousal, in which one monitors one’s level of stress, anxiety, and fear to assess selfefficacy. [2,3,4] Introductory programming can be taught in different ways to different students – even within the same university. At Uppsala University, the traditional approach is a Java-centric introduction to the topic of imperative programming where the students have lectures, a few programming assignments and a written exam at the end. One of the study programs observed that their students did not perform as expected in this and following courses, which initiated a process to rework the course structure to achieve a course with a constructive alignment between course goals, syllabus and assessment. The result was a course structure with programming assignments related to the course goals and no written exam at the end as presented in [5]. Instead, students have roughly one assignment per course week to solve, mostly in groups of two, using pair-programming techniques. Assessment is achieved through continuous feedback, weekly sessions, demonstrations and explanation of the assignments. Other differences in the course are less focus on programming language and more about the ability to correctly debug a program and diagnose errors. Students are exposed to three different languages throughout the course to train the ability to bring previous knowledge into a new programming language. Following this course, there are several courses that include elements of programming where the students are mixed with students that have taken other introductory programming courses. Concerns have been raised about that students who have taken the new course are not as well prepared as other students and thus will not perform as well. To study this closer, an important issue is the one of selfefficacy – how well prepared students consider themselves to be when faced with programming tasks. Research Question In this report, we study how the self-efficacy among students who have taken the new introductory programming course changes during a year. The research question asked is: How does the self-efficacy in programming change from the introductory course until one year later? Related Literature In [6], Ramalingam and Wiedenbeck present a 32-item Self-Efficacy Scale for computer programming. This scale as well as the rest of the article is frequently referred to in studies concerning self-efficacy, e.g., [1, 7, 8]. In [6] the Self-Efficacy Scale was handed out to 421 students in the beginning of a C++ programming course as a pre-test. The students were asked to rate their confidence in doing programming task using a Likert scale from 1 (not at all confident) to 7 (absolutely confident). In the end of the course the same scale was administrated to the same student group as a post-test. Unlike Ramalingam and Wiedenbeck we administrated the pre-test and post-test to two different groups: 2nd year STS students (pre-test) and 3rd year STS students. Ramalingam and Wiedenbeck [6] assessed their scale and found it to be highly reliable, with a score of 0.98. Looking at their results an increase in self-efficacy between the pre-test and post-test is found, especially among the students with initial low self-efficacy. No substantial difference was found between males and females. Since Ramalingam and Wiedenbeck [6] studied C++ Programming students, a closer look at the study made by Askar and Davenport [1], including 326 Java Programming Computer Engineering students, gave us wider perspective on how to conduct our study. In [1], Askar and Davenport developed an instrument assessing Java Programming Self-Efficacy from the self-efficacy scale of [6]. Like the test mentioned above this test consisted of 32 items and the reliability was even greater (0.99). The results show with a significant difference that the males’ self-efficacy was higher than the females’. The overall self-efficacy score increased with the students’ experience, frequency of computer usage, as well as mother’s and siblings’ computer usage. Data collection Data was collected via an online survey that was e-mailed to students in both students groups, STS-2 and STS-3. There was a total of 40 questions in the survey. In five of the questions, the students are asked to answer (on a scale 1 to 4) how well they think they meet five specific course goals of the introductory programming course: 1. Analyze, and design solutions for simple problems 2. Formulate a strategy for managing larger problems 3. Systematic debugging 4. Read, understand and modify small parts of large amounts of code written by others 5. Explain the general principles for how a computer is structured and operates Three of the questions asked for gender, programming experience and what student group they belonged to. 32 of the questions in the survey have the purpose of evaluating the students' self-efficacy using the exact same questions used in [1], where students grade their confidence on a scale 1 (not at all confident) to 7 (absolutely confident). These questions are developed from the self-efficacy test presented in [6]. Self-efficacy tests regarding programming are often based on the questions in [6]; by using questions from that test, the survey in this study becomes easier to compare with results from other studies. Participants The students are engineering students within the sociotechnical systems engineering (STS) program at Uppsala University. Before the introductory programming course, they have done basic programming tasks in two previous courses, though without learning how to program. Their introductory programming course are placed in their third semester and it is a semester-long course with 11 assignments where they first learn Python and later in the course move to Java. There is also one assignment in which they are exposed to assembler programming for a MIPS architecture. During the year following the introductory programming course, they encounter programming tasks in several courses, e.g., Scientific computing II and Object oriented design. These courses are taught jointly with students from other engineering programs. The student groups in the second and third year of the STS program that were asked to participate in this study are described as follows: Men Women Total STS-2 33 20 53 STS-3 14 10 24 Total 47 30 77 Table 1: Participants data Due to the time limits, it has not been possible to follow a group of students throughout a year. Instead, we have collected answers from two student groups – one that currently takes the introductory programming course (STS-2) and one that took the course one year ago (STS-3). The course teacher and course structure have remained the same as previous year. The main difference between the two student groups are that one of them have since their introductory programming course also taken