Distributed And Cloud-Based Storage Systems (818e)

CSI 2118, TTh 9:30-10:45
Fall 2015

(Syllabus, Piazza)

This web page and schedule will be updated as the course goes along. Please check it regularly, and don't forget to reload.


The guiding philosophy of this course is that the best way to learn about real systems is to build one. We will gain an in-depth understanding of the issues involved in designing and deploying large-scale distributed file systems. In the course of this investigation we will be tackling a variety of topics, such as peer-to-peer systems, remote procedure calls, multi-threading, consensus protocols, cloud systems, layered systems (supporting high-level consistency guarantees on top of cloud services), and security as it relates to such systems.

The class will consist of lectures by the instructor, student project presentations, a midterm and a final, and a series of probably five programming projects, all in the language Go (fear not if you don't know anything about go, we'll all be learning together). The end goal is to have built a full-scale reliable, highly-available, and secure distributed file system, using both local disks and cloud services as backing stores. My lectures will be split between those describing the tools we will use to build our file systems, and lectures based on recent research in the literature (such as those at FAST 2014, SOSP 2013, OSDI 2012, and USENIX ATC 2014).

Examples of technologies we may use include FUSE (and MacFUSE), key value stores like Bolt or gkvlite or diskv or leveldb-go, the Amazon Simple Storage Service (and go binding), Google's Protocol Buffers or json (from Go), Google's Go language, PAXOS, SQLite, Snappy, and Apple's development kit for the iPad.

Office hours: after class in my office (4157 A.V. Williams).

Note that the following set of papers is only a placeholders: more will come, some will go away.

Content-type: text/html

ERROR: (): could not find expected ':' while scanning a simple key at line 1034 column 3

/usr/local/lib/ruby/gems/1.9.1/gems/psych-2.0.6/lib/psych.rb:370:in `parse'
/usr/local/lib/ruby/gems/1.9.1/gems/psych-2.0.6/lib/psych.rb:370:in `parse_stream'
/usr/local/lib/ruby/gems/1.9.1/gems/psych-2.0.6/lib/psych.rb:318:in `parse'
/usr/local/lib/ruby/gems/1.9.1/gems/psych-2.0.6/lib/psych.rb:245:in `load'
/usr/local/lib/ruby/1.9.1/x86_64-linux/peteclass.rb:194:in `yamlSched'
/usr/local/lib/ruby/1.9.1/x86_64-linux/peteclass.rb:252:in `scheduleblog'
/usr/local/lib/ruby/1.9.1/x86_64-linux/peteclass.rb:507:in `'
/var/www/html/dss/index.rb:134:in `load'
/var/www/html/dss/index.rb:134:in `