COSC-450: Analytical Performance Modeling

Fall 2019

Home    Schedule and Assignments

Course Information

Meeting times: MW 8:30-9:50am
Location: SCCE C101
Prerequisites: COSC-223 (Probability and Computing) or MATH/STAT-360 (Probability) or the equivalent at another institution. Please come talk to me if you have not taken a probability course.

Overview: In designing computer systems, one often is trying to meet a performance objective while simultaneously being constrained by resource or budgetary limitations. For example, we might want to ensure that jobs complete service within a certain time bound, while also remaining within a fixed cost or power budget. We also have many choices to make: should we purchase one fast server or two slow servers? In what order should we schedule jobs to run on our server? In a multi-server system, how should we decide to which server an arriving job should be dispatched?

In this course students will be introduced to analytical performance modeling, the goal of which is to answer the above questions (and more) from a mathematical perspective. Possible topics include operational laws, elementary queueing theory, capacity provisioning for server farms, and scheduling theory.

Contact Information

Instructor: Kristy Gardner
Office: C215 Science Center
Phone: 413-542-5428
Web site
Office hours: By appointment. I am often availalble to meet MWF. I am not typically available on Tuesdays and Thursdays.

Required Textbook

Performance Modeling and Design of Computer Systems, by Mor Harchol-Balter, Cambridge University Press, 2013. ISBN: 978-1-107-02750-3.

Readings and problems will be assigned regularly from this book. The library has both print and electronic copies available on reserve.

Course Structure

The first half of the course will focus on developing the mathematical and analytical tools used in performance analysis. Our weekly schedule will usually be as follows: On Wednesdays I will assign the homework problems (from the textbook) that will be due in class the following Wednesday, and I will let you know what chapter we'll cover the following Monday.

In the second half of the course, we will shift to studying how to improve performance via smart dispatching and scheduling. The Monday/Wednesday schedule will be similar to that of the first half of the course, likely with more paper discussions and fewer problem classes. Roughly halfway through the semester you will begin a final course project, to be done in pairs or small groups. The project will replace the weekly homework assignments as your outside-of-class work.


Your grade in the course will be based on the following components. In order to do well, you will need to engage fully and perform well in all aspects of the course.

1. Homework. There will be weekly problem sets throughout the first half of the semester, usually assigned on Wednesday and due in class the following Wednesday. Solutions should be written clearly and legibly (I encourage you to type up your solutions using LaTeX). Please show your work; showing just a final answer without the process by which you arrived at the answer does not demonstrate your understanding of the material.

Deadlines, late days, and extensions: Homework must be submitted at the start of class on the day it is due. You make take 4 late days during the semester. These can be used for any reason, without penalty, and you do not need to ask me or tell me that you are using them. You may use up to 2 late days on any individual assignment. Homework will usually be due on Wednesday and I will read your submissions over the weekend and return submissions and solutions on Monday, so I cannot accept any submissions later than Friday.

2. Problem classes. Throughout the semester, we will have many "problem classes" during which we will solve problems related to the week's topic as a group. Each student will be responsible for leading the class in solving one problem over the course of the semester.

3. Paper readings. We will read and discuss several research papers throughout the semester. In advance of the paper discussion, you will submit a summary of the paper and a list of questions that you have after reading the paper; these questions will shape our in-class discussion. I expect you to come to class prepared to discuss the papers in detail.

4. Final project. You will complete a final project in pairs or small groups on some topic in performance modeling or queueing theory.

5. Class participation. This is a seminar class, and a lot of the learning will happen through in-class discusions and problem solving. I expect you to attend and engage in every class meeting; not doing so will hurt both your learning and that of your classmates. If you need to miss a class due to illness or other extenuating circumstances, please contact me as soon as possible.

Intellectual Responsibility

Homework. Many of the homework problems in this course will be challenging. I encourage you to first attempt to solve the problems individually, then discuss your approach with your classmates. You may work with other students currently taking the course when solving homework problems, but the written work that you submit should reflect your own understanding and presentation of the solutions. Do not copy another student's written work, and do not allow another student to copy your written work. If you discuss an assignment with other students in the class, please note on your submission with whom you discussed each problem. It is never appropriate to look for homework solutions on the internet.

Paper reflections. While you are welcome to discuss the paper readings with your classmates in advance of class (and we will discuss them extensively during class), your written reflections are to be completed individually.

Final Project. Your final project will be completed in pairs or small groups, and you should collaborate with your team on all aspects of the project. Any written work produced for the project must be the work of you and your team (i.e., do not copy text from any source, print or online; this constitutes plagiarism). All sources---whether they are books, web sites, journal papers, pieces of code, etc.---must be properly cited.

A note about code. While this is not a programming-intensive class, you may find that you want to write some code for your project, e.g., to simulate a system of interest. Often, looking online is a good way to get "unstuck" if you need help while debugging, and there may exist code online that does exactly what you are trying to do. Why reinvent the wheel when someone else has already written the code that you need? Because improving your programming skills is not a learning goal of this course, you are free to use any code resources that you find online, including pieces of code or whole programs written by others. You must attribute any code that is not your own to its author. This should be done by noting in a comment in the code itself the source of any code written by someone else, AND by including the source in your list of references.

Please come talk to me if you are unsure whether something constitutes academic dishonesty.

If you are struggling...

Please come see me. I'm happy to schedule a meeting with you to discuss the course material or any other challenges you're facing related to the course. Should you need support related to challenges beyond this course, I encourage you to seek help from the numerous resources available on campus, including but not limited to your class dean, your RC, the health center, and the counseling center.

If you have a documented disability that requires accommodations, you will need to contact Accessibility Services ( or 413-542-2337). After you have arranged your accommodations with Accessibility Services, please set up a time to meet with me to discuss how we can best implement your accommodations in this class. If you use accommodations for exams, you will need to tell me this in writing (i.e., by email) at least one week in advance of each exam so that we can make appropriate arrangements.