# Winter 2016

• ## Notes on Simulation and Modelling

These notes describe the development of a "gas station" model as a detailed example of an event-driven simulation program. Beware that this example program is written in an obscure (but vastly underappreciated!) programming language called Turing. However, this same "gas station" program was later translated into several other languages that you may be more familiar with, namely:
• ## Critical Points for Student's t-distribution and Standard Normal

Here is an online table of critical points for the Student's t-distribution and Standard Normal distribution. It has the same data as Table T.1 in our textbook except for simplifying the notation in the row and column headings.

Here is an online table of critical points for the Chi-Squared distribution. It has the same data as Table T.2 in our textbook except the column headings are inverted. Where our textbook labels each column by the area under the curve to the left of the critical point, this online table labels each column by the area to the right of the critical point.
• ## Notes on Generating Q-Q Plots

These notes provide some programming details on how to generate Q-Q Plots, including the case where the theoretical distribution is discrete (which the textbook claims is not possible). Two examples are provided to show how the technique can be applied to real empirical data.

## Information about Programming with CSIM

CSIM is an extension to C++ (or to C, since there are two versions available) with special features to make it easy to write simulation programs, including the generation of random variables with many commonly used distributions and a variety of built-in measurement constructs. Unlike "conventional" methods for programming an event driven simulation model (i.e, the time-driven or event-driven program structures) CSIM models rely heavily on concurrent programming techniques (similar to what you may have seen in CS153 and/or CS160), which in the simulation literature is known as the process-interaction  method for constructing a simulation model. What this means to you is that you must write a self-contained "program" (more properly a "process" or "thread") to describe the behavior of a single entity. The combined behavior of the simulation model is obtained by the magic of concurrent execution: we assume that each of the active entities are executing their respective "programs" concurrently, using the simulation clock and/or various inter-process communications programming constructs (such as signal/wait, mutual exclusion, etc) to coordinate their activities.

• ### CSIM Reference Manual

The complete CSIM reference manual is available online at the Mesquite Software website here.
• ### Using CSIM on CS Department Computers

This information has been updated following the installation of CSIM-19 in April 2003. The CSIM-19 installation package comes with many small example programs to illustrate the use of different language features. On the CS Department server "bass", they can be accessed through the directories:

 /usr/csshare/pkgs/csim_cpp-19.0/examples For C++ versions of the example CSIM programs /usr/csshare/pkgs/csim_c-19.0/examples For C versions of the example CSIM programs
CSIM/C++ programs can be compiled on the local CS department computers with the following one-line command or, if you prefer, a Makefile set up for the airport shuttle example below.

• ### A First CSIM Program - "Hello World"

Here is a discussion about some basic CSIM program features, using a trivial program that prints a series of "hello world" messages on the standard output.
• ### Large Sample CSIM Program - Airport shuttle bus system

Here is a CSIM program that simulates the shuttle bus to connect the airport terminal buildings with an offsite rental car center.
Here is a modification that uses mailboxes instead of events to control boarding.

• ### Small CSIM Example with facility sets and inspector methods

Here I've written two versions (here and there) of a small CSIM program about a group of processes who compete for control of a few "podiums" (represented by a facility set), where they can give a short speech (represented by printing a message on the std output). I purposely chose all times to be integer valued, so multiple processes often try to reserve the same facility "simultaneously", and thus show that the "winner" of such a competition is unpredictable. The second version of the program shows the effect of checking the status of the facility (which never causes your process to be suspended) before trying to reserve it (which will suspend execution of your process if it is occupied).