The demands of Computer Science are not always well-met by traditional Logic. The relatively young field of Categorical Logic is providing a suitably rich perspective in which to explore new developments in the Semantics of Computation, Program Logics and Type Theories, and through them the possibilities for new programming languages and methodologies. Precisely how to do this efficiently is a subject of intensive study involving several areas. The need for human interaction is recognised in most theorem-proving systems, often allowing the users to program strategies for proof through the medium of a programming language. Occasionally though, as in model checking, type inference or term rewriting, specific problems can be fully-automated.
Logic presents a guiding influence on the methodology and design of computing systems.
At the same time, trends in Computer Science help mould the development of Logic. The challenge of putting Logic to work has not only led computer scientists to new variants of the logics and to efficient techniques for establishing logical properties, but also uncovered new areas for logical and mathematical investigation. Design and analysis of algorithms is concerned partly with the design and analysis of efficient algorithms solving concrete problems, partly with identifying common patterns of problems and associated algorithmic paradigms leading to efficient solutions. Traditionally, research has focussed on deterministic sequential algorithms, but non-sequential and randomized algorithms are of increasing interest. The goal of Complexity Theory is to determine the amount of computational resources needed to perform certain computational tasks.