CS560: Advanced Software Systems (Spring 2019)

Course Administrivia

  CS560, Spring 2019
   Qing Charles Cao  (email: cao@utk.edu)
Teaching assistant:
   Haoran Niu
Paper Summaries:
  http://online.utk.edu through the discussion board
  Tuesday, Thursday, 8:10am-09:25am MK405 (Lectures/Discussions/Presentations)
  Tuesday, Thursday, 9:30am-11:00am, MK430 (Lecturer Office Hours)
  Lab hours: 1:25pm-4:25pm MK418 Friday
  TA Office Hours: Tuesday 3:30pm - 5:30pm MK205

  Operating System Concepts, by Silberschatz, Galvin, and Gagne
  (recommended only if you have not yet taken OS undergraduate courses. If you have taken
  such a course, your undergraduate textbook is also sufficient.)

Schedule (Tentative)

(Changes may be made without advance notice. Slides will be posted before each class in the blackboard system. This webpage will be primarily used for coordination purposes. I will try to update the slides before each class, but last minute changes are possible. )

Class Lectures Readings Presented by
Overview of Topics and Knowledge Background
1 Jan 10 Course Overview and Undergraduate OS Review
2 Jan 15 OS Kernel:
Processes, Threads, and Their interactions
The Unix Time-sharing System
Textbook Chapter 3-6
3 Jan 17
Memory Management (Textbook Chapter 8-9) Cao
4 Jan 22
Unix File System (Textbook Chapter 10-12)
(optional: A File is Not a File: Understanding the I/O Behavior of Apple Desktop Applications)
System Kernel, Concurrency, and Scheduling 
Jan 24
The Mach Operating System (Summary 1)
Jan 29
Building blocks:
Implementing remote procedure calls 
Jan 31
Building blocks: Socket Programming
Paper: A Protocol for Packet Network Intercommunication
Programming Assignment 1
Feb 5
Primer on pThreads and its Programming (Chapter 1-6)
Clara and Rachel
  Feb 7
The Linux Scheduler: a Decade of Wasted Cores
Feb 12
Real-time Systems:
Algorithms  for  Multiprogramming  in  a  Hard Real-Time  Environment   (Summary 2)
Jacob and Jiangnan
Distributed and Networked Systems
11 Feb 14
Peer-to-Peer Networks:
Chord: A Scalable Peer-to-peer Lookup Service for Internet Applications
Dakota and Andrey
Feb 19
Big-data Systems:
The Google File System   (Summary 3)
Chujie, Chengyong, and Yuandong
Feb 21
Distubted Programming in Data Centers:
MapReduce: Simplified Data Processing on Large Clusters
Programming Assignment 2
Brent and John
Feb 26
Programming Abstractions:
Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing  (Summary 4)

Tyler and Zac

Feb 28
Programming Abstractions:
GraphX: Graph Processing in a Distributed Dataflow Framework

Mar 5 Software for AI
TensorFlow: A System for Large-Scale Machine Learning (Summary 5)

Lu and Ziming

17 Mar 7
Software for AI
Ray: A Distributed Framework for Emerging AI Applications

Shan and Mike

File System,  Storage, and Data Analysis
Mar 12
File System:
A Fast File System for UNIX 
Alex and Eric
Mar 14
File System:
TAO: Facebook's Distributed Data Store for the Social Graph
(Summary 6)
Rushita and Anish
Mar 26
Distributed File System:
Disconnected Operation in the Coda File System
Xiaoyang and Yicheng
Mar 28
Caching systems
An Analysis of Facebook Photo Caching
(Summary 7)

Cole and Jiajia

Apr 2
KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs
(Summary 8)
Jackson and Jamie
Apr 4
The Mystery Machine: End-to-end performance analysis
of large-scale Internet services

Reliability, Mobility, and Energy Awareness
24 Apr 9
Mobile Operating Systems:
Tutorial on the Android Operating System
(online materials at https://developer.android.com/training/index.html)
25 Apr 11
Software Defined Batteries (Summary 9)
26 Apr 16
Virtualization and Containers
Docker documentation (https://docs.docker.com/)


27 Apr 18
Mobile software:
Flywheel: Google’s Data Compression Proxy for the Mobile Web
(Summary 10)
28 Apr 23
Bug detection:
Bugs  as  Deviant  Behavior:  A  General Approach to Inferring  Errors in  Systems  Code
29 Apr 25 Class Review and Conclusions Cao

Course Description

The goals of this course are:

•    To understand the state of the art in operating systems and distributed systems.
•    To understand how to carry out system-related research.
•    To practice extensively on programming skills for large-scale software projects through three course projects.

This course assumes a basic familiarity with operating systems concepts. The course will consist of  a reading/lecture/discussion component and a project component. Some of these papers will introduce students to the basic principles on which modern operating systems and distributed systems are based. Others will cover more recent work to explore the state of the art and observe the evolution of these systems over time. Students are expected to read papers before the class and participate in the presentation and discussion during the class.


 Programming language experiences, such as C. Basic knowledge in mathematics such as probability theory.


Academic Integrity: All computer programs and projects turned in for credit must be each student's own work. Students must write their own programs and problem solutions from scratch independently. No discussion is allowed during quiz and exams. Any violations will result in a minimum penalty of a zero on the given assignment, quiz or exam.

Paper Reviews: You must write your own paper summary/review. No copying from other sources are allowed. Writing reviews will greatly enhance your understanding and learning of the papers. Only some papers require you to submit summaries, and for these papers, you must address the following questions:

•    What problem does this paper try to solve? Why is such a problem important?
•    What are assumptions made by this paper? Are they verifiable? Are there logical holes in such assumptions?
•    What are the major solutions of this paper?
•    Do you think the solutions in this paper will work for the problem?
•    Do you think the paper evaluates the solutions in a convincing manner?
•    List two limitations of the solutions proposed in this paper, and outline your method to fix them.

The paper reviews need to be submitted on the discussion boards in the blackboard system. All reviews are visible to everyone. Late reviews will have points taken off accordingly. 

Disability Statement:  Any student who feels s/he may need an accommodation based on the impact of a disability should contact me privately to discuss your specific needs. Please contact the Office of Disability Services at 865-974-6087 in Hoskins Library to coordinate reasonable accommodations for students with documented disabilities.


Project Policy:
•    Project reports should be turned in before the specified project deadlines.

Exam Policy:
•    No make-up exams will be provided.

Late Assignment Policy:
•    This policy applies to projects and homework assignments.
•    Late assignment will be accepted with penalty based on the number of late hours.

Within 4 hour: 10% of actual points deducted
Within 8 hours: 25%
Within 12 hours: 50%
More than 12 hours: not accepted

Grading policy:

Programming projects  (30%)  Exams (30%) Project (20%)  Reading and Presentation (10%)   Class attendance (10%)

Tentative grading scheme:

A    [90, 100]   B+    [85, 90)   B    [80, 85)   C+    [75, 80)   C    [70, 75)


  1. Writing Technical Articles  on Henning Schulzrinne's website
  2. Writing Reviews for Systems Conferences by Timothy Roscoe.
  3. ACM Digital Library and IEEE Xplore for papers.
  4. Google scholar and Microsoft Academic Search for searching for papers.
  5. DBLP for finding papers based on authors.