Syllabus
Syllabus
Syllabus
School of Computer Science
Carnegie Mellon University, Qatar
Fall 2012
1 Overview
Title: Distributed Systems
Units: 12 units
Pre-requisites: A grade of “C” or better in 15-213, Introduction to Computer Systems
Lectures: Monday and Wednesday, 2:30 – 3:50 PM, Room 2049
Recitation: Thursday, Time: TBA, Room: TBA
Webpage: http://www.qatar.cmu.edu/~msakr/15440-f12/
Description:
15-440 is an introductory course in distributed systems. The emphasis will be on the
techniques for creating functional, usable, and high-performance distributed systems.
To make the issues more concrete, the class includes several multi-week projects
requiring significant design and implementation.
The goals of this course are twofold: First, students will gain an understanding of the
principles and techniques behind the design of distributed systems, such as locking,
concurrency, scheduling, and communication across networks. Second, students will
gain practical experience in designing, implementing, and debugging real
distributed systems.
The major themes this course will teach include process distribution and
communication, data distribution, scheduling, concurrency, resource sharing,
synchronization, naming, abstraction and modularity, failure handling, protection from
accidental and malicious harm, distributed programming models, distributed file
systems, virtualization, and the use of instrumentation, monitoring and debugging
tools in problem solving. As the creation and management of software systems is a
fundamental goal of any undergraduate systems course, students will design,
implement, and debug large programming projects. Students will learn the design
and implementation of today’s popular distributed system paradigms, such as Google
File System and MapReduce.
Instructors:
Majd F. Sakr
[email protected], M1016, 4454-8625, Office hours: Tuesday, 3:00 – 4:00 PM
Mohammad Hammoud
[email protected], M1013, 4454-8506, Office Hours: Thursday, 11AM – 12PM
2 Objectives
Distributed Systems combine the computational power of multiple computers to solve
complex problems. The individual computers in a distributed system are typically spread
over wide geographies, and possess heterogeneous processor and operating system
architectures. Hence, an important challenge in distributed systems is to design system
models, algorithms and protocols that allow computers to communicate and coordinate their
actions to solve a problem.
Our aim in this course is to introduce you to the area of distributed systems. You will examine
and analyze how a set of connected computers can form a functional, usable and high-
performance distributed system.
Through these objectives, the course will transform your computational thinking from
designing applications for a single computer system, towards that of distributed systems.
3 Learning Outcomes
The primary learning outcome of the course is two-fold:
1. Students will identify the core concepts of distributed systems: the way in which several
machines orchestrate to correctly solve problems in an efficient, reliable and scalable
way.
2. Students will examine how existing systems have applied the concepts of distributed
systems in designing large systems, and will additionally apply these concepts to develop
sample systems.
3.1.3 Fault-tolerance
In a distributed system with many computers, a failure of a single or a part of the
computer is very likely. If such a system failure is not avoided or recovered from, the
whole system might halt, resulting in a fragile and unpredictable system. Students will
identify the issues dealing with avoiding and recovering from failures, a concept referred
to as fault-tolerance, in distributed systems.
3.1.4 Security
In distributed systems, computers that solve your problem may not be under your
administrative control; you do not own – sometimes, even know – where your program is
running on a big connected set of computers. This makes a distributed system vulnerable
to security and privacy related issues. Students will learn the common security issues in
distributed systems and mechanisms to secure the system.
• Distributed File Systems: Students will learn about a file being split and stored anywhere in
the distributed system, yet can be accessed transparently as a local file. They will examine
how to apply distributed system principles in ensuring transparency, consistency and fault
tolerance in distributed file systems.
• Virtualization: Students will learn the concept of system virtualization, where a state of a
computer is abstracted from the underlying hardware. This allows transporting a virtual
computer from one machine to a completely different machine, which may be physically
present on other end of the world.
4 Textbooks
The primary textbooks for this course are:
We have several reference books in the library covering most of the topics of the course. We
will also be reading tutorials, journals and conference publications on the subject.
5 Course Organization
Students’ participation in the course will involve five forms of activities:
• Attending and participating in the lectures and recitations
• Assignments (including writing and reading assignments)
• Projects
• Exams and quizzes
• In-class discussions
6 Getting Help
For urgent communication with the teaching staff, it is best to send an email (preferred) or
phone. If you want to talk to an instructor in person, remember that our posted office hours
are merely nominal times when we guarantee that we will be in our offices. You are always
welcome to visit us outside of our office hours if you need help or want to talk about
the course.
We ask that you follow a few simple guidelines. Prof. Sakr and Dr. Hammoud normally work
with their office doors open. Whenever their office doors are open, they welcome visits from
students. However, if their office doors are closed, this means they are busy with meetings or
phone calls and should not be disturbed.
We will use the course web-page as the central repository for all information about the class.
Using the web-page, you can:
1. Obtain copies of any handouts or assignments. This is especially useful if you miss class
or you lose your copy.
2. Find links to any electronic data you need for your assignments.
3. Read clarifications and changes made to any assignments, schedules, or policies.
4. Provide healthy feedback about the course.
You can use a mailing list specific for the class (instructions on this mailing list will be
provided in class and on the course webpage) to post messages, make queries about the
course, specific projects, or exams. The messages on this mailing list will be distributed to all
the students and the instructors of the course.
7 Policies
Working Alone on Assignments/Projects
Assignments/projects that are assigned to single students should be performed individually.
Some projects may be group projects, in which case it will be notified earlier.
Handing in Assignments/Projects
All assignments/projects are due at 11:59 PM (one minute before midnight) on the specified
due date. All hand-ins are electronic using CMU Autolab. Instructions on using Autolab will be
provided in class and on the course webpage.
Appealing Grades
After each assignment, exam and/or project is graded, you have seven calendar days to
appeal your grade. All your appeals should be provided in writing. If you are still not satisfied,
please come and visit Prof. Sakr. If you have questions about an exam grade, please visit
Prof. Sakr directly.
8 Assessment
Final Grade Assignment and Assessment methods
Each student will receive a numeric score for the course, based on a weighted average of the
following:
1. Projects: The projects will count a combined total of 45% of your score. There are 4
projects throughout the course. The first three projects are worth 10% each and the last is
worth 15%. The last two projects (combined) will involve a presentation and a paper. Take
into account that small differences in scores can make the difference between two
letter grades.
You are encouraged to submit the projects on time. For all projects except the final one, the
following rules apply. If you submit one day late, there will be deducted 25% of the project
score as a penalty. If you are two days late, 50% will be deducted. The project will not be
graded (and you will receive a zero score) if you are more than two days late. However, there
is a grace-days quota for projects; you are given 3 grace days for all projects (except the
final project). You can use the grace days as needed. For example, you can submit your
project 1, three days late and still not get any penalty. Your penalty starts from 4th day after
the deadline if you use your grace days. However, since you have used up all your grace
days from your quota, you do not have any grace days for other projects. Plan how to utilize
your grace day quota judiciously. For a team project, we deduct one grace day from each
student if the team submits the project one day late. Hence, make sure that everyone in your
team has ‘x’ grace days left if you want to submit the project ‘x’ days late.
Note that the final project is unique. You cannot use grace days for it. There will not be any
penalty system for this project either. If you are one day late in submitting the final project, it
will not be graded (and you will receive a zero score).
2. Exams: There will be two in-class exams – mid-term and final – that count for 25% of
the grade. Mid-term will count for 10%, and final for 15% of the overall grade.
3. Problem Solving Assignments: There will be 4 written assignments that will test
students on problem analysis and solving skills. These assignments will carry an overall
score of 10% of your total score.
4. Quizzes: There will be 10 quizzes in the class or the recitation, which will account for
15% of your grade. There will be a quiz per topic that tests your understanding in the
topic covered.
Projects 4 45%
Exams 2 25%
Quizzes 10 15%
Grades for the course will be determined by absolute standards. The total score will be
plotted as a histogram. Cutoff points are determined by examining the quality of work by
students on the borderlines. Individual cases, especially those near the cutoff points may be
adjusted upward or downward based on factors such as attendance, class participation,
improvement observed throughout the course, exam performance, and special
circumstances.
9 Cheating
Each project must be the sole work of the student turning it in, except for possible group
projects. Projects will be closely monitored by automatic cheat checkers, and students may
be asked to explain any suspicious similarities with any piece of code available. The
following are guidelines on what collaboration is authorized and what is not:
What is cheating?
1. Sharing code or other electronic files: either by copying, retyping, looking at, or supplying
a copy of a file.
2. Sharing written assignments: Looking at, copying, or supplying an assignment.
Cheating in group projects will also be strictly monitored and penalized (similar to cheating in
individual exams, assignments or projects). Be aware of what constitutes cheating (and what
does not) while interacting with students in other groups; same rules of cheating as above
apply when collaborating between two or more groups. You cannot share or use written
assignments, code, and other electronic files from students in other groups. If you are
unsure, ask the teaching staff.
Be sure to store your work in protected directories. The penalty for cheating is severe, and
might jeopardize your career – cheating is not worth the trouble. By cheating in the course,
you are cheating yourself; the worst outcome of cheating is missing an opportunity to learn.
In addition, you will be removed from the course with a failing grade. We also place a record
of the incident in the student’s permanent record.
10 Class Schedule
Table 1 shows the tentative schedule for the class. The schedule also indicates the project
activities. Any changes will be announced on the class distribution list. An updated schedule
will be maintained on the class webpage.