This course aims at providing the understanding of artificial intelligence symbolic approach, by presenting both knowledge representation and reasoning aspects. On the knowledge representation side it mixes logical and production systems based representations. On the inference side it discusses decision making by means of logical languages (with a focus on resolution based reasoning) and the inference possibilities offered by forward chaining (data-driven) rule-based programming. Students should be able to formalize knowledge and use automated reasoning methods in order to develop knowledge based systems adapted to specific applications.