Spring 2017 instructor. Professor Richard (Rich) Vuduc

This course is listed in OSCAR as “Computer Simulation - 26720 - CX 4230 - A.”

Access to course materials.

What’s up with this class?

This course gives you a hands-on experience in creating models for complex systems. Roughly speaking, a complex system is one in which many interacting entities give rise to aggregate behaviors or patterns. Examples include molecules in a biological or molecular system; the flocking behavior among migratory birds; segregation behavior among people; the spread of information or disease in human networks; and patterns of traffic flow in a system of cars on a road network; to name just a few.

You will learn several basic methods relevant to the modeling of complex systems and how to implement those models on a computer. The “end-product” of the course will be a series of projects of increasing complexity, in each of which you build a computer-based simulation of some kind. You’ll get to choose your own final project, which you will write and present to your peers; our hope is that this project is substantial enough to become a part of your coding portfolio, because life is too short to waste time on canned assignments!

Topics and schedule (tentative)

Topics. The list of topics we plan to cover includes:

  • Dynamical systems (discrete and continuous)
  • Cellular automata
  • Diffusion models
  • Queuing models
  • Discrete-event simulators
  • Agent-based simulation
  • Random number generators
  • Input and output modeling (statistics)
  • Parallel discrete-event simulation
  • Network models
  • Power law distributions
  • Partial differential equations and numerical solution techniques
  • Numerical optimization

However, we may expand (or contract) this list as time and interest permit.

Who should take this course?

This course is for any student who wants to build mathematical or computational models and simulations of real-world phenomena that vary over time (i.e., dynamical systems).

It is also a required course in the Computer Science degree’s Modeling and Simulation thread and an elective in the Computational-X Scientific and Engineering Computing minor, in the event you only care about doing things that are required or will otherwise help you high-tail it outta here (GT).

Prerequisites. Formally, here is what it says in OSCAR: (Undergraduate Semester level MATH 3215 Minimum Grade of D or Undergraduate Semester level MATH 3225 Minimum Grade of D or Undergraduate Semester level MATH 3670 Minimum Grade of D or Undergraduate Semester level MATH 3770 Minimum Grade of D or Undergraduate Semester level ISYE 3770 Minimum Grade of D or Undergraduate Semester level CEE 3770 Minimum Grade of D or Undergraduate Semester level ISYE 2028 Minimum Grade of D or Undergraduate Semester level BMED 2400 Minimum Grade of D or Undergraduate Semester level ECE 3077 Minimum Grade of D) and (Undergraduate Semester level CS 1331 Minimum Grade of C or Undergraduate Semester level CS 1372 Minimum Grade of C or Undergraduate Semester level CS 2316 Minimum Grade of C or Undergraduate Semester level CX 4010 Minimum Grade of C or Undergraduate Semester level ECE 2035 Minimum Grade of C or Undergraduate Semester level ECE 2036 Minimum Grade of C)

Huh? In more human terms, you should know:

  • some imperative programming language well (we will most likely use a mix of Python and MATLAB, though you’ll have more freedom for your final project);
  • calculus, probability, and linear algebra at an introductory level.

When? Where? (And other logistics)

The class meets Mondays and Wednesdays from 3:05-4:25 pm in the Instructional Center (IC), Room 109.

Office hours. Fridays 3-4 pm in Prof. Vuduc’s office, Klaus 1334

School supplies

  • Pencil, paper, and brain!
  • Laptop with wifi and a modern web browser, for use in class
  • Textbooks: The books for this class are both available for free online!
    1. (For roughly the first half of the course) Sayama, Introduction to the modeling and analysis of complex systems, Open SUNY textbook, 2015.
    2. (Roughly second half) Birta & Betz, Modelling and Simulation: Exploring Dynamic System Behavior. Springer, 2007. doi:10.1007978-1-84628-622-3 You may access an electronic version of this book for free online via the GT Library (GT login required).
  • Additional readings, to be provided during the course
  • Familiarity with git for version control. For the final project, you will need to maintain a project repository at

Philosophy and approach

The basic philosophy of this course is that you’ll learn the material best by a combination of reading, thinking, and most importantly, actively doing. Therefore, we will try to make in-class time “interactive.” This approach will only work if you prepare before class and participate actively during class, whenever asked.

The class will include a final project of your choosing. We hope you will take this project seriously, using it as a way to build up your project portfolio for jobs, grad school, and attracting mates, as the case may be.

Assignments and grading

There are three types of assignments in this course.

  1. Weekly labs. We will start—and often finish!—in-class lab assignments. These are, effectively, homework. There will be approximately one per week. You are allowed to work in a team with up to one other person and develop a single response, though you should still submit your labs (on T-Square) individually.
  2. Exams. There will be two exams (a midterm and a final). These are designed to assess your individual (as opposed to team) knowledge.
  3. Final project. You will put your knowledge into practice by developing a model and simulation of any phenomenon of interest to you! You can do this project individually or in teams of up to three. You will present these to your peers during the last two days of class.

Grading. The overall weighting of these assignments is:

  • Labs: 50%
  • Midterm: 15%
  • Final project: 20%
  • Final exam: 15%

Due date conventions. For all labs, a posted due date should be interpreted as “23:59 anywhere on earth” (11:59pm AOE). For example, if an assignment is due on January 23, as long as there is any place on the planet Earth where it is 11:59 pm or earlier, your submission is considered on time. (You are responsible for taking signal transmission delays into account, especially if you are connecting from outer space.)

For the ultimate in precision timing, here’s a handy AOE clock:

Late policy. You get three “late passes.” That is, for any milestone, you may submit the assignment up to 48 hours after the official due date without penalty. Any assignment submitted after you run out of passes or after 48 hours (with or without a pass) will get zero credit.

Collaboration policy. All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. Honest and ethical behavior is expected at all times. All incidents of suspected dishonesty will be reported to and handled by the Dean of Students office. Penalties for violating the collaboration policy can be severe; alleged violations are adjudicated by the Dean of Students office and not by the instructor.

Teams will usually be limited to no more than two people. Inter-team collaboration on assignments is encouraged at the “whiteboard” level. That is, your team may share ideas and have technical conversations with other teams, which we especially encourage on the Piazza forums, but each team must write and submit its own reports and code.