4,110 research outputs found
Investigating the Essential of Meaningful Automated Formative Feedback for Programming Assignments
This study investigated the essential of meaningful automated feedback for
programming assignments. Three different types of feedback were tested,
including (a) What's wrong - what test cases were testing and which failed, (b)
Gap - comparisons between expected and actual outputs, and (c) Hint - hints on
how to fix problems if test cases failed. 46 students taking a CS2 participated
in this study. They were divided into three groups, and the feedback
configurations for each group were different: (1) Group One - What's wrong, (2)
Group Two - What's wrong + Gap, (3) Group Three - What's wrong + Gap + Hint.
This study found that simply knowing what failed did not help students
sufficiently, and might stimulate system gaming behavior. Hints were not found
to be impactful on student performance or their usage of automated feedback.
Based on the findings, this study provides practical guidance on the design of
automated feedback
Oii-web: An interactive online programming contest training system
In this paper we report our experience, related to the online training for the
Italian and International Olympiads in Informatics. We developed an interactive online
system, based on CMS, the grading system used in several major programming contests
including the International Olympiads in Informatics (IOI), and used it in three distinct
context: training students for the Italian Olympiads in Informatics (OII), training teachers
in order to be able to assist students for the OII, and training the Italian team for the
IOI. The system, that is freely available, proved to be a game changer for the whole italian
olympiads in informatics ecosystem: in one year, we almost doubled the participation to
OII, from 13k to 21k secondary school students.
The system is developed basing on the Contest Management System (CMS, http://cms-
dev.github.io/), so it is highly available to extensions supporting, for instance, the pro-
duction of feedback on problems solutions submitted by trainees. The system is also freely
available, with the idea of allowing for support to alternative necessities and developmen
Intelligent Tutoring System: Experience of Linking Software Engineering and Programming Teaching
The increasing number of computer science students pushes lecturers and
tutors of first-year programming courses to their limits to provide
high-quality feedback to the students. Existing systems that handle automated
grading primarily focus on the automation of test case executions in the
context of programming assignments. However, they cannot provide customized
feedback about the students' errors, and hence, cannot replace the help of
tutors. While recent research works in the area of automated grading and
feedback generation address this issue by using automated repair techniques, so
far, to the best of our knowledge, there has been no real-world deployment of
such techniques. Based on the research advances in recent years, we have built
an intelligent tutoring system that has the capability of providing automated
feedback and grading. Furthermore, we designed a Software Engineering course
that guides third-year undergraduate students in incrementally developing such
a system over the coming years. Each year, students will make contributions
that improve the current implementation, while at the same time, we can deploy
the current system for usage by first year students. This paper describes our
teaching concept, the intelligent tutoring system architecture, and our
experience with the stakeholders. This software engineering project for the
students has the key advantage that the users of the system are available
in-house (i.e., students, tutors, and lecturers from the first-year programming
courses). This helps organize requirements engineering sessions and builds
awareness about their contribution to a "to be deployed" software project. In
this multi-year teaching effort, we have incrementally built a tutoring system
that can be used in first-year programming courses. Further, it represents a
platform that can integrate the latest research results in APR for education
sk_p: a neural program corrector for MOOCs
We present a novel technique for automatic program correction in MOOCs,
capable of fixing both syntactic and semantic errors without manual, problem
specific correction strategies. Given an incorrect student program, it
generates candidate programs from a distribution of likely corrections, and
checks each candidate for correctness against a test suite.
The key observation is that in MOOCs many programs share similar code
fragments, and the seq2seq neural network model, used in the natural-language
processing task of machine translation, can be modified and trained to recover
these fragments.
Experiment shows our scheme can correct 29% of all incorrect submissions and
out-performs state of the art approach which requires manual, problem specific
correction strategies
Introductory programming: a systematic literature review
As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming.
This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research
Feedback Generation for Performance Problems in Introductory Programming Assignments
Providing feedback on programming assignments manually is a tedious, error
prone, and time-consuming task. In this paper, we motivate and address the
problem of generating feedback on performance aspects in introductory
programming assignments. We studied a large number of functionally correct
student solutions to introductory programming assignments and observed: (1)
There are different algorithmic strategies, with varying levels of efficiency,
for solving a given problem. These different strategies merit different
feedback. (2) The same algorithmic strategy can be implemented in countless
different ways, which are not relevant for reporting feedback on the student
program.
We propose a light-weight programming language extension that allows a
teacher to define an algorithmic strategy by specifying certain key values that
should occur during the execution of an implementation. We describe a dynamic
analysis based approach to test whether a student's program matches a teacher's
specification. Our experimental results illustrate the effectiveness of both
our specification language and our dynamic analysis. On one of our benchmarks
consisting of 2316 functionally correct implementations to 3 programming
problems, we identified 16 strategies that we were able to describe using our
specification language (in 95 minutes after inspecting 66, i.e., around 3%,
implementations). Our dynamic analysis correctly matched each implementation
with its corresponding specification, thereby automatically producing the
intended feedback.Comment: Tech report/extended version of FSE 2014 pape
Effects of Human vs. Automatic Feedback on Students' Understanding of AI Concepts and Programming Style
The use of automatic grading tools has become nearly ubiquitous in large
undergraduate programming courses, and recent work has focused on improving the
quality of automatically generated feedback. However, there is a relative lack
of data directly comparing student outcomes when receiving computer-generated
feedback and human-written feedback. This paper addresses this gap by splitting
one 90-student class into two feedback groups and analyzing differences in the
two cohorts' performance. The class is an intro to AI with programming HW
assignments. One group of students received detailed computer-generated
feedback on their programming assignments describing which parts of the
algorithms' logic was missing; the other group additionally received
human-written feedback describing how their programs' syntax relates to issues
with their logic, and qualitative (style) recommendations for improving their
code. Results on quizzes and exam questions suggest that human feedback helps
students obtain a better conceptual understanding, but analyses found no
difference between the groups' ability to collaborate on the final project. The
course grade distribution revealed that students who received human-written
feedback performed better overall; this effect was the most pronounced in the
middle two quartiles of each group. These results suggest that feedback about
the syntax-logic relation may be a primary mechanism by which human feedback
improves student outcomes.Comment: Published in SIGCSE '20: Proceedings of the 51st ACM Technical
Symposium on Computer Science Educatio
- …