The aim of the course is to provide a working knowledge of logic for students of computer science and related disciplines. The course will examine basic notions such as statements and propositions, contradictions and arguments, truth and proof. We will look at appropriate logical concepts and techniques for formalising these notions.
The major part of the course will be concerned with the propositional calculus, a simple logical language that is widely used in both mathematics and computer science. The propositional calculus can be used to express sets of propositions and to determine the validity of simple arguments (i.e. whether or not a particular statement is a consequence of some other statements). One simple procedure for determining validity that we shall look at is the method of truth-tables. This is a systematic means of examining the truth conditions of expressions of the calculus. We shall go on to look at other techniques that allow us to determine validity without appeal to the notion of truth. Here, the validity of an argument is determined according to its form rather than its its content. Several such methods will be covered, including: axiomatic logic, semantic tableaux, and natural deduction.
While the propositional calculus is appealing in its simplicity, it has certain limitations. The calculus lacks the expressive power needed to name individual objects or talk about relationships between individuals. Later in the course we will look at a more expressive language, the first order predicate calculus, that overcomes some of these limitations. We will see whether and how the methods developed for the propositional calculus may be extended to the case of the predicate calculus.