Presentation Open Access

Writing Clean Scientific Software

Murphy, Nicholas A.


DCAT Export

<?xml version='1.0' encoding='utf-8'?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:adms="http://www.w3.org/ns/adms#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dct="http://purl.org/dc/terms/" xmlns:dctype="http://purl.org/dc/dcmitype/" xmlns:dcat="http://www.w3.org/ns/dcat#" xmlns:duv="http://www.w3.org/ns/duv#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:frapo="http://purl.org/cerif/frapo/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:gsp="http://www.opengis.net/ont/geosparql#" xmlns:locn="http://www.w3.org/ns/locn#" xmlns:org="http://www.w3.org/ns/org#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:prov="http://www.w3.org/ns/prov#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:schema="http://schema.org/" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:vcard="http://www.w3.org/2006/vcard/ns#" xmlns:wdrs="http://www.w3.org/2007/05/powder-s#">
  <rdf:Description rdf:about="https://doi.org/10.5281/zenodo.3922957">
    <rdf:type rdf:resource="http://www.w3.org/ns/dcat#Dataset"/>
    <dct:type rdf:resource="http://purl.org/dc/dcmitype/Text"/>
    <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://doi.org/10.5281/zenodo.3922957</dct:identifier>
    <foaf:page rdf:resource="https://doi.org/10.5281/zenodo.3922957"/>
    <dct:creator>
      <rdf:Description rdf:about="http://orcid.org/0000-0001-6628-8033">
        <rdf:type rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
        <dct:identifier rdf:datatype="http://www.w3.org/2001/XMLSchema#string">0000-0001-6628-8033</dct:identifier>
        <foaf:name>Murphy, Nicholas A.</foaf:name>
        <foaf:givenName>Nicholas A.</foaf:givenName>
        <foaf:familyName>Murphy</foaf:familyName>
        <org:memberOf>
          <foaf:Organization>
            <foaf:name>Center for Astrophysics | Harvard &amp; Smithsonian</foaf:name>
          </foaf:Organization>
        </org:memberOf>
      </rdf:Description>
    </dct:creator>
    <dct:title>Writing Clean Scientific Software</dct:title>
    <dct:publisher>
      <foaf:Agent>
        <foaf:name>Zenodo</foaf:name>
      </foaf:Agent>
    </dct:publisher>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#gYear">2020</dct:issued>
    <dcat:keyword>Research software engineering</dcat:keyword>
    <dcat:keyword>Clean coding</dcat:keyword>
    <dct:issued rdf:datatype="http://www.w3.org/2001/XMLSchema#date">2020-06-29</dct:issued>
    <dct:language rdf:resource="http://publications.europa.eu/resource/authority/language/ENG"/>
    <owl:sameAs rdf:resource="https://zenodo.org/record/3922957"/>
    <adms:identifier>
      <adms:Identifier>
        <skos:notation rdf:datatype="http://www.w3.org/2001/XMLSchema#anyURI">https://zenodo.org/record/3922957</skos:notation>
        <adms:schemeAgency>url</adms:schemeAgency>
      </adms:Identifier>
    </adms:identifier>
    <dct:hasPart rdf:resource="https://doi.org/10.5281/zenodo.3491142"/>
    <dct:isVersionOf rdf:resource="https://doi.org/10.5281/zenodo.3922956"/>
    <dct:isPartOf rdf:resource="https://zenodo.org/communities/plasmapy"/>
    <owl:versionInfo>1</owl:versionInfo>
    <dct:description>&lt;p&gt;This presentation discusses strategies for writing clean scientific software.&amp;nbsp; Choosing meaningful variable names improves readability.&amp;nbsp; Functions should be short, do exactly one thing, and have no side effects.&amp;nbsp; High-level big picture code should be separated from low-level implementation details, for example by writing code as a top-down narrative.&amp;nbsp; Because comments often become out-of-date as code evolves, it is preferable to refactor code to improve readability rather than describe how it works.&amp;nbsp; Well-written tests increase the flexibility of code.&amp;nbsp; This presentation encourages us to think of code as communication.&lt;/p&gt;</dct:description>
    <dct:description>This work was created with support from National Science Foundation (US) grant 1931388 to the Smithsonian Astrophysical Observatory. A minor portion of this presentation was adapted from the paper entitled "Best Practices for Scientific Computing" by G. Wilson et al., which is available under the Creative Commons Attribution 4.0 International (CC BY 4.0) license.</dct:description>
    <dct:description>{"references": ["Albert, K.; Bouquin, D.; Farber, A.; and Hoover, R. (2019). Copyright Guide for Scientific Software. Zenodo. http://doi.org/10.5281/zenodo.3581326", "Feathers, M. (2004). Working Effectively with Legacy Code.", "Fowler, M. (2011). Eradicating Non-Determinism in Tests. https://martinfowler.com/articles/nonDeterminism.html", "Gamma, E.; Helm, R.; Johnson, R.; and Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-Oriented Software.", "Hicks, S. Code Is Communication. https://steven-j-hicks-speaking.netlify.app/code-is-communication/#1", "Martin, R. C. (2009). Clean Code: A Handbook of Agile Software Craftsmanship.", "Martin, R. C. (2018). Clean Architecture: A Craftsman's Guide to Software Structure and Design.", "McConnell, S. (2004). Code Complete: A practical handbook of software construction, 2nd edition.", "Wilson, G.; Aruliah, D. A.; Brown C. T.; Chue Hong, N. P.; Davis, M.; Guy, R. T. et al. (2014). Best Practices for Scientific Computing, PLoS Biology, 12, e1001745, https://doi.org/10.1371/journal.pbio.1001745", "Wilson, G.; Bryan, J.; Cranston, K.; Kitzes, J.; Nederbragt, L.; Teal, T. K. (2017). Good enough practices in scientific computing. PLoS Computational Biology, 13, e1005510, https://doi.org/10.1371/journal.pcbi.1005510"]}</dct:description>
    <dct:accessRights rdf:resource="http://publications.europa.eu/resource/authority/access-right/PUBLIC"/>
    <dct:accessRights>
      <dct:RightsStatement rdf:about="info:eu-repo/semantics/openAccess">
        <rdfs:label>Open Access</rdfs:label>
      </dct:RightsStatement>
    </dct:accessRights>
    <dcat:distribution>
      <dcat:Distribution>
        <dct:license rdf:resource="https://creativecommons.org/licenses/by/4.0/legalcode"/>
        <dcat:accessURL rdf:resource="https://doi.org/10.5281/zenodo.3922957"/>
      </dcat:Distribution>
    </dcat:distribution>
    <dcat:distribution>
      <dcat:Distribution>
        <dcat:accessURL>https://doi.org/10.5281/zenodo.3922957</dcat:accessURL>
        <dcat:byteSize>643129</dcat:byteSize>
        <dcat:downloadURL rdf:resource="https://zenodo.org/record/3922957/files/WritingCleanScientificSoftware.pdf">https://zenodo.org/record/3922957/files/WritingCleanScientificSoftware.pdf</dcat:downloadURL>
        <dcat:mediaType>application/pdf</dcat:mediaType>
      </dcat:Distribution>
    </dcat:distribution>
  </rdf:Description>
</rdf:RDF>
1,110
366
views
downloads
All versions This version
Views 1,1101,110
Downloads 366366
Data volume 235.4 MB235.4 MB
Unique views 1,0661,066
Unique downloads 343343

Share

Cite as