In this course, we will learn how to model randomness, analyze its impact and make optimal decisions when it is present. We will cover stochastic modeling techniques, statistical principles, simulation, and decision-making under uncertainty. Using applications, we will demonstrate how we can use statistical principles to gain insight from data generated by systems with randomness. We will use simulation models to assess the performance of such systems and gauge how it changes in response to our decisions. We will introduce and use stochastic modeling techniques, such as Markov chains and Brownian motion, to build models of random phenomena and use these to gain understanding and guide decisions. As well as covering theoretical concepts, the course will put substantial emphasis in computational implementation of both simulation and decision-making problems.