# Syllabus - CSE 6730 (Modeling and Simulation) / CX 4230 (Computer Simulation), Spring 2021
> This syllabus is up-to-date as of April 22, 2021.
**Logistics due to the on-going pandemic:** This class is virtual but offered in a **remote-synchronous** mode. We will hold live sessions, which you are encouraged to attend. However, we will record these sessions, too, in case you miss class, reside in a timezone that makes attending the live sessions difficult or impossible, or otherwise need to or prefer to watch "offline."
> Although these sessions may be viewed at any time, the class will proceed at a particular place, with assignments due on a particular schedule as explained below.
* **Meeting time** (synchronous, but recorded): Tuesdays and Thursdays from 2-3:15 pm ET
* **Connection method**: See the course Canvas site for details.
* **Instructor:** [Professor Richard Vuduc](https://vuduc.org)
* Office hours: TBD
* **Teaching assistant(s):**
* TBD
**Piazza is the preferred mode of communication; see below.**
## Course description ##
The goal of modeling and simulation (M&S) is to analyze, understand, and design time-varying systems. This course will provide students with knowledge and skills to formulate and solve modeling and simulation problems. A second goal is to develop the necessary skills to create efficient simulation software in a high-level programming language such as C, C++, Java, or Python.
We believe M&S is a topic that is best learned by doing. M&S projects usually involve a team, often including individuals from different disciplines. The course will include projects where topics and skills are developed in the context of solving problems. This approach emulates how modeling and simulation is applied in practice.
Learning objectives for the course include giving students the knowledge and skills to (1) formulate application domain problems suitable for solution using M&S (2) create efficient simulation software in a high-level programming language, (3) use this software to address application domain problems, and (4) demonstrate skills in working in interdisciplinary teams.
Much of the course is organized around the major steps in the life cycle of a modeling and simulation project, from problem formulation to development and application of the simulation model, to reporting results. Topics covered in the course are divided into two main parts:
* **Part I: Dynamical systems:** The material in this part will focuses on mathematical modeling of continuous- and discrete-time dynamical systems. This class of systems can often be described by mathematical formulae involving differential (continuous case) or difference (discrete case) equations.
* **Part II: Discrete-event systems:** This part focuses on the discrete-event simulation modeling paradigm. Both sequential and parallel/distributed execution of discrete event simulation techniques will be covered.
## Prerequisites ##
We assume you are comfortable developing software in a high-level programming language. Acceptable languages for use in the course are C, C++, Java, or Python. Ideally you will have taken at least two computing courses that involve programming. While no particular 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.
No background in modeling and simulation is assumed. Basic knowledge of calculus, linear algebra, probability, and statistics is assumed, though you can likely review what you need to know during the course if you are "rusty."
## Course materials ##
The bulk of the course will be based on material from the following textbooks.The first is an open textbook and available online. The second is a "video textbook" available for viewing for free on YouTube. The third is available electronically and free of charge from the Georgia Tech library. The fourth may be purchased through standard outlets such as Amazon.
* H. Sayama, [Introduction to the Modeling and Analysis of Complex Systems](http://bingweb.binghamton.edu/~sayama/textbook/), Open SUNY Textbooks, 2015.
* R. Ghrist, _Applied Dynamical Systems_, Volumes [I](https://www.youtube.com/playlist?list=PL8erL0pXF3JZqdlYIfTTyibOqSqwzRdVV), [II](https://www.youtube.com/playlist?list=PL8erL0pXF3JbIruccjBn9x2VMVkyWV3-G), [III](https://www.youtube.com/playlist?list=PL8erL0pXF3JbrhqEl7_h6v2wSscLS7dXq), and [IV](https://www.youtube.com/playlist?list=PL8erL0pXF3Jan0CZUILBFM8hVotajx7F5).
* L. G. Birta and G. Arbez, _Modeling and Simulation: Exploring Dynamic System Behavior_, Springer, 2007 (available online from the Georgia Tech library).
* R. M. Fujimoto, _Parallel and Distributed Simulation Systems_, Wiley Interscience, 2000.
Any additional readings will be provided "on-demand" from week to week.
## Schedule ##
This schedule will be "refined" during the first week of the course. See the link below:
[Course schedule for Spring 2021](https://docs.google.com/spreadsheets/d/e/2PACX-1vQYLVaK_RzsJv9bA7OrC-v2djbsnp-WuI-ERc6JxBsWmsbi1HI40jaD2GSYzTz4DDS44x268WyKPjfj/pubhtml?gid=421259020&single=true)
> The content and dates are subject to change, though we will adhere to assignment and exam dates unless extensions are required due to unforeseen circumstances.
## Assignments ##
Your grade will be based on three categories of assessments:
* **Quizzes (6 x 5% each = 30%)**: Approximately once every two weeks, there will be a quiz intended to check that you are keeping up with the material.
* **Midterm Exam (25%)**: There will be one midterm exam halfway through the course that assesses your mastery of the material in the first half of the course. _Tentatively, we plan to use Honorlock for proctoring._
* **Final project (45%)**: You will work in teams of up to three students each on an open-ended final project of your choosing. It should involve concepts from the class and require building a model and a computer-based simulation of some system of interest. You will need to submit a project proposal (0%, but required for a grade), a project checkpoint (5%), and a final report (40%).
> There will not be a final exam during exam week. Instead, the final project is due at the end of the semester.
## Piazza ##
The main way for us to communicate is the online discussion forum, hosted on Piazza. We will make many course announcements and host all “offline” course discussion there. Therefore, it is imperative that you access and refer to this forum when you have questions, issues, or want to know what is going on as we progress. You can post your questions or issues anonymously, if you wish. You can also opt-in to receive email notification on new posts or follow-up discussions to your posts.
Here are some tips to improve the response time for your questions. First, make your post public (rather than private to the instructors), so that anyone in the class can see and respond to your post. Secondly, be sure to tag your post with the relevant notebook assignment so we can better triage issues. (In Piazza, a "tag" is also called a "folder," though unlike desktop folders, you can place a post in more than one folder.)
What if your question is private in nature? In that case, you can make your post private to the instructors. (After pressing "new post" to create the post, look for the "Post to" field and select "Individual student(s)/instructor(s)" and then type "Instructors" to make the post visible only to all instructors––it’s important to include all instructors so that all of them will see and have a chance to address your post, which will be faster than addressing only one person.)
## Graduate vs. undergraduate sections ##
Both the graduate and undergraduate sections will meet together for lectures. Students in the graduate and undergraduate sections will be graded on separate, independent grade scales. Graduate student projects will be expected to have more stringent requirements than undergraduate student projects.
In particular, for the final project, graduate student projects should have a stronger research component and be designed to answer specific research questions, aiming for results comparable to a conference or journal publication. They should also include a more comprehensive literature review of related materials than that required for undergraduate student projects.
## Collaboration, Citing, and Honor Code ##
All students are expected to follow the Georgia Tech Honor Code. 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.
You will need to use the Web or other sources for information. You must cite these sources in your reports. All code must be developed on your own except materials distributed to the class or other resources noted in assignment handouts. Utilizing code from the Web without explicit permission from the instructor violates the Honor Code and is strictly prohibited. Proper citation is required if you do use code provided by other sources.
Software and other materials from projects used in other courses, even if developed by yourself, or previous offerings of this course similarly cannot be used for class projects in this course except with explicit permission from the instructor.
> Rev 1.0 [2021.01.14]: Initial release