Machine Learning for Computer Systems

Applications of machine learning to computer systems with focus on networking

Course Overview

This course covers applications of machine learning to computer systems, with a particular focus on security, performance analysis, and prediction problems in networking. Topics include data preparation, feature selection, model evaluation, fairness, interpretability, and ML testing/debugging.

Primary Focus: Networking applications, though principles apply broadly across systems.

Course Resources

Lecture Topics (22 Lectures)

Use Cases (Lectures 1-4)

  • Introduction with Packet Capture basics
  • Security applications (scanning)
  • Performance analysis (QoE inference)
  • Resource optimization

Data & Pipeline (Lectures 5-8)

  • Data acquisition and feature extraction
  • Data preparation and representation
  • Model training and evaluation

Supervised Learning (Lectures 9-14)

  • Naive Bayes
  • Linear and polynomial regression
  • Logistic regression and SVMs
  • Trees and ensembles
  • Deep learning
  • Traffic representation learning (nPrint)

Unsupervised Learning (Lectures 15-17)

  • Dimensionality reduction
  • Clustering
  • Autoencoders

Generative Models (Lectures 18-19)

  • Transformers and large language models
  • Diffusion and state-space models

Bonus Topics (Lectures 20-22)

  • Timeseries analysis
  • Reinforcement learning
  • Model performance and maintenance

Course Materials

Jupyter Notebooks

Interactive lectures available on GitHub covering each topic with hands-on examples.

Reading Materials

  • Textbook chapters (Ch. 1-8)
  • Research papers
  • Additional resources in ML readings list

Assignments

Programming assignments and projects focused on applying ML to networking problems.

Format

The course uses a combination of:

  • Lecture presentations
  • Interactive Jupyter notebooks
  • Hands-on programming assignments
  • Reading materials from textbooks and research papers