Course Website: http://cs636.cs.usfca.edu
Canvas Course Site:
Lecture: Tue and Thu 4:35pm-6:20pm, LS 307
Final: Tuesday, December 15th 2015 5:30pm-7:30pm LS 307Instructor: Greg Benson
Office: Harney 533
Office Hours: TBA
In this course we will investigate the design and implementation of reliable distributed systems, including distributed storage systems and scalable data processing engines. Examples of such systems include the Google File System, Amazon's Dynamo, Cassandra, Google MapReduce, Hadoop, and Spark. 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. Your final project will be a group project in which you implement a version of Spark. You will design and implement a version of the Spark architecture, demonstrate it's functionality, measure performance, and report your results in a final presentation and paper.
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 Python. Initially, reading the technical papers will be time consuming, but you will get better as you gain more experience. Projects will including implementing MapReduce, Leader Election, and Spark.
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.
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. There are many references 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.
All students are expected to know and adhere to the University of San Francisco's Academic Honor Code. Go to http://myusf.usfca.edu/academic-integrity/honor-code for details.
You must never represent another person’s work as your own.
Copying answers or code from other students or sources during a quiz, exam, or for a project or homework assignment is a violation of the university’s honor code. This includes copying code or other material from the web, and having anyone other than yourself complete your assignments. It also includes working too closely with another student. Collaboration or discussion that results in the same or very similar code indicates that you have not placed enough independent work into your solution and is a violation of the honor code.
Flagrant or repeat violations of the honor code will result in an F in the course, a report to the University Academic Integrity Committee, and a report to the Dean.
Examples of honor code violations include but are not limited to:
When you email the instructor or the mailing list, be sure to email from an account to which we can directly reply.
Clarifications, changes, etc. regarding the class and assignments will be posted to the class mailing list. Also check the class website frequently.