# CS 329S | Home

https://cs329s.stanford.edu/

[CS 329S](https://cs329s.stanford.edu/index.html)
  * [Overview](https://stanford-cs329s.github.io/index.html#overview)
  * [Syllabus](https://stanford-cs329s.github.io/syllabus.html)
  * [FAQ](https://stanford-cs329s.github.io/index.html#faq)
  * [Past course](https://stanford-cs329s.github.io/2021/)
  * [Past projects](https://stanford-cs329s.github.io/reports/)


[ ![](https://stanford-cs329s.github.io/images/stanfordlogo.png) ](http://stanford.edu/)
# CS 329S: Machine Learning Systems Design
### Stanford, Winter 2022
We love the students' work this year! You can find recording of the demo day on [YouTube](https://www.youtube.com/watch?v=AZNTqytOhXk&t=12771s)!  
Lecture notes for the course have been expanded into the book [Designing Machine Learning Systems](https://www.amazon.com/Designing-Machine-Learning-Systems-Production-Ready/dp/1098107969) (Chip Huyen, O'Reilly 2022). 
## Logistics
  * **Lectures** : Mon/Wed 3:15 - 4:45pm PST. Class: 75% lectures, 25% tutorials.
  * **Location** : Zoom links can be found on Canvas
  * **Office hours** : 
    * Megan: Mon 2 - 2:30pm PST
    * Chloe: Tue 8:30 - 9am PST
    * Chip: Wed 6 - 6:30pm PST
    * Kinbert: Tue 3 - 3:30pm PST
  * **Grading** : 
    * one final project to build an ML application (65%). We'll have a demo day to showcase all students' final projects. See last year projects [here](https://stanford-cs329s.github.io/reports/)
    * two to three fun, short assignments (30%)
    * discussion participation in class + EdStem + OHs (5%)
  * **Contact** : Students should ask _all_ course-related questions on our Piazza forum, where you will also find all the announcements.
  * **Academic accommodations** : If you need an academic accommodation based on a disability, you should initiate the request with the [Office of Accessible Education (OAE)](https://oae.stanford.edu/accommodations/academic-accommodations). The OAE will evaluate the request, recommend accommodations, and prepare a letter for faculty. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations.
  * **Honor code** : Very important. See [Honor Code](https://stanford-cs329s.github.io/#honor-code).


## Team
### Instructor
[ ![](https://stanford-cs329s.github.io/images/chip.jpg) Chip Huyen ](https://huyenchip.com)
### TAs
[ ![](https://stanford-cs329s.github.io/images/megan.jpeg) Megan Leszczynski ](http://www.mleszczy.com)
[ ![](https://stanford-cs329s.github.io/images/kinbert.jpeg) Kinbert Chou ](https://www.linkedin.com/in/kinbertchou/)
[ ![](https://stanford-cs329s.github.io/images/chloe.jpeg) Chloe He ](https://www.chloe-he.com/)
  

## Overview
###  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. 
###  Prerequisites
Students are expected to have the following background:
  * Knowledge of basic computer science principles and skills, at a level sufficient to write a reasonably non-trivial computer program (e.g., CS106B/X or equivalent).
  * Good understanding of machine learning algorithms (e.g. at least one of CS229, CS230, CS231N, CS224N or equivalent). 
  * Familiar with at least one framework such as TensorFlow, PyTorch, JAX.
  * Familiarity with basic probability theory (CS109 or Stat116 or equivalent is sufficient but not necessary). 


###  Honor Code
Permissive but strict. If unsure, please ask the course staff!
  * OK to search, ask in public about the systems we’re studying. Cite all the resources you reference.  
E.g. if you read it in a paper, cite it. If you ask on Quora, include the link.
  * NOT OK to ask someone to do assignments/projects for you.
  * OK to discuss questions with classmates. Disclose your discussion partners.
  * NOT OK to copy solutions from classmates.
  * OK to use existing solutions as part of your projects/assignments. Clarify your contributions.
  * NOT OK to pretend that someone’s solution is yours.
  * OK to publish your final project after the course is over (we encourage that!)
  * NOT OK to post your assignment solutions online.


###  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.  
  

  

## FAQ
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](http://mailman.stanford.edu/mailman/listinfo/cs329s-win2021-guests) 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](http://mailman.stanford.edu/mailman/listinfo/cs329s-win2021-guests) 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](https://edstem.org/us/courses/16258/) 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.
