We can use computers to imitate, or simulate, the operations of a facility or process called a system. This imitation is a model of the system. Computer simulation has been used to analyze the operation and behavior of many kinds of systems, including computer networks, fast-food restaurants, city traffic, gold/silver mines, shipping ports, factories, and the stock market.
From 2003 to 2009, I taught a course on Computer Simulation for undergraduates and graduate students at the University of Mississippi. This course introduced the tools and techniques for writing computer programs that model and simulate systems. First the students learned to implement simulation programs using a general-purpose programming language, such as C, C++, or Java. Then they learned to use two simulation programming languages, Simscript III and GPSS. After completing this course, they could identify and model system entities; select appropriate probability distributions for random-number generation; and determine and collect meaningful statistics of system performance. Our textbook was Averill Law's Simulation Modeling and Analysis, which is the finest book on computer simulation I have seen, and an indispensable reference for students and practitioners.
My first exposure to computer simulation occurred in 1978 in a simulation course I took at Western Michigan University, but my real indoctrination to the subject began in 1986 when I joined CACI as a software developer. CACI owns the rights to, and maintains and enhances, the Simscript simulation programming language. I worked on the Simscript II.5 language, and I co-invented the Modsim simulation programming language, while working for CACI from 1986 to 1989. Although my focus there was on programming language design and implementation (see Programming Languages), I learned much from this experience about tools and techniques for developing simulation models.
I was asked by CACI in 2002 to lead the design of the successor to the Simscript II.5 language, and I gladly agreed. The successor was named Simscript III and released in 2005. Simscript III adds object-oriented and other features to the Simscript II.5 language.
Many computer simulations must accurately model the resources in systems and measure the effects on system performance of entities competing for limited resources. As a computer science professor at the University of Mississippi, I was fortunate to work with Chuck Jenkins, an outstanding graduate student with a keen interest in simulation. For his 2007 Master's thesis, Chuck developed a typology of resources, to facilitate the modeling of resources. His doctoral dissertation, completed in 2010, proposes a novel language for describing and modeling resources.
In 2014, I worked on software for TeamQuest Corp. for simulating computer systems.
C. M. Jenkins and S. V. Rice, "Resource Modeling in Discrete-Event Simulation Environments: A Fifty-Year Perspective," in Proceedings of the 2009 Winter Simulation Conference, Austin, TX, 2009 (pdf)
C. M. Jenkins and S. V. Rice, "A Typology for Resource Profiling and Modeling," in Proceedings of the 40th Annual Simulation Symposium, Norfolk, VA, 2007 (pdf)
S. V. Rice, "Braided AVL Trees for Efficient Event Sets and Ranked Sets in the Simscript III Simulation Programming Language," in Proceedings of the International Conference on High Level Simulation Languages and Applications, San Diego, CA, 2007 (pdf)
S. V. Rice, A. Marjanski, H. M. Markowitz, and S. M. Bailey, "The Simscript III Programming Language for Modular Object-Oriented Simulation," in Proceedings of the 2005 Winter Simulation Conference, Orlando, FL, 2005 (pdf)
R. Belanger, B. Donovan, K. Morse, S. Rice, and D. Rockower, Modsim: A Language for Object-Oriented Simulation, CACI Products Company, La Jolla, CA, 1989