CSE-595: Special Topics: Storage Systems, Spring 2015
This is the home page for CSE-595, the
Special Topics: Storage Systems
class for the Spring 2015 semester, given at the Computer Science Department of Stony Brook University.
This class meets on MONDAYS only from 5:30pm-8:10pm in room
Project proposal design document due (Sun 4/12/15 @ 11:59pm). Submit via git
commit+push AND a printed copy in my mailbox outside office or in Pit area mailboxes.
University official make-up lecture 2 (on a Friday).
Project proposal design document due (Fri 3/13/15 @ 5pm). Submit via git
commit+push AND a printed copy in my mailbox outside office.
University official make-up lecture 1 (on a Friday).
Another make-up lecture (on a Friday) will be held in room CS-2129.
Special make-up lecture (on a Friday) will be held in room CS-2120.
First class is canceled due to weather.
Class Time and Location
Location: Computer Science building, room 2129
Name: Erez Zadok
Office: 2313-B CS Dept.
Lab: 2214 CS Dept. (I'm often in my lab.)
Tel: x2-8461 (631-632-8461)
Office Hours: Mondays 4:30pm–5:30pm, or by appointment.
Email: click here
This class does not have a TA at this time.
This is an advanced class that will cover storage systems, defined as any
software/hardware system that performs any sort of I/O related to storage
stack and file systems, including local, networked, distributed, and cloud
storage systems. Students will attend lectures, read papers and present
them, and work on a SUBSTANTIAL project throughout the semester. By the end
of the semester, students will have to produce either (1) a 12-14 page
conference/journal quality technical paper, or (2) production-quality
working software and a technical report describing the work. Students will
be expected to spend at least 10 hours per week on the course work, outside
class lectures/meetings. Teams working on projects will be working closely
with the Prof. Zadok and his doctoral students who may be sponsoring some of
these projects. Students are expected to demonstrate a high level of
independence, critical thinking, and initiative.
We will spend the first couple of weeks picking projects and outlining
several ideas. Half of the semester will be roughly devoted to development
of code. The other half will be devoted to benchmarking and paper writing.
Students will submit 1-2pp project proposals, mid-semester progress report,
and final project paper/report. You will learn that in real projects (and
not just research), a significant amount of time must be devoted to testing,
benchmarking, analysis, and documenting your results. Students will demo
their project progress mid-semester and at the end (demos could take 1-2
hours per team). Students will have to read technical papers related to
their project, research the literature and any existing code, and present
their findings in class (using PowerPoint slides). Your grade will be
determined based on graded documents you submit, code quality and
functionality, your demos and presentations, and attendance+participation in
The course will be supplemented with an assortment of lectures covering
advanced topics such as Solid State drives (Flash and PCM), cutting edge
devices such as Shingled Magnetic Recording (SMR) disks, NFS version 4, and
more. We will read and discuss the latest storage papers from conferences
such as SOSP, OSDI, and FAST. We will have a few guest lectures from
graduate students working on advanced storage and file system related
projects, as well as talks by external visitors from industry. I will also
give a couple of lectures on how to write technical papers, getting them
published, and how to prepare for and give a good talk (these are vital
skills for graduate students which are often not taught formally).
There will be one exam in this class (either a midterm or a final).
Who can take this class?
To take this class, you are strongly advised to have taken (or concurrently
take) CSE-506 (OS) and have a good grade. I will accept proven industry
experience working on kernel/systems code in lieu of having taken CSE-506.
Students should also preferably have substantial prior experience coding in
C, systems and OS coding, networking, security, using development and
debugging tools for C, etc. Many of the projects require familiarity with
Linux kernel/systems development, but not all (you can do a lot of storage
related research outside the kernel). Also strongly recommended is to have
taken CSE-548 (Algorithms). Instructor permission is required to take this
This course may also be used to satisfy CSE-522, under section T04. You
must speak with the instructor and get approval before registering for this
special topics class as a CSE-522.
A list of project ideas is available, and
will be updated frequently in the first few weeks of the semester (so be
sure to refer to the latest list, which has a date timestamp at the top).
All students who are not sure if they want to take this class, but are
interested, MUST attend the first lecture where we'll go over the current
list of proposed projects. Of course, students are welcome to propose their
own projects, which can be anything related to storage and/or file systems,
and in general operating systems (but talk to the instructor first). You
can choose to modify or combine any of the projects we propose. You can
design a project to suit any size team from one to four people.
The final grade will be determined as follows:
The raw scores obtained by all students on each assignment and exam will be
standardized for that particular assignment or exam either (at my discretion)
by converting them to percentile scores, or else by applying a linear
transformation to map the scores to a standard [0, 100] scale.
A weighted sum of the resulting standardized scores will then be formed
(with weights as shown below) to obtain a composite score for each student.
Finally, the composite scores will be ranked, and I will apply a subjective
method of my choice to determine the cutoffs for each grade category.
Absolute performance standards, the distribution of composite scores,
information derived from late homeworks, and class participation are factors
likely to contribute to this decision.
- Design Document (10%)
- Interim Report (15%)
- Final project (demo, code review, final report, etc.) (60%)
- Final examination (25%)