As embedded systems grow more complex and as new applications such as IoT require many design constraints, sophisticated design space explo- ration techniques are essential in order to find the best compromise between different design goals and their tradeoff. This tutorial gives a structured insight into the field of design space exploration for embedded systems.