<?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_28</article-id>
      <article-id pub-id-type="doi">10.15388/infedu.2021.28</article-id>
      <article-categories>
        <subj-group subj-group-type="heading">
          <subject>Article</subject>
        </subj-group>
      </article-categories>
      <title-group>
        <article-title>A Necessity-Driven Ride on the Abstraction Rollercoaster of CS1 Programming</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <name>
            <surname>SBARAGLIA</surname>
            <given-names>Marco</given-names>
          </name>
          <email xlink:href="mailto:marco.sbaraglia@unibo.it">marco.sbaraglia@unibo.it</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_000"/>
        </contrib>
        <aff id="j_INFEDU_aff_000">Dipartimento di Informatica – Scienza e Ingegneria, Alma Mater Studiorum – Università di Bologna, Bologna, Italy
Laboratorio Nazionale CINI Informatica e Scuola, Italy</aff>
        <contrib contrib-type="author">
          <name>
            <surname>LODI</surname>
            <given-names>Michael</given-names>
          </name>
          <email xlink:href="mailto:michael.lodi@unibo.it">michael.lodi@unibo.it</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_001"/>
        </contrib>
        <aff id="j_INFEDU_aff_001">Dipartimento di Informatica – Scienza e Ingegneria, Alma Mater Studiorum – Università di Bologna, Bologna, Italy
Inria Sophia Antipolis-Bologna, Valbonne, France
Laboratorio Nazionale CINI Informatica e Scuola, Italy</aff>
        <contrib contrib-type="author">
          <name>
            <surname>MARTINI</surname>
            <given-names>Simone</given-names>
          </name>
          <email xlink:href="mailto:simone.martini@unibo.it">simone.martini@unibo.it</email>
          <xref ref-type="aff" rid="j_INFEDU_aff_002"/>
        </contrib>
        <aff id="j_INFEDU_aff_002">Dipartimento di Informatica – Scienza e Ingegneria, Alma Mater Studiorum – Università di Bologna, Bologna, Italy
Inria Sophia Antipolis-Bologna, Valbonne, France
Laboratorio Nazionale CINI Informatica e Scuola, Italy</aff>
      </contrib-group>
      <volume>20</volume>
      <issue>4</issue>
      <fpage>641</fpage>
      <lpage>682</lpage>
      <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>Introductory programming courses (CS1) are difficult for novices. Inspired by Problem solving followed by instruction and Productive Failure approaches, we define an original “necessity-driven” learning design. Students are put in an apparently well-known situation, but this time they miss an essential ingredient (the target concept) to solve the problem. Then, struggling to solve it, they experience the necessity of that concept. A direct instruction phase follows. Finally, students return to the problem with the necessary knowledge to solve it. In a typical CS1 learning path, we recognise a challenging “rollercoaster of abstraction”. We provide examples of learning sequences designed with our approach to support students when the abstraction changes (both upward and downward) inside the programming language, for example, when a new construct (and the related syntactical, conceptual, and strategic knowledge) is introduced. Also, we discuss the benefits of our design in light of Informatics education literature.</p>
      </abstract>
      <kwd-group>
        <label>Keywords</label>
        <kwd>abstraction</kwd>
        <kwd>abstraction rollercoaster</kwd>
        <kwd>necessity</kwd>
        <kwd>necessity mechanism</kwd>
        <kwd>necessity learning design</kwd>
        <kwd>learning design</kwd>
        <kwd>CS1 learning design</kwd>
        <kwd>productive failure</kwd>
        <kwd>problem solving followed by instruction</kwd>
        <kwd>PS-I</kwd>
        <kwd>P!S-I-PS</kwd>
        <kwd>CS1</kwd>
      </kwd-group>
    </article-meta>
  </front>
</article>
