There is an ongoing debate in computer science how algorithms should best be studied. Some scholars have argued that experimental evaluations should be conducted, others emphasize the benefits of formal analysis. We believe that this debate less of a question of either-or, because both views can be integrated into an overarching framework. It is the ambition of this paper to develop such a framework of algorithm engineering with a theoretical foundation in the philosophy of science. We take the empirical nature of algorithm engineering as a starting point. Our theoretical framework builds on three areas discussed in the philosophy of science: ontology, epistemology and methodology. In essence, ontology describes algorithm engineering as being concerned with algorithmic problems, algorithmic tasks, algorithm designs and algorithm implementations. Epistemology describes the body of knowledge of algorithm engineering as a collection of prescriptive and descriptive knowledge, residing in World 3 of Popper's Three Worlds model. Methodology refers to the steps how we can systematically enhance our knowledge of specific algorithms. In this context, we identified seven validity concerns and discuss how researchers can respond to falsification. Our framework has important implications for researching algorithms in various areas of computer science.
翻译:一些学者认为,应该进行实验性评估,而另一些学者则强调正式分析的好处。我们认为,这次辩论较少讨论一个要么或一个问题,因为两种观点都可以纳入一个总体框架。本文的雄心是发展这样一种算法工程框架,以科学哲学的理论基础为理论基础。我们把算法工程的经验性质作为一个起点。我们的理论框架建立在科学哲学中讨论的三个领域之上:本体学、认知学和方法。本体学将算法工程描述为与算法问题、算法任务、算法设计和算法执行有关的问题。Epistimology将算法工程知识的主体描述为一套规范性和描述性知识的集合,它存在于波普尔三世模型的世界三号中。方法指的是我们如何系统地增进我们对特定算法的知识的步骤。在这方面,我们确定了七个有效性问题,并讨论了研究人员如何应对伪造。我们的框架对计算机科学各个领域的研究算法具有重要的影响。