ComS 455/555

Simulation: Algorithms and Implementation

Fall 2006

  1. General info
  2. Prerequisites
  3. Course Work
  4. Policy on Academic Honesty
  5. Lecture Schedule
  6. Problem Sets
  7. Midterm Exam
  8. Final Exam

General info

Instructor: Dr. A. Miner
Office: 233 Atanasoff Hall
Office Hours: MW 16:30 - 17:00, T 14:00 - 15:30, and by appointment
Lecture: MW 15:10 - 16:30, Atanasoff B29
Text: Discrete-Event Simulation: A First Course by Park and Leemis; ISBN: 0-13-142917-5
Text Code (C): C_source.tar.gz
C_source.zip
Text Code (Java): Java_source.tar.gz
Java_source.zip

Course summary

The course is an introduction to computational and mathematical techniques (with emphasis on algorithms and implementation) for modeling, simulating, and analyzing the performance of various systems. The types of systems considered are stochastic (i.e., there is some type of random behavior). The primary focus is on systems that are dynamic (the system evolves over time) and discrete-event (the system changes state at discrete time instants). A secondary focus is on static systems that do not evolve over time. Specific topics covered in the course include modeling, random number generation, random variable distributions, statistics, and next-event simulation.

Course objectives

The objective of the course is to provide students with an introduction to the basic principles of discrete-event simulation. The course emphasizes theory, implementation in a high-level programming language, and computation-based experimentation. Upon successful completion of this course, students will have a basic understanding of the basics of discrete-event simulation, including the underlying theory, algorithms, and practical implementations for random number generation, gathering of statistics, next-event and Monte-carlo simulations, and modeling of systems. Students should be able to construct computational models (i.e., computer simulations) of real-world discrete-event systems in a contemporary general-purpose high-level programming language (e.g., C or Java), design and run simulation experiments, and interpret results. Students should be able to identify current areas of research in discrete-event simulation.

Accommodation for Disabilities

If you have a disability that may require some modification of seating, testing, or other class requirements, please obtain a SAAR (Student Academic Accommodation Request) form verifying your disability and specifying the accommodation you will need from the Disability Resources staff and present it to the instructor as soon as possible so that appropriate arrangements may be made.

top


Prerequisites

Computer Science

Students will be expected to have programming experience in a contemporary high-level language, such as C, C++, or Java. The use of dynamic structures (e.g., linked lists, queues, etc.) will be required. Students should also have a working knowledge of algorithm complexity.

Course work will be unpleasant without a strong programming background.

Calculus and discrete math

Students should be familiar with single-variable differential and integral calculus, and their discrete math analogs (difference and summation).

Probability

Students should have a working knowledge of probability, including random variables, expectation, and conditioning.

top


Course work

Problem sets

Two homework exercises will be assigned each lecture, for a total of four per problem set. Problem sets are due by 11:59 pm on their due date, subject to a 10% penalty per day late. Students should submit hardcopy solution summaries (see below) and electronic complete solutions (including source code). Students enrolled in 555 must do all four exercises per set, while students enrolled in 455 must do any three out of four exercises.

Problem sets will represent about 40% of your grade.

Midterm exam

There will be a midterm take-home exam, worth about 20% of your grade. This will be due at the precise time specified on the exam, and will not be accepted late without prior permission of the instructor.

Final exam

There will be a final take-home exam, due at the University-scheduled final exam time, worth about 40% of your grade. This will not be accepted late without prior permission of the instructor.

Solution submission

Solutions to problem sets and exam questions consist of two parts.

Hardcopy (written) solutions should consist of a self-contained explanation of your solution, complete with an overview of mathematical derivations (if necessary), algorithm development (if necessary), with a brief summary of any necessary modifications to the textbook source code. The other student viewpoint is a guide to the level of explanation expected for written solutions: another student in the class, who didn't know how to do the exercise/question, should be able to read your solution and learn a correct answer, without asking questions. References to material in the text are encouraged (e.g., "from Theorem 1.2.1 we have ..."). Solutions may be typeset or neatly hand-written. My personal preference is to use LaTeX as it produces excellent quality with minimal effort, especially for equations. However, content is much more important than style. Point(s) will be deducted for incomplete or poorly-written solutions. An example solution is provided below for illustration.

