This course explores the concept of the thinking machine, capable of its own reasoning and extending itself beyond the limits of its programming. Core topics include extending a machine’s ability to search for its own solutions through the exploration of problem spaces and the use of reasoning through propositional and first-order logic. Advanced topics may include data mining, deep learning, artificial life and natural language understanding. Credits: 4