<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:contributor>Hauswirth, Matthias</dc:contributor>
  <dc:creator>Moreno Santos, Igor</dc:creator>
  <dc:date>2023</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">A notional machine is a pedagogic device that abstracts away details of the semantics of a programming language to focus on some aspects of interest. A notional machine should be sound: it should be consistent with the corresponding programming language, and it should be a proper abstraction. Notional machines found in the computer science education literature are usually not evaluated with respect to their soundness. To address this problem, we first introduce a formal definition of soundness for notional machines. The definition is based on the construction of a commutative diagram that relates the notional machine and the aspect of the programming language the notional machine is focused on. Leveraging this formalism, we present a methodology for constructing sound notional machines and a similar methodology to reveal potential inconsistencies in existing notional machines. We apply these methodologies to build sound-by-construction notional machines and find inconsistencies in existing ones as well as propose solutions to these inconsistencies. Finally, we show that the same commutative diagram that describes a notional machine can be used also to design experiments to evaluate that notional machine as an educational assessment instrument.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/328768</dc:identifier>
  <dc:identifier>https://localhost:5000/ark:/12658/srd1328768</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/328768/files/2023INF023.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1328768</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-122140</dc:relation>
  <dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
  <dc:rights>License undefined</dc:rights>
  <dc:subject xmlns:ns1="xml" ns1:lang="en">Notional machines</dc:subject>
  <dc:subject xmlns:ns2="xml" ns2:lang="en">Programming education</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Computer science education</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">Programming languages</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Language semantics</dc:subject>
  <dc:subject xmlns:ns6="xml" ns6:lang="en">Equational reasoning</dc:subject>
  <dc:subject xmlns:ns7="xml" ns7:lang="en">Bisimulation</dc:subject>
  <dc:subject xmlns:ns8="xml" ns8:lang="en">Types</dc:subject>
  <dc:subject xmlns:ns9="xml" ns9:lang="en">Haskell</dc:subject>
  <dc:subject xmlns:ns10="xml" ns10:lang="en">Java</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns11="xml" ns11:lang="en">Sound notional machines : a foundation and its applications</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
