Abstract

Computer science students often evaluate the behavior of the code they write by running it on specific inputs and studying the outputs, and then apply their comprehension to a more general understanding of the code. While this is a good starting point in the student’s career, successful graduates must be able to reason analytically about the code they create or encounter. They must be able to reason about the behavior of the code on arbitrary inputs, without running the code. Abstraction is central for such reasoning. In our quest to help students learn to reason abstractly and develop logically correct code, we have developed tools that rely on a verification engine. Code involves assignment, conditional, and loop statements, along with objects and operations. Reasoning activities involve symbolic reasoning with simple assertions and design-by-contract assertions such as pre-and post-conditions as well as loop invariants with data abstractions. Students progress from tracing and reading code to the design and implementation of code, all relying on abstraction for verification. This paper reports some key results and findings from associated studies spanning several years.

Highlights

  • Educational Research Question Given the growing importance of online education in reaching a diverse audience, and the role of online tools in ensuring that at least a portion of CS education can happen outside a classroom, this research involves understanding the role of a reasoning tool we have built

  • Educational Research Questions educational research questions (ERQs) 2.1-Performance on Conditionals: What impact does the online tool have on student performance regarding the tracing of conditional statements using arbitrary symbolic values? ERQ 2.2-Self-Efficacy on Conditionals: What impact does the online tool have on student self-efficacy regarding the tracing of conditional statements using arbitrary symbolic values?

  • ERQ 1-Performance on Conditionals We found that overall, there was a statistically significant improvement in student per­formance using symbolic reasoning about conditional statements

Read more

Summary

Introduction

The first learning objective is to understand whether we can effectively teach the gen­ eral population of computer science students the basics of reasoning about code on all input values using a symbolic approach with the (non-exclusive) aid of a reasoning tool. Whereas the initial findings have shown the usefulness of an online tool to help students, they focused on students reasoning about code involving only assignment statements. Educational Research Questions ERQ 2.1-Performance on Conditionals: What impact does the online tool have on student performance regarding the tracing of conditional statements using arbitrary symbolic values? This section focuses on results in a software engineering course in which students learn to read and write formal assertions using symbolic reasoning, in the context of data abstract­ions. ERQ 4.1-Loop Invariant Basics: What common difficulties do students face, as it concerns developing loop invariants?

Objectives
Methods
Results
Discussion
Conclusion
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.