Lecture: Tue and Thu 9:55am-11:40am, ED 310
Final: Tuesday, May 14th at 10:00am-12:00pmGreg Benson
Office: Harney 533
Office Hours: Tue/Thu 3:00pm-4:30pm, Wed 2:00pm-4:00pm, and by appointment
In this course we will investigate the design and implementation of scalable storage systems and scalable run-time execution environments. Examples of such systems include the Google File System, Amazon's Dynamo, Cassandra, Riak, MongoDB, Google's MapReduce, AppEngine and Hadoop. Many of these systems are the foundations for what is called Cloud Computing. While we will look at programming some of these systems our main goal will be to understand how such systems are built and look for opportunities to improve the state of the art. This is a seminar style course in which we will read many academic research papers that describe and evaluation different scalable system designs. In addition, you will work on projects related building scalable systems and applications. You final project will be an independent research project that will include an implementation, experimentation, report, and final presentation.
This is a demanding class and probably unlike some of the other graduate courses you have taken at USF. I expect you have taken a rigorous undergraduate operating systems course and that you are comfortable with programming in C, Java, and Python. Initially, reading the technical papers will be time consuming, but you will get better as you gain more experience.
On completion of this course the student should be able to accomplish the following:
As mentioned above, you should have taken an undergraduate operating systems course that required you to build and understand the major components of an operating systems kernel.
I will review some foundational OS material, but you are unfamiliar or need a refresher on certain topics, you should consult a good OS text book. The book we use in CS 326 is:
Operating Systems Concepts, 8th Edition
There are no required textbooks for this course. I will make available research papers for you to read and we will be using online documentation for Android. There are many references for C, Java, and Python and some good online resources.
If you score 90% or higher will be guaranteed an A-.
For each evaluation and each class discussion you will be given a Check-, Check, or Check+. These are equivalent to:
In some cases I may assign an in-between grade or a Check-- for very poor performance.
Assignments must be turned in on time to receive credit. Except in the most extreme situations, late assignments will not be accepted. If you cannot complete an assignment by the due date, hand in whatever you have done in order to receive partial credit.
Because 10% of your grade comes from class participation, class attendance is required.
Each student is to do his or her own work for the paper evaluations and projects. Group projects are an exception. For the paper evaluations you will need to write original documents. Do not try to obtain text from the Internet or other sources. It is easy to spot and easy to find with modern search engines. If you are caught cheating or plagiarizing (e.g., collaboration, copying on exams, cutting and pasting text) I will assign you a F for the course and you will be reported to the Dean.