# CS 8803 Computational LogicSpring 2005

### Pete Manolios

 Office: Office hours: Email: Phone: CCB 217 Monday & Wednesday 2PM-3PM, or by appointment manolios@cc 404-894-9219

### Class Information

 Location: Meeting times: Web page: Oscar info: CCB (College of Computing) 53 Monday/Wednesday, 4:35PM-5:55PM http://www.cc.gatech.edu/~manolios/courses/Computational-Logic/2005-Spring/ CS 8803 - COL

### Course Description

This course covers fundamental aspects of computational logic, with a focus on how to use logic to verify computing systems, and can be used as a breadth course for Software Engineering and Information Security. Students will learn the fundamentals of classical logic, induction and recursion, program semantics, rewriting, and theorem proving. Students will use the ACL2 system to model and verify software, hardware, and security systems. ACL2 consists of a functional programming language, a logic, and an industrial-strength theorem prover that has been used to prove some of the largest and most complicated theorems ever proved about commercially designed systems.

### Why would you want to take this class?

Here are three reasons.
• You are interested in the foundations of computation and want answers to questions such as:

• What rules govern the behavior of computation?
• How do we specify requirements for systems and verify that they are met?

Formal logic forms the foundations of software, security (along with cryptography), and, more generally, computation. Logic (along with set theory) forms the foundation of all of mathematics.

• You are interested in how to use one computing system to reason about another. The sheer complexity of systems makes it impossible to reason about them without assistance from another computing system. The theoretical and practical questions that arise can provide several lifetimes worth of intellectual challenges. For example, how efficiently can we reason about propositional logic, the simplest of all logics? This is essentially the famous P=NP problem.

• You are interested in building dependable systems. Computing systems are ubiquitous, controlling everything from cars and airplanes to financial markets and the distribution of information. Many of these systems interact with changing environments in complex ways that are often not fully understood and which sometimes lead to disastrous consequences, economic and otherwise. The recent PITAC (President's Information Technology Advisory Committee) report makes it clear that building dependable software systems is one of the major challenges facing the computing field.

We have become dangerously dependent on large software systems whose behavior is not well understood and which often fail in unpredicted ways.

Formal methods applied to the design and testing phases of development can be practical and economical as they enable one to exhaustively check parts of a design, often revealing the presence of subtle bugs that would otherwise go undetected. Industry is starting to notice, with companies such as Intel, IBM, AMD, Microsoft, Motorola, Cadence, Synopsis, etc. all engaged in efforts to build reliable systems using formal methods based on computational logic.

### Teaching Philosophy

My goal is to help you develop into critical, independent-thinking, and creative scientists. In this course, I will try to do this by selecting material that I expect will be relevant for most of your careers and by giving you opportunities to grapple with and gain technical mastery of some of the most important ideas in computational logic. You gain technical mastery by doing and, for the most part, this occurs outside of the class. My role is to create the opportunity for learning; it is only with your active participation that learning truly takes place.

During lectures I try to explain, clarify, emphasize, summarize, encourage, and motivate. I can also answer questions, lead discussions, and ask questions. In class you have an opportunity to test your understanding, so things work best if you come to class prepared. We can then focus on the interesting issues, rather than on covering material that you could just as easily find in the book.

### Questions?

If you have any questions, please come by and see me, call, or send email. My contact information appears above.