CMPUT 498/651 - Program Synthesis, Heuristic Search and Artificial Life

Overview

Recent breakthroughs in Artificial Intelligence (AI) stem from clever algorithms, large volumes of training data and powerful hardware. Machine learning often learns parameters of human-designed algorithms (e.g., neural network weights). In this course we will learn programs implementing algorithms. This type of machine learning is known as the program synthesis and we will explore a variety of such methods. The appeal of program synthesis lies in the discovery of novel algorithms which extend beyond human designs. Additionally, by appropriately defining the space of algorithms we seek to synthesize human-understandable algorithms, taking a step towards explainable AI. In this course we will use a classic subfield of AI, heuristic search, as our testbed. To synthesize new heuristic search algorithms we will set up an Artificial Life (A-life) environment where agents use heuristic search for survival. The course is seminar-style and project-based. Students will be analyzing and presenting papers and working in teams on their term projects.

Objectives

  • Gaining theoretical and practical understanding of classical and contemporary real-time heuristic search techniques, evolutionary computing and machine learning
  • Getting hands-on experience in designing, implementing and evaluating automatically configured/designed heuristic-search algorithms

Course Work

  • Paper Synopses
  • Paper Presentation
  • Term Project