Discrete-Event Simulation: A First Course