Ethics, Morals and Programming.

Review: The Philosophy of Computer Science
Stanford Encyclopedia of Philosophy

last updated: Thu Nov 29, 2018, 17:36:35


Discusses various ideas of abstraction.


  • Describes 3 epistemological arguments

    • CS is a Mathemical Discipline
    • CS is an Engineering Discipline
    • CS is a Scientific Discipline

Ontology of Software Programs

What are programs?

  • Programs as Mathematical Objects - Programs are symbolic objects that can be manipulate -- like mathematical expressions.

  • Dualism - Programs are abstract. Programs are Concrete. The the actual text of the program can be said to be concrete. The ideas in it are abstract. The ideas can be implemented many different ways. Does this make software relative or absolute?

  • Program vs Specification - Is the specification a program? If a specification is sufficiently detailed and an interpreter program is written, it may be able to on-the-fly go directly from specification to program. In this sense, the specification becomes a meta-program, but still a program. Another form of dualism.

  • The Canonical form of an algorithm, is its normal form. A canonical/normal form cannot be reduced any further.

  • Programming Languages as Axiomatic Theories - Are they mathematical theories? Are they set theories? Are they operational theories? All of the above? None?


  • Discusses patents and copyright issues. Ideas vs text.
  • Responsbility of programmers, errors, harm. Difficult for customers to provide requirements.