We conducted a controlled study to investigate whether having students choose the concept on which to solve each practice problem in an adaptive tutor helped improve learning. We analyzed data from an adaptive tutor used by introductory programming students over three semesters. The tutor presented code-tracing problems, used pretest-practice-post-test protocol, and presented line-by-line explanation of the correct solution as feedback. We found that choice did not in-crease the amount of learning or pace of learning. But, it resulted in greater improvement in score on learned concepts, and the effect size was medium.
more »
« less
An Epistemic Model-Based Tutor for Imperative Programming
We developed a tutor for imperative programming in C++. It covers algorithm formulation, program design and coding – all three stages involved in writing a program to solve a problem. The design of the tutor is epistemic, i.e., true to real-life programming practice. The student works through all the three stages of programming in interleaved fashion, and within the context of a single code canvas. The student has the sole agency to compose the program and write the code. The tutor uses goals and plans as prompts to scaffold the student through the programming process designed by an expert. It provides drill-down immediate feed-back at the abstract, concrete and bottom-out levels at each step. So, by the end of the session, the student is guaranteed to write the complete and correct program for a given problem. We used model-based architecture to implement the tutor be-cause of the ease with which it facilitates adding problems to the tutor. In a preliminary study, we found that practicing with the tutor helped students solve problems with fewer erroneous actions and less time.
more »
« less
- Award ID(s):
- 1432190
- PAR ID:
- 10301921
- Date Published:
- Journal Name:
- Artificial Intelligence in Educaiton
- Page Range / eLocation ID:
- 213-218
- Format(s):
- Medium: X
- Sponsoring Org:
- National Science Foundation
More Like this
-
-
Introductory programming courses aim to teach students to write code independently. However, transitioning from studying worked examples to generating their own code is often difficult and frustrating for students, especially those with lower CS self-efficacy in general. Therefore, we investigated the impact of using Parsons problems as a code-writing scaffold for students with varying levels of CS self-efficacy. Parsons problems are programming tasks where students arrange mixed-up code blocks in the correct order. We conducted a between-subjects study with undergraduate students (N=89) on a topic where students have limited code-writing expertise. Students were randomly assigned to one of two conditions. Students in one condition practiced writing code without any scaffolding, while students in the other condition were provided with scaffolding in the form of an equivalent Parsons problem. We found that, for students with low CS self-efficacy levels, those who received scaffolding achieved significantly higher practice performance and in-practice problem-solving efficiency compared to those without any scaffolding. Furthermore, when given Parsons problems as scaffolding during practice, students with lower CS selfefficacy were more likely to solve them. In addition, students with higher pre-practice knowledge on the topic were more likely to effectively use the Parsons scaffolding. This study provides evidence for the benefits of using Parsons problems to scaffold students’ write-code activities. It also has implications for optimizing the Parsons scaffolding experience for students, including providing personalized and adaptive Parsons problems based on the student’s current problem-solving status.more » « less
-
In this paper, we explore using Parsons problems to scaffold novice programmers who are struggling while solving write-code problems. Parsons problems, in which students put mixed-up code blocks in order, can be created quickly and already serve thousands of students while other types of programming support methods are expensive to develop or do not scale. We conducted two studies in which novices were given equivalent Parsons problems as optional scaffolding while solving write-code problems. We investigated when, why, and how students used the Parsons problems as well as their perceptions of the benefits and challenges. A think-aloud observational study with 11 undergraduate students showed that students utilized the Parsons problem before writing a solution to get ideas about where to start; during writing a solution when they were stuck; and after writing a solution to debug errors and look for better strategies. Semi-structured interviews with the same 11 undergraduate students provided evidence that using Parsons problems to scaffold write-code problems helped students to reduce the difficulty, reduce the problem completion time, learn problem-solving strategies, and refine their programming knowledge. However, some students found them less useful if the Parsons solution did not match their approach or if they did not understand the solution. We then conducted a between-subjects classroom study with 81 undergraduate students to investigate the effects on learning. We found that students who received Parsons problems as scaffolding during write-code problems spent significantly less time solving those problems. However, there was no significant learning gain in either condition from pretest to posttest. We also discuss the design implications of our findings.more » « less
-
Students often get stuck when programming independently, and need help to progress. Existing, automated feedback can help students progress, but it is unclear whether it ultimately leads to learning. We present Step Tutor, which helps struggling students during programming by presenting them with relevant, step-by-step examples. The goal of Step Tutor is to help students progress, and engage them in comparison, reflection, and learning. When a student requests help, Step Tutor adaptively selects an example to demonstrate the next meaningful step in the solution. It engages the student in comparing "before" and "after" code snapshots, and their corresponding visual output, and guides them to reflect on the changes. Step Tutor is a novel form of help that combines effective aspects of existing support features, such as hints and Worked Examples, to help students both progress and learn. To understand how students use Step Tutor, we asked nine undergraduate students to complete two programming tasks, with its help, and interviewed them about their experience. We present our qualitative analysis of students' experience, which shows us why and how they seek help from Step Tutor, and Step Tutor's affordances. These initial results suggest that students perceived that Step Tutor accomplished its goals of helping them to progress and learn.more » « less
-
One of the main skills of engineers is to be able to solve problems. It is generally recognized that real-world engineering problems are inherently ill-structured in that they are complex, defined by non-engineering constraints, are missing information, and contain conflicting information. Therefore, it is very important to prepare future engineering students to be able to anticipate the occurrence of such problems, and to be prepared to solve them. However, most courses are taught by academic professors and lecturers whose focus is on didactic teaching of fundamental principles and code-based design approaches leading to predetermined “right” answers. Most classroom-taught methods to solve well-structured problems and the methods needed to solve ill-structured problems are strikingly different. The focus of our current effort is to compare and contrast the problem solving approaches employed by students, academics and practicing professionals in an attempt to determine if students are developing the necessary skills to tackle ill-structured problems. To accomplish this, an ill-structured problem is developed, which will later be used to determine, based on analysis of oral and written responses of participants in semi-structured interviews, attributes of the gap between student, faculty, and professional approaches to ill-structured problem solving. Based on the results of this analysis, we will identify what pedagogical approaches may limit and help students’ abilities to develop fully-formed solutions to ill-structured problems. This project is currently ongoing. This work-in-progress paper will present the study and proposed methods. Based on feedback obtained at the conference from the broader research community, the studies will be refined. The current phase includes three parts, (1) problem formulation; (2) protocol development; and (3) pilot study. For (1), two different ill-structured problems were developed in the Civil Engineering domain. The problem difficulty assessment method was used to determine the appropriateness of each problem developed for this study. For (2), a protocol was developed in which participants will be asked to first solve a simple problem to become familiar with the interview format, then are given 30 minutes to solve the provided ill-structured problem, following a semi-structured interview format. Participants will be encouraged to speak out loud and also write down what they are thinking and their thought processes throughout the interview period. Both (1) and (2) will next be used for (3) the pilot study. The pilot study will include interviewing three students, three faculty members and three professional engineers. Each participant will complete both problems following the same protocol developed. Post-interview discussion will be held with the pilot study participants individually to inquire if there were any portions of the tasks that are unclearly worded or could be improved to clarify what was being asked. Based on these results the final problem will be chosen and refined.more » « less
An official website of the United States government

