Courses I Want to Teach: Prolog for Philosophers

15 December 2018

I’m merely dabbling in Prolog so far, but I’d love to teach a course on programming with Prolog to philosophy students. As the most famous and influential logic programming language, Prolog allows to combine the philosophical interest in formal argumentation with computer science. Someone else might suggest that taking a course on programming makes philosophers more employable, but for that I would teach them Python. My motivation stems from the possibility of introducing a foreign element into philosophy - with productive effects.

Prolog is foreign to the current curriculum of philosophy students in multiple ways. Tool use generally remains the exception in philosophy departments.[0] For text-processing and presentations, Word and PowerPoint remain the standard, with the occasional more formally oriented philosopher using LaTex. A computational tool like Prolog with its advanced technology from the seventies represents a different take on how to do philosophy. The technology enables you and creates new restrictions. You have to lean forward in your armchair to type.

Teaching programming invites student to participate in different ways than usual. In a great philosophy class you get a conversation going back and forward, but some students are more reserved or find it hard to express their thoughts on the spot. Consequently, I found myself positively surprised with the quality of some essays after students remained monosyllabic for the most part of the term. I wish I would have seen their contribution in more ways. When we code you can participate by doing your exercise well and sharing the code with the rest of us. Doing more than listening and talking is truly foreign in to the current teaching philosophy, and for good reasons. Philosophical practice relies upon the capacity for conversational and informal argumentation. But introducing variety won’t be to the detriment of developing such argumentative philosophical abilities, especially with a logic programming language which allows to find formal proofs.

I hope that seeing logic and formal argumentation from a perspective that connects more directly with practical issues, be it only the issue of keeping in mind where to close parentheses and put a period, allows a different access to these topics. Programming is a more hands-on approach to the most abstract topics of philosophy. By bridging this gap, more students will find a way to relate to hard philosophical questions. In the best case, they will go on to change the discipline and introduce new and original ways of advancing it - and philosophy is in dire need of innovation.

There is also another side to teaching philosophy students Prolog, which I’d enjoy greatly. In addition to Prolog for philosophers, I want to cover the philosophy of Prolog. As a logic programming language, Prolog represent its own somewhat marginalised approach to computational thinking. A closer look at the programming language raises questions which allow for philosophical takes: Why does unification play such a central role in Prolog? How strict is the distinction between declarative and imperative programming? There remains plenty of room for traditional philosophical discussions.

[0] I hope this statement leads to a lively discussion about natural language as a cognitive tool.