CIS 505:
Software Systems
Spring 2009


Instructor: Boon Thau Loo (boonloo AT cis.upenn.edu)
Room: Wu and Chen Auditorium
Time: Monday and Wednesday 1:30-3pm
Office hours: Mon 3-4pm, 605 Levine.
Newsgroup: http://groups.google.com/group/cis505-sp09

Teaching assistants:

  • Rafi Rubin (rafi AT seas.upenn.edu). Office hours: Wed 3-4pm, 315 Moore.
  • Sandy Clark (saender AT seas.upenn.edu). Office hours: Tues 3-4pm, 102 Moore.
  • Steven Zhou (wenchaoz AT seas.upenn.edu). Office hours: Friday 1-2pm, 613 Levine.

    Grader: Changbin Liu (changbl AT seas.upenn.edu)


    Announcements

  • Project 2 resources
  • Background reading for project 2
  • Project 1 files
  • All announcements will be posted on the newsgroup. Sign up for the newsgroup asap.

    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: 12%
  • Programming projects: 30%
  • Class participation: 3%
  • Midterm: 20%
  • Final: 35%

    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 2008. Please revisit this page regularly before class. The lecture slides are available on the newsgroup.

    Date Topic Reading Remarks
    Jan 14 Introduction Chapter 1-2
    Jan 21 Processes, Threads
    Code repository tutorial (Rafi and Sandy)
    Chapter 3
    Jan 26 Concurrency I (thread models, semaphores) Project 1 (due Feb 9)
    Jan 28 Concurrency II (semaphores)
    One-lane bridge demo (Rafi)
    Project 1 discussion (Rafi and Sandy)
    Jan 30 Concurrency III (monitors, condition variables)
    Feb 2 RPC, communication protocols Chapter 4.1-4.2, 8.3.2
    Feb 4 RMI, message queues Chapter 4.3, 10.3
    Feb 9 Naming, addresses, locations Chapter 5 Homework 1 (due Feb 18)
    Feb 11 Clock synchronization, logical clocks Chapter 6.1-6.2
    Feb 16 Logical clocks (continue)
    Feb 18 Mutual exclusion Chapter 6.3 Homework 2 (due Mar 2)
    Feb 23 Elections, Group communication Chapter 6.5, Handout Guest lecture (MQSeries)
    Feb 25 Group communication Chapter 8.4
    Mar 2 Midterm review
    Mar 4 Midterm
    Mar 7-15 Spring break
    March 16 Distributed commit, recovery Chapter 8.4-8.5
    Mar 18 Process resilience Chapter 8.1-8.3 Project 2 (due Apr 20)
    Mar 23 Fault Tolerance (continue), project 2 discussion
    Mar 25 Replication protocols Chapter 7.1-7.5
    Mar 30 Security in Distributed Systems I Chapter 9 Micah Sherr guest lecture
    Apr 1 Security in Distributed Systems II Chapter 9 Eric Cronin and Gaurav Shah guest lecture
    Apr 6 Replication protocols (continue) Chapter 7.1-7.5
    Apr 8 Distributed File Systems (NFS) Chapter 11
    Apr 13 Coda File System [Coda]
    Apr 15 Google File System, MapReduce [Cluster] [GFS] [MR]
    Apr 20 BigTable, Distributed hash tables [BigTable] [Chord]
    Apr 22 Project 2 demos (Moore 207, 12 noon - 6pm)
    Apr 27 Amazon Dynamo [Dynamo]
    May 12 Final


    Significant Dates

  • Jan. 19, Martin Luther King day
  • Feb. 2, Last day to add a course
  • Feb. 20, Last day to drop a course
  • Mar. 7 - Mar. 15, Spring break
  • Apr. 28 - End of Spring term classes
  • Apr. 29 - May. 1, Reading days
  • May. 4 - 12, Final exams