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.
Readings and problems will be assigned regularly from this book. The library has both print and electronic copies available on reserve.
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.
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.
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 have a documented disability that requires accommodations, you will need to contact Accessibility Services (accessibility@amherst.edu 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.