This course will build on your understanding of operating systems concepts from CSC 213. We will look deeper into some important areas from CSC 213 such as concurrency and storage, but also explore other areas of operating systems research that did not fit into the introductory operating systems course. We will spend most of our class time discussing systems research papers. These papers will help you build a deeper understanding of how real systems are built, how to evaluate systems, and how to conduct systems research. We will begin the semester with a series of moderate size labs that will require you to implement non-trivial systems based on the papers we are reading in class. In the second half of the semester you will propose and conduct a systems research project of your own.
This class requires CSC 213, and I will expect you to remember or review some important concepts from that class as part of your work for CSC 395. You must also be comfortable programming in C, particularly when it comes to dealing with pointers. I will not assume that you have taken CSC 207, but experience with an object-oriented programming langauge may help you understand some of the papers we read, and could be helpful if you decided to use C++ for your labs or final project.
My goal is to help you learn as much as possible in this course; please let me know what I can do meet your learning needs. If you have a disability that requires accommodations, please contact Disability Resources. Disability Resources will work with you to determine your needs, and will provide you with paperwork outlining the accommodations you require. Please give me this paperwork at least a week before the course activity for which you need accommodations. If this timeline is not feasible for any reason, please contact me as soon as possible and we will work together to find a solution.
Under a normal 16 credit load, I expect that you will spend at least 40 hours per week on your studies (class time, homework, and studying). You should spend a minimum of 10 hours per week on this course, although more time may be required to earn an A or B in the course.
While I will not take attendance for this course, your participation during in-class discussions is worth 30% of your total grade. That means each day that you actively participate in our class discussion is worth approximately 0.75% of your total grade. You cannot earn participation credit for a day you do not attend class, so you should plan to attend every class prepared to contribute to our discussion.
However, if your are sick, please do not come to class. Stay in your room, rest, and seek medical care as needed. Student Health and Counseling Services (SHACS) offers health and mental health services to students. It’s better for you to miss a few points for discussion that to prolong your illness and potentially risk the health of your classmates (and instructor).
Because this class is discussion-based, there is no way for you to make up the work you miss if you are not able to attend class. I understand there may be times you have to miss class, but I will only excuse participation points for truly exceptional circumstances. Note that a student who misses five days of class can still earn an A in the course, provided they actively participate on the other class days and earn a 95% or better on the other graded work for this class.
We do not have a textbook for this course. Instead, you will read selected research papers in operating systems and related areas. Some of these papers will by accessible on campus, but will require a login if you access them from off campus. I have changed the links to these papers to go through Grinnell’s library proxy, which should give you access after you log in with your Grinnell account. If you are unable to access an assigned paper for any reason, please let me know as soon as possible so I can correct the issue.
You are expected to read and understand every paper assigned for this class. It’s okay if some details of the assigned reading are unclear, but you should be able to identify the problem the paper is addressing, the key idea(s) in the researchers’ work, and summarize their findings.
You will need to write a reading journal for almost every assigned reading in this class. Most reading journals will ask you to provide an overview of the problem the paper solves, its research contributions, a list of positive and negative points about the paper, and two or three discussion questions. In some cases we will read survey papers that introduce an area rather than a specific problem; in these cases we will have different reading journal questions. Reading journals will account for 20% of your total grade in this class.
You will be asked to complete three two-week labs during this course. Your work on these labs with a partner, or you can complete them individually. These labs will require that you understand and implement an idea from one or more papers we read for the class, and should help you develop some techniques that may be helpful for your final project in the course. Labs will make up 20% of your total grade in this course. The dates for our labs are as follows:
During the second half of this course, you will work individually or in pairs to complete a small scale systems research project. Your project will need to address an important problem in the domain of systems (broadly defined). Your solution does not necessarily have to be novel; reimplementations of work from existing research would likely be acceptable, provided the project is scaled appropriately. The complete project will account for 30% of your grade in this course.
The project will have the following components:
There will be no curves or competitive grading in this course. Every student has an opportunity to earn an A. Your final grade will be determined with the following weighting:
Some work may be graded by someone other than the instructor. However, any questions or concerns about grading should only be directed to the instructor.
The grading scale for this course will be:
You may note that a score of exactly 90% could earn either a B+ or an A-. In this unlikely scenario, I will always choose the higher of the two grades. I also reserve the right to adjust this scale during the semester. You will be notified of any changes, and the scale will not change in the final two weeks of the course. You may ask me for your current grade in the class at any point; I will happily give you my best estimate based on the current scale and graded work so far, but these estimates are not guarantees of a specific final grade.
I encourage collaboration when it promotes learning. However, it is important for you to understand the course materials and demonstrate your own learning on assignments. As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College’s Academic Honesty Policy to the attention of the Committee on Academic Standing, after which there is no recourse with me.
You are free to discuss our class readings, labs, and your project with other students You may also discuss readings before class time, but sharing of reading responses is not permitted. When you complete work on a lab, written response, final report, or discussion topic you are expected to accurately represent the sources of your ideas. You must acknowledge the contributions of others, whether they come from other students in the class, or from print and online resources.
If you have questions or concerns about the course or would simply like to discuss the course material, please come to my office hours. To provide equitable access to all students regardless of course schedules, I hold my office hours by appointment. You can make an appointment at https://calendly.com/curtsinger/office-hours.
I am happy to answer questions by email, but please allow 24 hours for a response (except on weekends, when I may not answer email at all). You may also call my office phone number (x3127) for more urgent matters.