Chapter 1 - Mission of mathematical logic:
Goals, objectives, methods.
Relation between mathematics and mathematical logic.
Examples of logical errors, sophisms and paradoxes.
Brief history of mathematical logic, discussing how problems mathematical logic faced and solved in its development, and how mathematical logic integrates further and further into programming.
Chapter 2 - Foundations of the set theory:
Set theory is the basis for development of languages.
Chapter 3 - Propositional logic:
Propositional logic studies the simplest yet the most important formal language.
Chapter 4 - First-order languages:
The language of propositional logic has limited tools, so we talk about more complex languages based on predicate logic. The language of predicate logic offers tools for full and exact description of any formal notions and statements.
Chapter 5 - Axiomatic method:
The axiomatic method makes it possible to solve many logical problems, errors and paradoxes. It is widely used in today's mathematics and the knowledge of it is vital for anyone using functional and logical programming languages.
Chapter 6 - Mathematical proof:
Discussion of the types of mathematical proof and how proof can be aided with a computer.
Chapter 7 - Algorithm theory:
To learn about the possibilities of the algorithmic approach and the limitations of calculations, one must know the rigorous definition of algorithms and computability. The module offers these definitions and defines algorithmically unsolvable problems. The module introduces the concept of algorithm complexity, which is an important factor when selecting algorithms to solve problems. The module also compares problems by complexity - this knowledge makes it possible to use any search algorithm to solve problem instead of search for the good algorithm.