This course aims to provide students with a working knowledge of applying simulation techniques to model, simulate and study complex systems. It covers techniques in simulation model design, model execution and model analysis. Model design techniques include conceptual models, declarative models, functional models, constraint models, and multi-models. Model execution techniques include serial and parallel discrete-event simulation algorithms. Topics in model analysis include input-output analysis and experiment design. Students will have hands-on experience using a simulation package that we have developed.