CS560: Advanced Software Systems (Spring 2019)





Course Administrivia

Course:
  CS560, Spring 2019
Instructor:
   Qing Charles Cao  (email: cao@utk.edu)
Teaching assistant:
   Haoran Niu
 Homepage:
   http://web.eecs.utk.edu/~qcao1/cs560
Paper Summaries:
  http://online.utk.edu through the discussion board
Hours:
  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

Textbook:
  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
Cao
2 Jan 15 OS Kernel:
Processes, Threads, and Their interactions
The Unix Time-sharing System
Textbook Chapter 3-6
Cao
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)
Cao
System Kernel, Concurrency, and Scheduling 
5
Jan 24
Microkernel:
The Mach Operating System (Summary 1)
Cao
6
Jan 29
Building blocks:
Implementing remote procedure calls 
Cao
7
Jan 31
Building blocks: Socket Programming
Paper: A Protocol for Packet Network Intercommunication
https://docs.oracle.com/javase/tutorial/networking/sockets/
Programming Assignment 1
Cao
8
Feb 5
Primer on pThreads and its Programming (Chapter 1-6)
Clara and Rachel
   9
  Feb 7
The Linux Scheduler: a Decade of Wasted Cores
Cao
10
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
12
Feb 19
Big-data Systems:
The Google File System   (Summary 3)
Chujie, Chengyong, and Yuandong
13
Feb 21
Distubted Programming in Data Centers:
MapReduce: Simplified Data Processing on Large Clusters
Programming Assignment 2
Brent and John
14
Feb 26
Programming Abstractions:
Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing  (Summary 4)

Tyler and Zac

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


16
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
18
Mar 12
File System:
A Fast File System for UNIX 
Alex and Eric
19
Mar 14
File System:
TAO: Facebook's Distributed Data Store for the Social Graph
(Summary 6)
Rushita and Anish
20
Mar 26
Distributed File System:
Disconnected Operation in the Coda File System
Xiaoyang and Yicheng
21
Mar 28
Caching systems
An Analysis of Facebook Photo Caching
(Summary 7)

Cole and Jiajia

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

Cao
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)
Cao
25 Apr 11
Energy:
Software Defined Batteries (Summary 9)
Cao
26 Apr 16
Virtualization and Containers
Docker documentation (https://docs.docker.com/)

Cao

27 Apr 18
Mobile software:
Flywheel: Google’s Data Compression Proxy for the Mobile Web
(Summary 10)
Cao
28 Apr 23
Bug detection:
Bugs  as  Deviant  Behavior:  A  General Approach to Inferring  Errors in  Systems  Code
Cao
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.

Prerequisites

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


Policies

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.


Grading

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)



Resources

  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.