In addition to written solutions, you must submit a complete solution electronically. Think of this as the appendix to your written solution, containing things like source code and raw data as appropriate. This is necessary for me to replicate your results and check for errors.

top


Policy on Academic Honesty[1]

Students enrolled in Computer Science courses at ISU are expected to maintain the highest standards of academic integrity. Cases of cheating that go undetected and hence unpunished skew the grading curve in a class, thereby lowering the grades for students who do not cheat. Students who cheat rob themselves not only of knowledge and skills that they should have acquired in a course, but also of the experience of learning how to learn, arguably the most valuable benefit of a university education. The reputation of the department, the university, and the value of the degree suffer if employers find the graduates of a program lacking in abilities that successful completion specific courses should guarantee. Most professions, including Computer Science, have codes of ethics or standards to which individuals will be expected to abide by. At the University you practice the integrity that you must demonstrate later.

Suspected cases of academic misconduct will be pursued fully in accordance with ISU policies which require that all suspected cases of academic misconduct be reported to the dean of students. Any student found responsible for academic misconduct will receive a failing grade (F) in the course (even if the student chooses to drop the course). The dean of students may impose additional sanctions (ranging from a disciplinary reprimand to expulsion from the university). You are strongly urged to consult the university's policy on academic dishonesty.

The information included here is intended to help students avoid unintentionally committing academic dishonesty. The primary purpose of problem sets is to clarify and enhance the understanding of the concepts covered in the lectures. Past experience with this course has shown that this is helped by increased interaction among students. Discussion of general concepts and questions concerning the homework and laboratory assignments among students is encouraged. However, each student is expected to work on the solutions individually (except in the case of assignments that are explicitly assigned to teams of students).

When discussing problems with other students, you may:

It is expected that you have independently arrived at solutions that you submit. The following are examples of activities that are PROHIBITED:

top


Lecture schedule

The following is the tentative lecture schedule.

21 August: Introduction, syllabus, and Chapter 1.1
23 August: Chapter 1.2
28 August: Chapter 1.3
30 August: Appendix B and Chapter 2.1
4 September: University Holiday
6 September: Chapter 2.2
11, 13 September: No lecture
18 September: Chapter 2.3
20 September: Chapter 3.1
25 September: Chapter 3.2
27 September: Chapter 3.3
2 October: Chapter 4.1
4 October: Chapter 4.2
9 October: Chapter 4.3
11 October: Midterms due
16, 18 October: Chapters 5.1, 5.2, 5.3
23 October: Chapter 6.1
25 October: Chapter 6.2
30 October: Chapter 6.3
1 November: Chapter 6.5
6 November: Chapter 7.1
8 November: Chapter 7.2
13 November: Chapter 7.3
15 November: Chapter 8.1

top


Problem Sets

Due 28 August: 1.2.3, 1.2.6
Due 6 September: 1.3.4, 1.3.6, 2.1.2, 2.1.11
Due 18 September: 2.2.11, 2.2.13
Due 25 September: 2.3.2, 2.3.4, 3.1.1, 3.1.6
Due 2 October: 3.2.2, 3.2.7, 3.3.1, 3.3.6
Due 9 October: 4.1.7, 4.2.11
Due 16 October: 4.3.3, 4.3.4
Due 23 October: 5.1.3, 5.1.7, 5.2.5, 5.3.1
Due 30 October: 6.1.1, 6.1.10, 6.2.5, 6.2.7
Due 6 November: 6.3.2, 6.3.3, 6.5.1, 6.5.4
Due 13 November: 7.1.1, 7.1.5, 7.2.5, 7.2.9
Due 27 November: 7.3.1, 7.3.7, 8.1.5, 8.1.6

top


Midterm Exam

Your solutions to the midterm exam (electronic and hardcopy) are due at the start of class, 11 October 2006 and will not be accepted late without prior approval. Be prepared to discuss your solutions in class.

top


Final Exam

The final exam is due (electronic and hardcopy solutions) at the end of our University-scheduled final exam time slot: Monday, December 11, 2:15 - 4:15. Part of the exam is take-home, and part of the exam is in-class. The in-class portion of the exam is open note, open textbook, and closed computer.

top


[1] The academic honesty policy has been compiled using material adapted from several sources including the past offerings of this course, other computer science courses at Iowa State University, as well as other universities.


Last updated $Date: 2006-11-27 10:17:35 -0600 (Mon, 27 Nov 2006) $