The course follows a conceptual pathway along the fundamental principles of the discipline. It is divided into two parts: the first part is an introduction to classical formal logic, both propositional and first order, with a special focus to the aspects of automatic calculus, while the second part is an introduction to the basic principles of machine learning and self-organizing systems.