CIS 505:
Software Systems
Spring 2011


Instructor: Boon Thau Loo
Room: Wu and Chen Auditorium
Time: Monday and Wednesday 12 - 1:30pm
Office hours: Mon 1:30-2:30pm, 605 Levine.

Teaching assistants:

  • Harjot Gill (gillh AT seas.upenn.edu). Office hours: Tues 4-5pm (Moore 100 lab)
  • Rafi Rubin (rafi AT seas.upenn.edu). Office hours: By appointment only.
  • Geetika Vasudeo (geetikav AT seas.upenn.edu). Office hours: Wed 1:30-2:30pm (Moore 100 lab).
  • Zhuoyao Zhang (zhuoyao AT seas.upenn.edu). Office hours: Thurs 10-11am (6th floor lobby).

    Graders: Changbin Liu (changbl AT seas.upenn.edu), Anduo Wang (anduo AT seas.upenn.edu), Wenchao Zhou (wenchaoz AT seas.upenn.edu)


    Course Description

    This course provides an introduction to fundamental concepts of distributed systems, and the design principles for building large scale computational systems. The course will involve three written assignments, paper summaries, two programming projects, a midterm, and a final examination.

    Course textbook:

  • Distributed Systems: Principles and Paradigms, Second Edition by Andrew S. Tanenbaum and Maarten van Steen, Prentice Hall, 2007. (E.g., 1, 2, 3.)
  • Additional material will be drawn from selected research publications.

    Course pre-requisites:

  • Either undergraduate networking or operating systems is required. You should also be comfortable programming in C/C++ and/or Java.


    Grading

  • Written assignments and paper summaries: 9%
  • Programming projects: 40% (10% for project 1, 30% for project 2)
  • Class participation: 3%
  • Midterm: 16%
  • Final: 32%

    Class participation will be graded based on regular class attendence, visibility on newsgroup, and contribution to group projects.


    Schedule

    Syllabus is subjected to change and tentatively based on the schedule in Spring 2009. Please revisit this page regularly before class.

    Date Topic Reading Remarks
    Jan 12 Introduction Chapter 1-2
    Jan 19 Project 1 discussion, code repository tutorial, one-lane bridge demo Geetika, Harjot, and Rafi guest lectures
    Jan 24 Processes, threads Chapter 3 Project 1 (due Feb 11)
    Jan 26 Concurrency (semaphores)
    Jan 31 RPC, communication protocols Chapter 4.1-4.2, 8.3.2
    Feb 2 Message queues Chapter 4.3, 10.3
    Feb 7 Name, addresses, locations Chapter 5
    Feb 9 Clock synchronization, logical clocks Chapter 6.1-6.2 Homework 1 (due Feb 18)
    Feb 14 Logical clocks (continue)
    Feb 16 Mutual exclusion, Elections Chapter 6.3, 6.5
    Feb 21 Group communication Handout Homework 2 (due Feb 28)
    Feb 23 Group communication, Project 1 recap Geetika, Harjot, and Rafi discussions
    Feb 28 Midterm review
    Mar 2 Midterm
    Mar 5-13 Spring break
    Mar 14 Distributed commit, recovery Chapter 8.4-8.5 Project 2 (due Apr 16)
    Mar 16 Replication protocols Chapter 7.1-7.5
    Mar 21 Replication protocols (cont), project 2 discussion Chapter 7.1-7.5 Project 2 discussion by Geetika, Harjot, and Rafi.
    Mar 23 Process resilience Chapter 8.1-8.3. [BGP]
    Mar 28 Fault Tolerance
    Mar 30 Real-time Scheduling Guest lecture by Linh Phan
    Apr 4 Distributed File Systems (NFS and Coda) Chapter 11, [Coda]
    Apr 6 Google File System, MapReduce [Cluster] [GFS]
    Apr 11 MapReduce [MR]
    Apr 13 MapReduce (cont), BigTable [BigTable] [LATE]
    Apr 18 Distributed hash tables, Chord file system [Chord] [CFS] Homework 3 (due Apr 27)
    Apr 20 Chord file system, Amazon Dynamo [Dynamo]
    Apr 25 Finals review


    Significant Dates

  • Jan. 17, Martin Luther King day
  • Jan. 31, Last day to add a course
  • Feb. 18, Last day to drop a course
  • Mar. 5 - Mar. 13, Spring break
  • Apr. 26 - End of Spring term classes
  • Apr. 27 - Apr. 9, Reading days
  • May. 2 - 10, Final exams