Course: Modeling and Simulation, 3 Credit Hours
Time/location: Tues and Thurs, 2:00-3:15PM, Clough UG Learning Commons 152
Date range: January 10 - May 5, 2023
Canvas! And piazza.
Email is the worst method of contacting the teaching team. Instead, please use piazza, which you can also reach through the course Canvas site.
In the opening of his book, The nature of mathematical modeling, Neil Gershenfeld poses the following questions:
How would you understand: * How the sound of a violin works? Synthesize the sound of a violin? * Why traffic jams occur on a highway? Relieve traffic jams on a highway? * Why it's raining today? Predict whether it will rain tomorrow? * How people move through a supermarket checkout faster? * The speed of misinformation in a social network? Mitigate that spread? * How a fish moves through water? Optimize the body of a fish so it swims faster?
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).
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. Please have a look at [B+14] Ch. 2 for mathematical material you should be familiar with.
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, Julia, MATLAB, 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.
Almost all texts are available for free via the GT Library and marked as such. Otherwise, they are available elsewhere for free or will be provided to you. I will let you know what to read and when as we proceed through the course and update the course schedule accordingly.
You are not required to attend any classes, though historically students who come to class do better. So, I encourage you to come (and, please, interupt me, ask questions!). All classes will be presented from my iPad to the projector, recorded, and disseminated on Canvas. Live Zoom links for each lecture will also be posted, though I cannot monitor Zoom chat for questions during class.
The course material will (tentatively) be presented in this order:
The project is a team-based activity on a topic of your choosing. The goal is for you to try your own hand at modeling and simulating a system of personal interest to you! You will pick your own teams, which should have 2-4 students each. We will show you some sample projects. The final deliverable will consist of a project report, a short project video, and the code you’ve written.
Your final grade will be assigned as a letter grade according to the following scale.
There are no extra credit opportunities in this course, with the exception of a 1% grade-boost if 75% of the class fills the CIOS evaluation.
Late exams and homeworks are subject to a 10% penalty per day late.
No policy here, but do not disrupt or distract other students.
Georgia Tech aims to cultivate a community based on trust, academic integrity, and honor. Students are expected to act according to the highest ethical standards. For information on Georgia Tech’s Academic Honor Code, please visit http://www.catalog.gatech.edu/policies/honor-code/ or http://www.catalog.gatech.edu/rules/18/. Any student suspected of cheating or plagiarizing on an exam,or assignment will be reported to the Office of Student Integrity, who will investigate the incident and identify the appropriate penalty for violations.
Quizzes are intended to be individual assignments. 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. Such examples include asking for help or posting questions on or copying solutions from sites like StackOverflow.
Projects will involve team efforts and are expected to entail close collaboration within each team. However, 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.
If you are a student with learning needs that require special accommodation, contact the Office of Disability Services at (404) 894-2563 or http://disabilityservices.gatech.edu/, as soon as possible, to make an appointment to discuss your special needs and to obtain an accommodations letter. Please also e-mail me as soon as possible in order to set up a time to discuss your learning needs.
I acknowledge the help of Professor Rich Vuduc, who has re-imagined and recreated this course several times over the years. We are using some Spencer-altered slides from Prof. Vuduc where appropriate. I also acknowledge Professor Richard Fujimoto for creating this course, which has been a core CSE course since the School’s inception. We continue to Prof. Fujimoto’s texts and materials where appropriate.