CIS 505: Software Systems

Home | Lectures | Assignments | Projects

Instructor: Insup Lee

Time & Place: Monday and Wednesday 3:00-4:15 pm, Moore 216

Teaching Assistants:
David Arney (arney {at}
Arvind Easwaran (arvinde {at}

Office Hours

  • Insup Lee : Tuesday and Wednesday 4.21-5.12 pm (Levine 602) and by email appointment
  • David Arney: Monday 2:00 - 2:50 pm, Thursday 4:00 - 5:00 pm (GRW 279)
  • Arvind Easwaran: Friday 12:00 - 1:00 and 4:00 - 5:00 (Levine 310)
  • Newsgroup

  • blackboard at
  • Course Description

    Ever increasing availability of processors connected by a communication network has motivated the development of numerous concepts and paradigms for distributed systems. The primary objectives of this course are to study the principles and concepts of distributed computing and to allow students to experience the development of software for distributed systems. The students will learn about the nature of distributed systems including problems, solutions and limitations, as well as theoretical foundations for the design and implementation of distributed software systems. Topics to be covered include communication, concurrency, programming paradigms, naming, managing shared state, caching, synchronization, reaching agreement, fault tolerance, security, middleware, real-time embedded systems, and applications.


  • Several Programming Assignments and Problem Sets
  • Group Programming Project: Each group will be 2-3 people. Each group selects their own project with the consent from the instuctor. Its requirements are that it must be non-trivial and involve some aspects of concurrent and distributed programming.
  • Project

  • Project Description
  • Exams

  • Midterm: Monday, March 19th (Spring 2005 - Midterm, Spring 2005 - Midterm Solutions Spring 2006 Midterm, Spring 2006 Midterm Solutions, Spring 2006 Midterm Solutions - Questions 3 and 8, Spring 2006 Midterm Solutions - Questions 3 and 8)
    2007 Midterm Solutions

  • Final: May 2nd

    Solutions for 2007 Final

  • Grading

  • Assignments and Project: 50%
  • Midterm Exam: 20%
  • Final Exam: 30%
  • Textbooks and Reading Material

  • Distributed Systems: Principles and Paradigms, Second Edition by Andrew S. Tanenbaum and Maarten van Steen, Prentice Hall, 2007.
  • Communicating Sequential Processes by Tony Hoare, Prentice Hall, 1985. (Free online copy available from
  • The Poor Man's Guide to Computer Networks and their Applications by Robin Sharp, April 2004. [pdf]
  • Selected Papers.