What is this course about?

This course aims to provide an iterative framework for developing real-world machine learning systems that are deployable, reliable, and scalable.

It starts by considering all stakeholders of each machine learning project and their objectives. Different objectives require different design choices, and this course will discuss the tradeoffs of those choices.

Students will learn about data management, data engineering, feature engineering, approaches to model selection, training, scaling, how to continually monitor and deploy changes to ML systems, as well as the human side of ML projects such as team structure and business metrics. In the process, students will learn about important issues including privacy, fairness, and security.

Why machine learning systems design?

Machine learning systems design is the process of defining the software architecture, infrastructure, algorithms, and data for a machine learning system to satisfy specified requirements.

The tutorial approach has been tremendously successful in getting models off the ground. However, the resulting systems tend to go outdated quickly because (1) the tooling space is being innovated, (2) business requirements change, and (3) data distributions constantly shift. Without an intentional design to hold all the components together, a system will become technical liability, prone to errors and quick to fall apart.


Students are expected to have the following background:

Honor Code

Permissive but strict. If unsure, please ask the course staff!

Audit policy

We’re open to auditing requests by Stanford students and staff. You will be able to attend all the lectures, but we won't be able to grade your homework or give advice on final projects. Our human resources are limited. To audit the class, please send cs329s-win2022-staff@lists.stanford.edu an email with the subject title "CS329S: Audit Request" with a few sentences introducing yourself and your relevant background.

Because the course is in-person on campus, external requests will not be considered.

The slides, (very intensive) notes, assignments, and final project instructions will be made publicly available on the Syllabus page.

Reference Text

The course relies on lecture notes and accompanying readings.


How difficult is the course?
The materials are not difficult to understand, but the final projects are fairly involved. We wouldn't recommend taking the course unless you're ready to build things and learn from hands-on experience!
Does the course count towards CS degrees?
For undergraduates, CS 329S can be used as a Track C requirement or a general elective for the AI track. For all other tracks, they would need to petition to use the course.

For master's students, CS 329S can satisfy the AI Specialization Depth C requirement. It can also be used as a general elective for all MS students, regardless of their specialization.
Are lectures recorded?
Yes, the lectures will be recorded and made available to enrolled students, including SCPD students.
Is attendance mandatory?
We won't be taking attendance but we expect to see you often in class. We love talking to students to understand how you are doing, make sure you get the most out of the class, and get your feedback to improve the materials. The class is relatively small so we will probably get to know each other well.
If you have a time conflict and can't attend the lectures, please send us an email to let us know!
What is the format of the class?
It will be lectures, tutorials, and discussion. We will often have industry experts to give us tutorials on tools for data streaming, experiment tracking, deep learning framework, monitoring, etc.
I don't have a team for the final project, can I still enroll?
Yes. Most students don't have a team already when they join the course. We'll have activities for you to find project partners.
Can I work in groups for the assignments?
Yes, in groups of up to two people.
How mature is the course?
This is the second time the course is offered. The materials are a lot more developed compared to the first time, however, there is still a long way to go. We're trying our best to ensure the quality of the lectures, but here and there things might not be as polished as other courses. Your feedback will be greatly appreciated.
Do I need to know Python for the course?
Since Python has become the most popular language for machine learning, we expect most tutorials will be in Python. Python fluency isn't required, but will make your life so much easier during the course.
Will the videos be made available publicly?
We won't know untile the end of the course. We're trying, but it's not solely our decision to make. We'll announce on the guest mailing list if and when the videos are available.
Can I follow along from the outside?
We'd be happy if you join us! All the slides and lecture notes will be posted on this website. You can also subscribe to the guest mailing list to get updates from the course.
I have a question about the class. What is the best way to reach the course staff?
Please post your question on the course forum so that other students can benefit from your questions. If you have a personal matter or emergencies, please email the staff at cs329s-win2022-staff@lists.stanford.edu.