Towards Critical Abstraction for Software
Abstract
Abstraction in computer science is typically understood as the process of generalization that removes non-essential details and captures key shared characteristics across multiple instances. This is a limited view of abstraction when contrasted with fields like art, architecture, media theory, or philosophy, where abstraction has been repeatedly re-examined and re-imagined, providing space for self-reflection and critical discourse. To show that abstraction can play a similarly critical role in computer science, we examine three pairs of related software artifacts where one part of each pair uses abstraction in a conventional way, while the other invites critical reflection. We demonstrate how different modes of abstraction express critical ideas about computing, in the form of software artifacts. Taken together, we argue that pluralistic approaches to abstraction can make computing a more self-reflective field aware of the methodological and sociopolitical issues it faces.