skip to main content


Title: SnapCheck: Automated Testing for Snap! Programs
Programming environments such as Snap, Scratch, and Processing engage learners by allowing them to create programming artifacts such as apps and games, with visual and interactive output. Learning programming with such a media-focused context has been shown to increase retention and success rate. However, assessing these visual, interactive projects requires time and laborious manual effort, and it is therefore difficult to offer automated or real-time feedback to students as they work. In this paper, we introduce SnapCheck, a dynamic testing framework for Snap that enables instructors to author test cases with Condition-Action templates. The goal of SnapCheck is to allow instructors or researchers to author property-based test cases that can automatically assess students' interactive programs with high accuracy. Our evaluation of SnapCheck on 162 code snapshots from a Pong game assignment in an introductory programming course shows that our automated testing framework achieves at least 98% accuracy over all rubric items, showing potentials to use SnapCheck for auto-grading and providing formative feedback to students.  more » « less
Award ID(s):
1917885
NSF-PAR ID:
10279565
Author(s) / Creator(s):
; ; ; ;
Date Published:
Journal Name:
ITiCSE '21: Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education
Page Range / eLocation ID:
227 to 233
Format(s):
Medium: X
Sponsoring Org:
National Science Foundation
More Like this
  1. Peer assessment, as a form of collaborative learning, can engage students in active learning and improve their learning gains. However, current teaching platforms and programming environments provide little support to integrate peer assessment for in-class programming exercises. We identified challenges in conducting such exercises and adopting peer assessment through formative interviews with instructors of introductory programming courses. To address these challenges, we introduce PuzzleMe, a tool to help Computer Science instructors to conduct engaging in-class programming exercises. PuzzleMe leverages peer assessment to support a collaboration model where students provide timely feedback on their peers' work. We propose two assessment techniques tailored to in-class programming exercises: live peer testing and live peer code review. Live peer testing can improve students' code robustness by allowing them to create and share lightweight tests with peers. Live peer code review can improve code understanding by intelligently grouping students to maximize meaningful code reviews. A two-week deployment study revealed that PuzzleMe encourages students to write useful test cases, identify code problems, correct misunderstandings, and learn a diverse set of problem-solving approaches from peers. 
    more » « less
  2. null (Ed.)
    Engineering instructors often use physical manipulatives such as foam beams, rolling cylinders, and large representations of axis systems to demonstrate mechanics concepts and help students visualize systems. Additional benefits are possible when manipulatives are in the hands of individual students or small teams of students who can explore concepts at their own pace and focus on their specific points of confusion. Online learning modalities require new strategies to promote spatial visualization and kinesthetic learning. Potential solutions include creating videos of the activities, using CAD models to demonstrate the principles, programming computer simulations, and providing hands-on manipulatives to students for at-home use. This Work-in-Progress paper discusses our experiences with this last strategy in statics courses two western community colleges and a western four-year university where we supplied students with their own hands-on kits. We have previously reported on the successful implementation of a hands-on statics kit consisting of 3D printed components and standard hardware. The kit was originally designed for use by teams of students during class to engage with topics such as vectors, moments, and rigid body equilibrium. With the onset of the COVID-19 pandemic and shift to online instruction, the first author developed a scaled down version of the kit for at-home use by individual students and modified the associated activity worksheets accordingly. For the community college courses, local students picked up their models at the campus bookstore. We also shipped some of the kits to students who were unable to come to campus, including some in other countries. Due to problems with printing and availability of materials, only 18 kits were available for the class of 34 students at the university implementation. Due to this circumstance, students were placed in teams and asked to work together virtually, one student showing the kit to the other student as they worked through the worksheet prompts. One community college instructor took this approach as well for a limited number of international students who did not receive their kits in a timely manner due to shipping problems. Two instructors assigned the hands-on kits as asynchronous learning activities in their respective online courses, with limited guidance on their use. The third used the kits primarily in synchronous online class meetings. We found that students’ reaction to the models varied by pilot site and presume that implementation differences contributed to this variation. In all cases, student feedback was less positive than it has been for face-to-face courses that used the models from which the take home kit was adapted. Our main conclusion is that implementation matters. Doing hands-on learning in an online course requires some fundamental rethinking about how the learning is structured and scaffolded. 
    more » « less
  3. null (Ed.)
    The feedback provided by current testing education tools about the deficiencies in a student’s test suite either mimics industry code coverage tools or lists specific instructor test cases that are missing from the student’s test suite. While useful in some sense, these types of feedback are akin to revealing the solution to the problem, which can inadvertently encourage students to pursue a trial-and-error approach to testing, rather than using a more systematic approach that encourages learning. In addition to not teaching students why their test suite is inadequate, this type of feedback may motivate students to become dependent on the feedback rather than thinking for themselves. To address this deficiency, there is an opportunity to investigate alternative feedback mechanisms that include a positive reinforcement of testing concepts. We argue that using an inquiry-based learning approach is better than simply providing the answers. To facilitate this type of learning, we present Testing Tutor, a web-based assignment submission platform that supports different levels of testing pedagogy via a customizable feedback engine. We evaluated the impact of the different types of feedback through an empirical study in two sophomore-level courses.We use Testing Tutor to provide students with different types of feedback, either traditional detailed code coverage feedback or inquiry-based learning conceptual feedback, and compare the effects. The results show that students that receive conceptual feedback had higher code coverage (by different measures), fewer redundant test cases, and higher programming grades than the students who receive traditional code coverage feedback. 
    more » « less
  4. Akram, Bita ; Shi, Yang ; Brusilovsky, Peter ; I-han Hsiao, Sharon ; Leinonen, Juho (Ed.)
    Promptly addressing students’ help requests on their programming assignments has become more and more challenging in computer science education. Since the pandemic, most instructors use online office hours to answer questions. Prior studies have shown increased student participation with online office hours. This popularity has led to significantly longer wait times in the office hours queue, and various strategies for selecting the next student to help may impact wait time. For example, prioritizing students who have not been seen on the day of the deadline will extend the wait time for students who are frequently rejoining the queue. To better understand this problem, we explored students’ behavior when they are waiting in the queue. We investigate the amount of time students are willing to wait in the queue by modeling the distribution of cancellation time. We find that after waiting for 49 minutes, most students will cancel their help request. Then, we looked at students’ coding actions during the waiting period and found that only 21% of students have commits while waiting. Surprisingly, students who waited for hours did not commit their work for automated feedback. Our findings suggest that time in the queue should be considered in addition to other factors like last interaction when selecting the next student to help during office hours to minimize canceled interactions. 
    more » « less
  5. Nigel Bosch ; Antonija Mitrovic ; Agathe Merceron (Ed.)
    Demand for education in Computer Science has increased markedly in recent years. With increased demand has come to an increased need for student support, especially for courses with large programming projects. Instructors commonly provide online post forums or office hours to address this massive demand for help requests. Identifying what types of questions students are asking in those interactions and what triggers their help requests can in turn assist instructors in better managing limited help-providing resources. In this study, we aim to explore students’ help-seeking actions from the two separate approaches we mentioned before and investigate their coding actions before help requests to understand better what motivates students to seek help in programming projects. We collected students’ help request data and commit logs from two Fall offerings of a CS2 course. In our analysis, we first believe that different types of questions should be related to different behavioral patterns. Therefore, we first categorized students’ help requests based on their content (e.g., Implementation, General Debugging, or Addressing Teaching Staff (TS) Test Failures). We found that General Debugging is the most frequently asked question. Then we analyzed how the popularity of each type of request changed over time. Our results suggest that implementation is more popular in the early stage of the project cycle, and it changes to General Debugging and Addressing TS Failures in the later stage. We also calculated the accuracy of students’ commit frequency one hour before their help requests; the results show that before Implementation requests, the commit frequency is significantly lower, and before TS failure requests, the frequency is significantly higher. Moreover, we checked before any help request whether students changed their source code or test code. The results show implementation requests related to higher chances of source code changes and coverage questions related to more test code changes. Moreover, we use a Markov Chain model to show students’ action sequences before, during, and after the requests. And finally, we explored students’ progress after the office hours interaction and found that over half of the students improved the correctness of their code after 20 minutes of their office hours interaction addressing TS failures ends. 
    more » « less