The aim of the course is that of analyzing the main concepts and methodologies which constitute the basis of “non-procedural” techniques for problem resolution. After discussing the basic aspects of the “problem solving model”, the main programming languages and environments for developing knowledge-based systems, as well as systems based on neural and evolutionary paradigms, will be presented. The final part of the course will be devoted to illustrate some real world applications, paying particular attention to intelligent classification systems.