More on Computational Logic
Have a look to this paper: Computational Logic: Memories of the past and challenges for the future by John Alan Robinson
The field of Computational Logic covers all kinds of applications of logic in Computer Science. Computational Logic centers around the famous definition:
Algorithm = Logic + Control.
According to this view, algorithms consist of a problem description (the logic part) along with a strategy to carry out useful computations on this description (the control part). Computational Logic is devoted to the ideal of a programmer who concentrates solely on the description of the problem and spends no time at all on the actual computation mechanism. This unique paradigm of "declarative programming" leads to programs that are fast and simple to develop and easy to understand and maintain - features which are of rapidly increasing importance as todays computer systems grow more and more complex. Moreover, the rigorous use of logic revolutionizes the whole field of hard- and software verification. Instead of having to undergo a test phase, which necessarily cannot give more than just some confirmation that a program will do what it is supposed to do, the development of programs and systems that are guaranteed to be correct is the second ideal of Computational Logic.
The professional perspective
Todays information technology is witnessing a change - and the change is omnipresent. It is getting closer to our lives and plays a more active role in day-to-day activities with more and more people using it for diverse needs: From on-line transactions, on-line chat and e-mail to fancy browsers and real-time audio and video; computers and especially the Internet have taken the entire world by a storm. The Internet is a scientific invention that has really influenced the way we think and act. As all this increasingly transfuses into our lives, the more mind boggling it becomes for the computer scientists to handle various key issues involved in data security, transactions, network computing, network architecture, computer architecture, the complex softwares, distributed platforms and in short - every little aspect which affects our present day computer society. As our systems become smarter every day and as the major organizations vie for the maximum market share, present computer scientists are forced to understand the key issues even faster while making advanced sophistication look a triviality. Computational Logic is a unique paradigm to address problems in hardware and software design that are too complex to be solved by plain heuristics and rules of thumb. It is no longer the case that hardware can survive without a good software and vice versa. In fact they now have to grow synergetically as our systems become more complex. The presence of modern softwares and complex algorithms has forced the VLSI community to think about various key issues, and foremost among them is the way these hardwares have to be tested and verified besides designing them in a way that they are able to run todays software. This forces the scientists to dig out every aspect of the theory of design of such systems. It is now widely believed that only if these systems are verified by formal tools, certain invisible errors will no longer creep into our system and cause a catastrophe at the end. It has been observed that Computational Logic also plays a crucial role in understanding key problems in software. The advent of logic and constraint programming has led to a great success of declarative programming languages in expert systems, natural language processing, planning and acting, to name but a few. In today's world of wireless and mobile networking, distributed system protocols form a major aspect of system design. Removing unnecessary and redundant computations from such protocols and verifying such protocols is usually a formidable task. With the tools of computational logic the journey is easier. The field of software engineering is witnessing a multi-discipline approach to define the software system specifications formally and logics have shown immense guiding potential to the way formal specifications are studied. With these motivations to guide the heuristics and to have more emphasis on formal methods for software and hardware verification, Computational Logic covers the scope of the above mentioned areas.
Teaching goals
Based on a solid background in mathematical logic and its subareas (as normally taught in computer science and artificial intelligence courses) a student of the International Masters Programme will learn the engineering aspects of Computational Logic: how does a deductive system operate, what kind of logic-based grammar can be used to process natural language, how can techniques for the verification of software and hardware be applied in industry, what kind of implementation techniques are needed for logic-based systems, what formal methods are required for computer integrated manufacturing, how to apply formal methods for the layout of blue prints for machines and processes, and what problems occur in such applications.
Logic
All kinds of logic appear in applications of Computational Logic: propositional logic, classical predicate logic, and higher-order logic as well as non-classical logics such as modal, nonmonotonic and fuzzy logic.
Knowledge Representation and Reasoning
Describing a problem means to represent and reason about knowledge, which covers such diverse aspects as decision making, evidential reasoning, causal reasoning, case-based reasoning, reasoning by analogy, induction, abduction, and deduction, legal reasoning and natural language understanding and generating, reasoning about actions and planning, models for dynamic processes and systems, and hardware specifications.
Control
Computational Logic includes the design of abstract and real machines for declarative programming languages and the building of deduction systems and automated theorem provers. Searching being the fundamental computation mechanism in Computational Logic, the development of search control strategies and heuristics is a major issue.
Programming
Software engineering in Computational Logic includes logic programming, constraint programming, and functional programming, program analysis, program synthesis, and program transformation. The student will learn how to analyze problems and algorithms according to the properties of decidability, tractability, and complexity.