# CX 4230: Computer Simulation — Spring 2026 #
Dear student,
In the opening of his book, [_The nature of mathematical modeling_](https://www.cambridge.org/us/academic/subjects/physics/mathematical-methods/nature-mathematical-modeling?format=PB&isbn=9780521210508), Neil Gershenfeld poses the following questions (slightly edited by me):
> How would you:
> * Understand how the sound of a violin works? _Synthesize_ the sound of a violin?
> * Understand why traffic jams occur on a highway? _Relieve_ traffic jams on a highway?
> * Understand why it's raining today? _Predict_, or maybe _affect_, whether it will rain tomorrow?
> * Understand how people move through a supermarket checkout? _Help_ people move through a checkout faster?
> * Understand the speed of disease or misinformation (or both) in a social network? _Mitigate_ that spread?
> * Understand how a fish moves through water? _Optimize_ the body of a fish so it swims faster?
Each of these examples concerns a _system_. The questions ask how or why the system works as it does, and then imagines that knowledge will help manipulate its behavior (and not necessarily nefariously!). These tasks constitute the usual twin goals of nearly every science and engineering discipline.
**This course** is about mathematical and computational techniques that aim to help us pose and answer these kinds of questions. The framework involves building an abstract model of a system and then simulating that model on a computer.
This semester, we will focus on _discrete-event systems_. These are systems where the behavior of the system changes in response to an instantaneous and discrete _event_, e.g., the push of a button, a traffic light changing from red to green, a person lining up in a queue or being exposed to a virus.
The techniques you'll learn form foundations for (computer-based) **modeling and simulation** (M&S). The phrase "computer-based" appears parenthetically because, today, there is hardly any interesting model of a system that does not somehow involve computational algorithms as the main tool.
You undoubtedly have questions of your own. Let me see if I can address these, below. I hope you'll ask more when we meet, on **Tuesdays and Thursdays from 3:30-4:45 pm in Instructional Center** [[Google Maps]](https://maps.app.goo.gl/PBskdWw1h5ZVcqdi8) **Room 115**.
> Regarding math prerequisites, a good tour of concepts I will assume or only review in passing appear in the [[B+14] reading](#What-resources-will-I-need-Books-and-stuff), Chapter 2, pages 17-46.
## What will I learn? (Learning objectives.) ##
We hope 🙏 you develop some "taste" in formulating appropriate abstract models of systems; learn how translate these into software in a high-level programming language; conduct experiments using simulators you build; and develop some practical skills when working in an interdisciplinary team.
A list of high-level topics appears [below (scheduling and assignments)](#What-will-I-need-to-do-And-by-when-Scheduling-and-assignments).
## What should I know already? (Prerequisites.) ##
Formulating models is challenging, in large part because it is arguably more art than science. That means you need to have many methods at your disposal and will need to deploy them in creative and, perhaps surprising, ways. But to know many methods means you will need a diverse set of tools, including—but not limited to—calculus, linear algebra, probability, statistics, and programming.
Regarding programming, we will assume you are comfortable developing software in a high-level programming language and have taken the equivalent of at least two computing courses that involve programming. For coding demos and assignments, we will use Python. If you have not programmed in a high-level programming language, we recommend you do that before taking this class.
## What resources will I need? (Books and stuff.) ##
We will work primarily from the book, _Introduction to discrete-event systems_ by Cassandras and Lafortune ([CL21] hereafter). If it does not capture all the ideas we'll need, we will draw upon a variety of sources. However, we'll stick to those that do not require you to buy anything, e.g., because they are online and freely available to the public or to you via the Georgia Tech library. We will update the list below as needed.
**Main text: [CL21]** C.G. Cassandras and S. Lafortune (2021). Introduction to discrete-event systems. Springer, 3rd edition. [Online text via GT Library Proxy](https://galileo-gatech.primo.exlibrisgroup.com/discovery/fulldisplay?context=L&context=L&vid=01GALI_GIT:GT&vid=01GALI_GIT&docid=alma9914882766602947&tab=default_tab&lang=en)
**Supplemental texts or readings.**
- **[B+14]** H.-J. Bungartz et al. (2014). Modeling and simulation: an application-oriented approach. Springer. [Online text via GT Library Proxy](https://galileo-gatech.primo.exlibrisgroup.com/permalink/01GALI_GIT/1vc2ggp/alma9914166633002947)
- **[BK19]** S. L. Brunton and N. J. Kutz (2019). Data-driven science and engineering, Cambridge University Press. [Online text via GT Library Proxy](https://galileo-gatech.primo.exlibrisgroup.com/permalink/01GALI_GIT/1vc2ggp/alma9920142334302931)
- **[F00]** R. Fujimoto. Parallel and distributed systems simulation. [Chapters will be made available via Canvas site as needed.]
- **[G20]** N. Gershenfeld (2020-DRAFT). The nature of mathematical modeling. [Draft PDF chapters available online](http://fab.cba.mit.edu/classes/864.20/index.html)
- **[K98]** D. Knuth (1998). The art of computing programming, volume 2: semi numerical algorithms, O’Reilly. [Online text via GT Library Proxy](https://galileo-gatech.primo.exlibrisgroup.com/permalink/01GALI_GIT/4fs1pe/cdi_safari_books_v2_9780321635778)
- **[LP04]** L. Leemis and Steve Park (2004): Discrete-event simulation: a first course. [Materials will be made available as needed.]
- **[N10]** M. E. J. Newman (2010): Networks: An introduction. Oxford University Press. [Materials will be made available as needed.]
- **[S15]** H. Sayama (2015). Introduction to the modeling and analysis of complex systems. [PDF online](https://open.umn.edu/opentextbooks/textbooks/233).
I will let you know what to read and when as we proceed through the course and update the schedule accordingly (see below).
## What will I need to do? And by when? (Scheduling and assignments) ##
A list of topics and a timeline are available here as a [Google Sheet (read-only)](https://docs.google.com/spreadsheets/d/e/2PACX-1vQUYnQwu3LHroWjAYCYdhwJ4rsm3mJJyUuSMhem7eBhd815QFQz_lOVsrypNdIC1IJHbqiO360NAVTf/pubhtml?gid=179283179&single=true) and also embedded below.
> As long as you see "(DRAFT)" in the heading, please monitor for updates. It should be final by the second class meeting (Thursday, January 15).
<iframe src="https://docs.google.com/spreadsheets/d/e/2PACX-1vQUYnQwu3LHroWjAYCYdhwJ4rsm3mJJyUuSMhem7eBhd815QFQz_lOVsrypNdIC1IJHbqiO360NAVTf/pubhtml?gid=179283179&single=true&widget=true&headers=false"></iframe>
> You may wish to cross-reference this calendar with the official Georgia Tech Academic Calendar: [[link](https://registrar.gatech.edu/calendar/)]
**Assignments.** There are three components of your grade:
* In-class participation: 10%
* Exams (two midterms): 50%
* Mini-projects (two to three, individually or in pairs): 40%
The exams will be in person during class (closed book and device).
The mini-projects may be done alone or in pairs. The goal is for you to try your own hand at modeling and simulating!
## How do I contact you and the teaching staff? ##
Email is probably the worst method. Instead, please use the Ed Discussion forum, which you can reach through the course's Canvas site.
## What shouldn't you do? (Honor code) ##
All students are expected to follow the [Georgia Tech Honor Code](https://osi.gatech.edu/content/honor-code).
If you do a team mini-project, each student within the team must have a clearly identifiable contribution, and each student is required to develop software for the simulation model. Individuals or teams may discuss the project with other teams; however, no software may be disseminated between teams except when explicit permission is granted by the instructor.
In addition, you will need to use the Web or other sources for information as you work on your projects. You must cite these sources in your reports. For your code, you can use libraries but are expected to develop a substantial amount of code in constructing your simulator. The course staff can provide some guidance here on what will or won’t be allowed. (The spirit of this requirement is that you build a simulator yourself, rather than using existing simulation software simply to do some experiments.)
## Closing ##
So what's what I wanted to tell you by way of introduction. Let's talk more this spring. See you soon.
-- [Professor Richard (Rich) Vuduc](https://vuduc.org), on behalf of the teaching team for Spring 2026