CS445 - Mathematical Modeling and Simulation

Tuesday/Thursday 3-4:15pm, Streibel Hall Room 115

A study of various mathematical applications for digital computers, including the modeling, simulation and interpretation of the solution of complex systems.


Course announcements will be posted here.
  • 09/09/2014 - I am traveling to Slovenia and Baltimore so I will be out of my office from September 11-25th. There will be no class Sept. 11th, but David Apostal will be covering the course on Sept 16, 18, 23 and 25. There will be a programming assignment on moodle starting Sept. 11 and due Sept. 18th.

Contact Information

Email and Phone:

Email is the best and most reliable way to contact me.

Office Hours:

Streibel Hall 220
To be decided and by appointment.


Department of Computer Science
University of North Dakota
Streibel Hall Room 220
3950 Campus Road Stop 9015
Grand Forks, North Dakota 52802-9015
Date Topic Lecture Notes/Lab Files Reading
08/26/2014 Course Information
08/28/2014 Basic Simulation Modeling, Part 1 Chapter 1
09/02/2014 Basic Simulation Modeling, Part 2 cs445-01-basic_simulation.pdf Chapter 1
09/04/2014 Lab Chapter 2
09/09/2014 Basic Simulation Modeling, Part 3 cs445-02-basic_simulation_2.pdf Chapter 2
09/11/2014 Lab
09/16/2014 Modeling Complex Systems cs445-03-modeling_complex_systems.pdf Chapter 3
09/18/2014 Lab
09/23/2014 Modeling Complex Systems Chapter 3
09/25/2014 Lab
08/30/2014 Review of Probability & Statistics Chapter 4
10/02/2014 Lab
10/07/2014 Review of Probability & Statistics Chapter 4
10/09/2014 Lab
10/14/2014 Review of Probability & Statistics Chapter 4
10/16/2014 Review of Probability & Statistics cs445-04-review_of_prob_stats.pdf
10/21/2014 Test 1 Review
10/23/2014 Test 1
10/28/2014 Buildling Valid Simulation Models Chapter 5
10/30/2014 Lab
11/04/2014 Selecting Input Probability Distributions Chapter 6
11/06/2014 Lab
11/11/2014 No Class - Veteran's Day
11/13/2014 Lab
11/18/2014 Random Number Generators Chapter 7
11/20/2014 Lab
11/25/2014 Generating Random Variates Chapter 8
11/27/2014 No Class - Thanksgiving Break
12/02/2014 Output Data Analysis for a Single System Chapter 9
12/04/2014 Lab
12/09/2014 Test 2 Review
12/11/2014 Test 2

Course Description

A study of various mathematical applications for digital computers, including the modeling, simulation and interpretation of the solution of complex systems.


  • Introduce common simulation methods: queue-based, grid/lattice based, n-body type simulations.
  • Introduce visualizing simulations.
  • Examine using C/C++, OpenGL and distributed computing methods to implement simulations.
  • Overview of random number generation and probability distributions.


Students will gain knowledge/understanding of the following:

  • Simulation programming methodologies.
  • Distributed computing techniques for simulation.
  • Visualization of simulations.
  • Random number generation and probability distributions.

Students will aquire the ability to do the following:

  • Develop their own simulations of various complex systems.
  • Visualize those systems.
  • Develop parallel simulations or parallelize sequential simulations.
  • Determine which probability distributions and random number generators should be used by a simulation.


CSci 161 or 170, Math 166 and a statistics course.


Simulation Modeling & Analysis, Fourth Edition, by Averill M. Law


The course grade will consist of a set of programming assignments and labs, as well as two tests. The grade will be calculated as follows:

  • 70% - Programming Assignments/Labs
  • 15% - Test 1
  • 15% - Test 2

There will be the following grade distribution:

  • [90 - 100]: A
  • [80 - 89.9999...]: B
  • [70 - 79.9999...]: C
  • [65 - 69.9999...]: D

Academic Integrity

The development of the individual problem solving skills needed for computer programming is one of the major objectives of this course. Students are to work independently of each other in completing the programming assignments. Any exception to this rule will require documentation signed by me allowing the collaborative work.

If you need help, you are welcome to consult with your instructor, your teaching assistant, or the staff of the department's Instructional Help Desk in 109A Streibel Hall. A submission of source code that you did not develop or homework assignments that was not your individual writing will be treated as plagiarism. These assignments will receive zero points and you may be referred to the Associate Dean of Student Life as a case of Scholastic Dishonesty.


Class attendance and lab attendance are required. Any student missing more than 6 classes without a doctors excuse will fail the course. The classroom is the primary venue for course material, announcements, and other information relevant to the course. An on-line course management system may be used to make some information available to students, but this is intended to enhance, not replace, classroom interaction.

Homework and Lab Submission

Code for homeworks and labs must be commented and properly formatted (see different coding styles, I prefer 1TBS) or points will be taken away. The final homework submission must be submitted through Moodle. Each homework will list its grading criteria.

Late assignments will have their grades penalized by 15% the first day, and 30% the second day. No assignments will be accepted more than two days late. Homeworks are to be done individually (see Academic Integrity) and may involve a significant amount of programming, so start them early.

Lab Policies

All lab assignments must be completed by the end of the lab session. Any exception will require proper excuse with permission granted before the end of the lab session. Partial credit may be given to incomplete work.

Any issues related to the machines in the computer labs can be sent to cslabs@cs.und.edu.

Students with Disabilities

Upon request, the Computer Science Department will provide reasonable accommodations for students with disabilities as specified in the policies of the UND office of Disability Services for Students (DSS). You must contact your instructor to request and arrange accommodations.