# CX 4230: Computer Simulation — Spring 2023 # 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 class** is a survey of elementary 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. Together, the techniques form foundations of (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 computation 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 Scheller 200**. > Regarding math prerequisites, a good tour of concepts I will assume or only review in passing appear in the [[B+14] reading](https://hackmd.io/eaTv5v9gQ5ym-vXPvvtoJg#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)](https://hackmd.io/eaTv5v9gQ5ym-vXPvvtoJg#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 assume you are comfortable developing software in a high-level programming language. Acceptable languages for use in the course are C, C++, Java, Python, or the like. Ideally you will have taken the equivalent of at least two computing courses that involve programming. While no specific programming language is required in this course, all students will be required to develop software in some high-level language. If you have not programmed in a high-level programming language, we recommend you take a programming course before taking this class. ## What resources will I need? (Books and stuff.) ## There is no single book that captures all the ideas we'll need, so we will draw upon a variety of sources. The good news is that these are all available online—often via the Georgia Tech library and as downloadable PDFs—so you won't need to buy any books! Here are examples of some of the sources we'll refer to, and note the "code" shown to the left of each reference. - **[B+14]** H.-J. Bungartz et al. (2014). Modeling and simulation: an application-oriented approach. Springer. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16967858790002947&institutionId=2947&customerId=2930) - **[BA13]** L. G. Birth and G. Arbez (2013). Modelling and simulation: exploring dynamic system behaviour. Springer. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16969431030002947&institutionId=2947&customerId=2930) - **[BK19]** S. L. Brunton and N. J. Kutz (2019). Data-driven science and engineering, Cambridge University Press. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16967818220002947&institutionId=2947&customerId=2930) - **[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) - **[H15]** N. Higham, ed. (2015). The Princeton companion to applied mathematics. [Limited access online via GT Library proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16980683520002947&institutionId=2947&customerId=2930) - **[K98]** D. Knuth (1998). The art of computing programming, volume 2: semi numerical algorithms, O’Reilly. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16969431080002947&institutionId=2947&customerId=2930) - **[N10]** M. E. J. Newman (2010): Networks: An introduction. Oxford University Press. - **[O09]** D. P. O’Leary (2009). Scientific computing with case studies. SIAM. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16967818250002947&institutionId=2947&customerId=2930) - **[Sa15]** H. Sayama (2015). Introduction to the modeling and analysis of complex systems. Open SUNY Textbooks. [Free download](https://milneopentextbooks.org/introduction-to-the-modeling-and-analysis-of-complex-systems/) - **[St15]** S. Strogatz (2015). Nonlinear dynamics and chaos. Taylor & Francis. [Online text via GT Library Proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16967818230002947&institutionId=2947&customerId=2930) - **[SB09]** J. A. Sokolowski and C. M. Banks, eds. (2009). Principles of modeling and simulation: a multidisciplinary approach. John Wiley & Sons, Inc. [Limited access online via GT Library proxy](https://na03.alma.exlibrisgroup.com/view/action/uresolver.do?operation=resolveService&package_service_id=16980680840002947&institutionId=2947&customerId=2930). 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-1vRRx-E2WffbQ55KQbZN7n8OtDg8AcVgczwqRvOre96O5UInjg9OD7KuFzyTDa2tXnZqeigqEFBP2mDD/pubhtml?gid=592055999&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 13). <iframe src="https://docs.google.com/spreadsheets/d/e/2PACX-1vRRx-E2WffbQ55KQbZN7n8OtDg8AcVgczwqRvOre96O5UInjg9OD7KuFzyTDa2tXnZqeigqEFBP2mDD/pubhtml?gid=592055999&amp;single=true&amp;widget=true&amp;headers=false" width="1024" height="768"></iframe> **Assignments.** There are two major components of your grade: * Quizzes: 50% * Mini-projects: 50% We are currently planning at most six quizzes throughout the semester, roughly once every two weeks. However, we will drop your lowest quiz score (so each of six quizzes is effectively 10% of your final grade). These quizzes will be online, multiple choice, and timed; we will release them on Friday mornings and you will be able to take them any time until the following Tuesday before class. The purpose of these quizzes is to make sure you are absorbing the class material as we go. The 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). Quizzes are intended to be individual assignments (and may be proctored using Honorlock). They will generally be open-book and open-internet, so you don’t need to memorize everything. However, you should not directly collaborate with others—which includes asking for help, posting questions on or copying solutions from sites like Stackoverflow or Chegg, for instance. 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 2023