CSCI B534 Distributed Systems

Spring 2007
Department of Computer Science, School of Informatics
M, W 5:30-6:45 p.m., Lindley Hall Rm. 102

Instructors: Professor Beth Plale and Yogesh Simmhan, and with Professor Dennis Gannon
Professor Plale: LH301D, 812-855-4373
plale@cs.indiana.edu
Office Hours: Monday 4:30-5:30PM

Yogesh Simmhan: LH316
ysimmhan@cs.indiana.edu
Office Hours: Wednesday 10:30-11:30AM

Associate Instructor: Jeff Cox
Location: LH330
Office Hours:

Course Description and Goals
This course covers the foundations of distributed systems including models of computing, logical clocks and synchronization, concensus, distributed indexing, concurrency, consistency, failures, reliability and security. We will examine popular applications of distributed computing, analyze how the foundations manifest themselves in different ways depending on real-world constraints. Such applications include distributed file systems, peer-to-peer systems, distributed transactions, and web services.

The course will include a couple projects. The first is a systems development and optimization project. It will provide hands-on experience building a reasonably sized distributed application then using that application to conduct a through performance evaluation, leading to optimizations that improve performance. The expectation is that students have mastered one or more programming languages, and have some experience using libraries and packages from other sources. Specific language mastery is not important, though knowing one of C, C++, or Java will be helpful. The second project will be a synthesis paper. Students will research an area by selecting and reading three related works from highly selective conference or journal venues. The student will then construct a taxonomy and use the taxonomy as an organizing principle for his/her thoughts and for the paper. The synthesis paper can be a breakthrough experience in independent scholarship for a student. When coupled with the first project around a cohesive theme, the two projects can provide a path for independent scholarship beyond the spring semester, resulting in publishable material suitable for a workshop or conference.

The textbook is Coulouris, Dollimore, and Kindberg's, Distributed Systems Concepts and Design, 4th Edition, Addison Wesley, 2005. It is a required text. Other readings will come from conference and journal papers.

Grading

The course grade is determined by the student's performance over three areas: projects, readings, and problem solving. Discussion is instrumental to effective learning, so the student is expected to read papers outside of class. Abstracts (1-2 paragraphs each) will be required for each reading. No more than 8 abstracts will be required.

  • 20% abstracts and class participation
  • 40% projects (includes Synthesis paper)
  • 10% hws (2)
  • 15% midterm
  • 15% final exam
  • Abstract Submission

    The abstract should be about 500 words in length. An abstract should include all three of the following components:

    Abstracts that cut-and-paste out of the paper will be rejected.

    Abstracts are due before class (5:30PM) on the day the paper is scheduled to be discussed. Submit the abstract under the assignments section of the course webpage on Oncourse. A separate assignment entry is open for each paper.

    Projects


    Agenda:

    Below is the agenda guiding the course. Because of the variability of guest speakers and other unexpected events, this schedule will likely change some so please check back frequently.

    Intro to Distributed Systems: Issues and Architectures

    Naming and Threads

    Models of Distributed Computing: Performance, Replication, Virtualization, Scalability

    [Ch secs 15.1-15.4 and class notes]

    Logical time, Global Snapshots, Stable Properties

    Distributed File Systems and File Sharing Applications

    Web Services

    Student Presentations

    May 2, 5:00-7:00 final exam


    Resources

    Efficient Reading of Papers in Science and Technology, a brochure by Michael J. Hanson, updated and re-typeset by Dylan McNamee Pthreads notes:
  • Pthread reference
  • Thread models and issues in scheduling
  • Thread design patterns
  • C Language, Debugging, and Programming Mechanics Resources:

  • Programming in C, UNIX System Calls and Subroutines using C, A.D. Marshall, 1999.
  • Debugging a Program with dbx.
  • Sun Workshop. Sun Workshop is a prorgramming development environment. Of interest because it contains a debugger that is essentially a GUI on top of dbx. It is located on IU CS Solaris machines at /opt/SUNWspro/bin.
  • Programming Mechanics by Kenneth Chiu. Explains some of the basic concepts on linking and makefiles.
  • System Monitoring functions:

  • File-based approach to retrieve host metrics.
  • Code for script-based approach and accompanying script.
  • kstat.c
  • Statement on academic integrity

    Learning is a collaborative enterprise. However, plagiarism, copyright infringement, and other types of academic dishonesty will NOT be tolerated. As a rule of thumb, when in doubt, cite the source (of both written and verbal contributions to your ideas and products).

    The course prerequisite is B536 Advanced Operating Systems or consent of instructor.