The module introduces heuristic methods for solving complex optimisation problems such as routing, scheduling, timetabling that occur in the real world and cannot be solving in practical timeframes by mathematical techniques.It will first describe why some problems are hard to solve, and then go on to look in depth at a range of modern heuristic search methods such as Evolutionary Algorithms (including evolution strategies and other meta-heuristic search techniques) as local search methods such as tabu-search, simulated annealing.The module will describe appropriate experimental methodologies for testing and analysing stochastic search algorithms and introduce basic statistics for analysing their performance. Students will have the opportunity to put the methods into practice during lab sessions and use their knowledge to solve a real world problem in the coursework.