Thursday, January 29, 2015

Christianity and Computer Science: a Compatibility Check

(based on a talk I am giving at Glasgow University Christian Union today)



Are Christianity and Computer Science compatible? Can a Christian happily study and work in the area of Computing without excessive theological gymnastics or veiled hypocrisy? I want to claim the answer is yes, for the following reasons...

First, I give an existence proof. There are some high profile Computer Scientists who openly talk about their Christian faith. These include two Turing Award winners: Donald Knuth and Fred Brooks - essential reading on any CS curriculum!

Next, I want to look at three concepts that are familiar to Computer Scientists, and discuss how each of these concepts has an analogy in Christianity. If something makes sense in a computing context, it should also be reasonable in other contexts too.

1. Right and Wrong


This year is the 200th anniversary of the birth of George Boole, the father of symbolic logic.  In boolean logic, we codify true and false as absolute values and use logical operators to reason about truth.

Christianity (along with most religions) has a clearly defined framework of morality - right and wrong. This morality, which correlates strongly with human conscience, is very difficult to explain away with evolutionary biology.

2. Substitution

The notion of substitution is fundamental to the semantics of computing. For instance, term substitution is necessary for beta reduction in the lambda calculus. At higher levels, substitution is an essential part of shell scripting (e.g. sed) or programming (e.g. String.replace in Java).

Substitution is at the heart of the Christian faith. Martin Luther describes it as the "wonderful exchange" (admirabile commercium)- when sinners trust Christ and accept that He died in our place. Paul describes the crucifixion of Christ in these terms: "...made ... sin for us ... that we might made the righteousness of God in Him". [2 Cor 5:21].

3. Reboot

After an operating system software update (particularly one that involves shared libraries .dll or .so), users need to reboot their machines. This is a frequent source of annoyance. This procedure ensures that the old code is removed from the system and replaced by the updated version.

I suppose the Christian analogy is rebirth. Jesus told the premier theologian in Jerusalem: 'You must be born again'. [Jo 3:7]. This is much more significant than a reboot after a software patch---it's a whole new start to life - forgiven by God, trusting in Christ and living with the help of the Holy Spirit. [2 Cor 5:17].