CIS 505

Software Systems
Spring 2016


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

Teaching assistants:

 

  • Yang Cao (yangcao@seas.upenn.edu)
  • Aayushi Dwivedi (aayushi@seas.upenn.edu)
  • Jitesh Gupta (jiteshg@seas.upenn.edu)
  • Bingying Liu (bingying@seas.upenn.edu)
  • Ankit Mishra (mankit@seas.upenn.edu)
  • Anand Sriramulu (anandsri@seas.upenn.edu)
  • Stuart Wagner (wagners@seas.upenn.edu)See Piazza for details on TA office hours and venue.

    Piazza discussion group: https://piazza.com/upenn/spring2016/cis505

    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, three 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: 8%
  • Programming projects: 45% (8% for project 1, 12% for project 2, and 25% for project 3)
  • Class participation: 2%
  • Midterm: 15%
  • Final: 30%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 2011. Please follow lecture slides on Piazza instead for more up-to-date schedule.

    Date Topic Reading Remarks
    Jan 13 Introduction Chapter 1-2
    Jan 20 Processes, threads Chapter 3
    Jan 25 Concurrency (semaphores) Project 1 (due Feb 4)
    Jan 27 RPC, communication protocols Chapter 4.1-4.2, 8.3.2
    Feb 1 Buffer
    Feb 3 Message queues Chapter 4.3, 10.3
    Feb 8 Name, addresses, locations Chapter 5
    Feb 10 Clock synchronization, logical clocks Chapter 6.1-6.2 Homework 1 (due Feb 18)
    Feb 15 Logical clocks (continue) Project 2 (due Feb 26 and March 14)
    Feb 17 Mutual exclusion, Elections Chapter 6.3, 6.5
    Feb 22 Group communication Homework 2 (due Feb 29)
    Feb 24 Distributed commit
    Feb 29 Midterm review
    Mar 2 Midterm
    Mar 5-13 Spring break
    Mar 14 Recovery and Replication Chapter 8.4-8.5
    Mar 16, 21 Replication and File Systems Chapter 7.1-7.5 Project 3 (due Apr 24)
    Mar 23 File Systems, Distributed File Systems (NFS and Coda) Chapter 11, [Coda]
    Mar 28 Process resilience Chapter 8.1-8.3. [BGP]
    Mar 30 Google File System [Cluster] [GFS]
    Apr 4 Parallel data computation: MapReduce, Pig, Hive [MR]
    Apr 6 MapReduce (continuation), Spark [Spark]
    Apr 11 Spark (continuation)
    Apr 13 No class. Instructor out of town.
    Apr 18 Apache Kafka: High-throughput distributed messaging [Apache Kafka] Guest lecture by Dong Lin from LinkedIn
    Apr 20 Spark (continuation), Distributed hash tables, Dynamo [Chord] [Dynamo] Homework 3 (due Apr 28)
    Apr 25 Final Project Demo
    Apr 27 Dynamo, Zookeeper [Zookeeper]