<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD v1.0 20120330//EN" "JATS-journalpublishing1.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="article">
  <front>
    <journal-meta>
      <journal-id journal-id-type="publisher-id">INFEDU</journal-id>
      <journal-title-group>
        <journal-title>Informatics in Education</journal-title>
      </journal-title-group>
      <issn pub-type="epub">1648-5831</issn>
      <issn pub-type="ppub">1648-5831</issn>
      <publisher>
        <publisher-name>VU</publisher-name>
      </publisher>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="publisher-id">INFEDU2021_4_24</article-id>
      <article-id pub-id-type="doi">10.15388/infedu.2021.24</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Article</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>Tool-Aided Learning of Code Reasoning with Abstraction in the CS Curriculum</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <name>
            <surname>FOWLER</surname>
            <given-names>Megan</given-names>
          </name>
          <email xlink:href="mailto:mefowle@g.clemson.edu">mefowle@g.clemson.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_000"/>
        </contrib>
        <aff id="j_INFEDU_aff_000">Clemson University, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>HALLSTROM</surname>
            <given-names>Jason</given-names>
          </name>
          <email xlink:href="mailto:jhallstrom@fau.edu">jhallstrom@fau.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_001"/>
        </contrib>
        <aff id="j_INFEDU_aff_001">Florida Atlantic University, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>HOLLINGSWORTH</surname>
            <given-names>Joseph</given-names>
          </name>
          <email xlink:href="mailto:hollings@rose-hulman.edu">hollings@rose-hulman.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_002"/>
        </contrib>
        <aff id="j_INFEDU_aff_002">Rose-Hulman Institute of Technology, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>KRAEMER</surname>
            <given-names>Eileen</given-names>
          </name>
          <email xlink:href="mailto:etkraem@clemson.edu">etkraem@clemson.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_003"/>
        </contrib>
        <aff id="j_INFEDU_aff_003">Clemson University, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>SITARAMAN</surname>
            <given-names>Murali</given-names>
          </name>
          <email xlink:href="mailto:msitara@clemson.edu">msitara@clemson.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_004"/>
        </contrib>
        <aff id="j_INFEDU_aff_004">Clemson University, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>SUN</surname>
            <given-names>Yu-Shan</given-names>
          </name>
          <email xlink:href="mailto:yushans@g.clemson.edu">yushans@g.clemson.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_005"/>
        </contrib>
        <aff id="j_INFEDU_aff_005">Clemson University, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>WANG</surname>
            <given-names>Jiadi</given-names>
          </name>
          <email xlink:href="mailto:wangj19@rose-hulman.edu">wangj19@rose-hulman.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_006"/>
        </contrib>
        <aff id="j_INFEDU_aff_006">Rose-Hulman Institute of Technology, USA</aff>
        <contrib contrib-type="author">
          <name>
            <surname>WASHINGTON</surname>
            <given-names>Gloria</given-names>
          </name>
          <email xlink:href="mailto:gwashington@scs.howard.edu">gwashington@scs.howard.edu</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_007"/>
        </contrib>
        <aff id="j_INFEDU_aff_007">Howard University, USA</aff>
      </contrib-group>
      <volume>20</volume>
      <issue>4</issue>
      <fpage>533</fpage>
      <lpage>566</lpage>
      <pub-date pub-type="ppub">
        <day>11</day>
        <month>12</month>
        <year>2021</year>
      </pub-date>
      <permissions>
        <copyright-year>2021</copyright-year>
        <copyright-holder>Vilnius University, ETH Zürich</copyright-holder>
        <license license-type="open-access">
          <license-p>Open access article under the CC BY license.</license-p>
        </license>
      </permissions>
      <abstract>
        <p>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.</p>
        <p>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.</p>
      </abstract>
      <kwd-group>
        <label>Keywords</label>
        <kwd>abstraction</kwd>
        <kwd>design by contract</kwd>
        <kwd>online tool</kwd>
        <kwd>software engineering</kwd>
        <kwd>symbolic reasoning</kwd>
      </kwd-group>
    </article-meta>
  </front>
</article>
