231
Views
0
CrossRef citations to date
0
Altmetric
Research Article

Computing trust: on writing ‘good’ code in computer science education

ORCID Icon
Received 23 Jan 2022, Accepted 18 Aug 2023, Published online: 14 Oct 2023
 

ABSTRACT

What does it mean to produce trustworthy code for computer scientists? Based primarily on ethnographic fieldwork in an undergraduate computer science program in Singapore, this article explores what it means for computer science students to write ‘good code.’ In doing so, it explores the values that underlie ideas of trust in the computer science discipline. Drawing on the work of Rebecca Bryant, this article shows how, as students learn to become ‘good at’ writing code that is technically functional, aesthetically un-individuated, and decontextually efficient, they also learn to become ‘good’ computer scientists. These standards of good code are distributed across human and nonhuman actors and provide a framework for ‘trustless trust’ in code. That is, while computer science often assumes an omnipresence of mistrust, this article argues that the production of ‘good’ code and ‘good’ computer scientists works to build a system of distrust for computer scientists. At the same time, becoming a good computer scientist is intimately intertwined with students’ selfhoods, undermining the foundation of trustless trust even as the ideal of objectively ‘good’ and trustworthy code cuts this contradiction from view.

Acknowledgements

Thank you to students, professors, and administrators who contributed to this research. Thank you also to James Maguire, Kristoffer Albris, the two anonymous reviewers, Benjamin Staple, and the Code Ethnography Collective (CECO) for their valuable comments and suggestions for improving this article, and to Robin Whitaker for her support and guidance throughout my MA and PhD.

Disclosure statement

No potential conflict of interest was reported by the author(s).

Notes

1 Research for this article was approved by Memorial University of Newfoundland's Interdisciplinary Committee on Ethics in Human Research (#20140328-AR). Consent for participant observation in classes was obtained from the professor(s) and all students in the class were provided information in writing about my research and provided the opportunity to withdraw. Consent was otherwise negotiated and obtained on an individual basis. Some examples above are also discussed in my dissertation (Breslin Citation2018).

2 Pseudonyms are used throughout both for the name of the university where I conducted research and for research participants.

3 I have also drawn methodological insight from this research, alongside literature from feminist technology studies, in considering the multiple facets of education and subject-formation that need to be explored (see also Forsythe Citation2001; Fife Citation2005; Mackenzie Citation2006; Suchman Citation2007; Kho Citation2013).

4 The Thompson Hack is explained in detail by Allen (Citation2021), but briefly it introduces a backdoor and self-replicating piece of code (combined, making the ‘hack’) into the compiler via the machine-level code. The combination makes it next to impossible to detect and ensures its persistence in all versions of the code and any systems that use it.

5 An if statement is a basic programming structure that tells a computer to do ‘statements’ ‘if’ a certain ‘cond’ (condition) is met and ‘else’ (otherwise) do the other ‘statements.’

6 I am using algorithm in the common sense used in computer science: ‘an algorithm is any well-defined computational procedure that takes some value, or set of values, as input and produces some value, or set of values, as output’ as defined in Introduction to Algorithms text book (Cormen et al. Citation2009, 5). The focus on algorithms versus ‘code’ in considering efficiency is that it is the algorithmic facets of code that often take the longest time, but often these algorithms are also considered in the abstract (e.g. written in pseudocode) as opposed to their specific implementation in a specific programming language or for a specific machine.

7 CPU refers to Central Processing Unit. See, e.g. https://www.cpubenchmark.net.

8 Computer science knowledge is also generally taught as ahistorical. Often the authors or inventors of particular theorems or technical objects are discussed. However, the social, material, and historical circumstances that shaped certain knowledges and practices are excluded from view (Breslin Citation2018; Mayhew and Patitsas Citation2021).

9 See also (Nespor Citation1994) who discusses how students selves become part of distributed networks as part of education, in the discipline of physics in this case.

10 Indeed, blockchain may be seen as a crystallized representation (or ‘figuration,’ Haraway Citation1997, 11) of these values.

Additional information

Funding

This research was supported by the Social Sciences and Humanities Research Council of Canada and Memorial University of Newfoundland.

Log in via your institution

Log in to Taylor & Francis Online

PDF download + Online access

  • 48 hours access to article PDF & online version
  • Article PDF can be downloaded
  • Article PDF can be printed
USD 53.00 Add to cart

Issue Purchase

  • 30 days online access to complete issue
  • Article PDFs can be downloaded
  • Article PDFs can be printed
USD 356.00 Add to cart

* Local tax will be added as applicable

Related Research

People also read lists articles that other readers of this article have read.

Recommended articles lists articles that we recommend and is powered by our AI driven recommendation engine.

Cited by lists all citing articles based on Crossref citations.
Articles with the Crossref icon will open in a new tab.