Vladimir Lifschitz: Teaching

Spring 2019

CS 378: Declarative Programming

Traditionally, the programmer solves a computational problem by designing an algorithm and encoding it in an implemented programming language. Research in artificial intelligence and computational logic has led to an alternative, "declarative" approach to programming, which does not involve encoding algorithms. A program in a declarative language only describes what is counted as a solution. Given such a description, a declarative programming system finds a solution by the process of automated reasoning. In this class, you will learn to use the declarative programming tool CLINGO, which has found applications in many areas of science and technology. You will study the input language of CLINGO and the theory behind it, and you will write several programs in that language. The lecture notes that the instructor will post online will be used in place of a textbook.

CS 388L: Introduction to Mathematical Logic

Course Description



Tell me and I forget. Show me and I remember. Involve me and I understand.

(Chinese proverb.)

Rather than knowing the correct rules of thought theoretically, one must have them assimilated into one's flesh and blood ready for instant and instinctive use. Therefore, for the schooling of one's powers of thought only the practice of thinking is really useful.

The imparting of factual knowledge is for us a secondary consideration. Above all we aim to promote in the reader a correct attitude, a certain discipline of thought.

If you are unable to solve a problem, you should not despair. The "Socratic method of teaching" does not aim at drilling people in giving quick answers, but to educate by means of questions.

(From Problems and Theorems in Analysis by Pólya and Szegö.)

Teaching by the Moore method

Back to Lifschitz's web page