Meeting Times and Locations

Monday & Wednesday 11:30AM - 12:20PM at 320-106.

Course Description

This is an advanced topics course on building autonomous networks using data and techniques from machine learning. It covers two major application areas: Cloud Computing Systems and Mobile Wireless Networks. The course introduces the architecture of Self-Programming Networks for sensing, inferring, learning and control, consisting of (i) a "reflex layer" for inferring at line rate and at scale, and (ii) a "deliberate layer" for efficient resource scheduling and network control. Various sensing and inference algorithms for deriving insights and alerts from the sensed data will be discussed. Methods for synchronizing clocks across a large data center and using this to reconstruct the fine details of network performance (queue-depths, link utilizations and buffer and link compositions) in near real-time will be presented. Similarly, methods for inferring available bandwidth in dynamic mobile networks and using it to drive different application optimizations will be presented. Students will learn the use of neural networks and learning techniques (a) to accelerate inference and control algorithms, (b) for "workload fingerprinting", (c) for predicting wireless link capacities, and (d) for scheduling resources. Finally, the principles of creating an interactive database for detecting anomalies, raising alerts, and serving insights to the user will be discussed. The course involves a team-based project.

Course Outline

See Handouts for a list of topics and reading materials.

Important Dates

Project milestones Date
Teammate declared to CA Mon, Jan 29, 2018
Project description Wed, Feb 7, 2018
Project progress report Wed, Feb 21, 2018
Final presentations Mon, Mar 12, 2018

Prerequisites

Students are expected to have the following background:

  1. Familiarity with basic probability and statistics theory (at a minimum, at the level of EE178).
  2. Familiarity with basic linear algebra.
  3. The ability to write non-trivial computer programs with Python.
  4. Basic machine learning knowledge at CS 229 level or equivalent.

Course Materials

Lecture notes and slides will be posted on-line in Handouts.

More information is available on the Self-Programming Networks webpage of Platform Lab.

Course Work and Grading

3 homeworks, 40%. Final project: 60%.

Homeworks

Three to four homeworks and one final project that will involve programming as well as regular numerical/algebraic theory problems.

Questions: We try very hard to make questions unambiguous, but some ambiguities may remain. Ask us if confused or state your assumptions explicitly. Reasonable assumptions will be accepted in case of ambiguous questions.

Honor code: We strongly encourage students to form study groups. Students may discuss and work on homework problems in groups. However, each student must write down the code and solutions independently, and without referring to written notes from the joint session. In other words, each student must understand the solution well enough in order to reconstruct it by him/herself. In addition, each student should write on the problem set the set of people with whom she/he interacted.

Finally, we consider it an Honor Code Violation to post your homework solutions to a place where it is easy for other students to access it. This includes uploading your solutions to publicly-viewable repositories like on GitHub.

The standard penalty for a first offense includes a one-quarter suspension from the University and 40 hours of community service. And the standard penalty for multiple violations (e.g. cheating more than once in the same course) is a three-quarter suspension and 40 or more hours of community service. Stanford Office of community standards has more information.

Assignment submission: Submission guidelines will be included in every homework handout posted.

Regrade policy: We take great care to ensure that grading is fair and consistent. Since we will always use the same grading procedure, any grades you receive are unlikely to change significantly. However, if you feel that your work deserves a regrade, please submit a written request within a week of receiving your grade. In your request, indicate which components of your submission you would like regraded, and prepare a clear and concise argument why you feel we should regrade those components.

Regrades should be mailed to the course staff mailing list.

However, note that we reserve the right to regrade the entire assignment. Moreover, if the regrade request is unjustified and thus not honored, then every future unsuccessful regrade request will be penalized 5 points.

Communication