Stochastic search algorithms are an important class of search techniques. They have proven valuable in a broad range of application areas, including in complex hardware design, solving NP-hard problems from scheduling and propositional logic, and in machine learning. They are also very useful in application domains where one needs to take multiple objectives (e.g., performance, weight, cost) into account when optimizing. This course is designed to give PhD students a thorough grounding in the methods, theory, mathematics, and algorithms needed to do research and develop challenging applications that use stochastic search algorithms. The topics of the course draw from probability theory, statistics, electrical engineering, computer engineering, stochastic local search, evolutionary computation, machine learning, combinatorial optimization, and artificial intelligence. Applications will also be covered as the course is project-oriented and is intended to give students hands-on experience with different stochastic search algorithms across a range of application areas.
Students entering the class with a pre-existing working knowledge of probability, statistics and algorithms will be at an advantage, but the class has been designed so that anyone with a strong numerical and computational background can catch up and fully participate. Course projects require students to have programming skills in either C/C++, Java or equivalent programming languages.