CS230: Deep Learning

Fall 2018


Course Description   Deep Learning is one of the most highly sought after skills in AI. We will help you become good at Deep Learning. In this course, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to lead successful machine learning projects. You will learn about Convolutional networks, RNNs, LSTM, Adam, Dropout, BatchNorm, Xavier/He initialization, and more. You will work on case studies from healthcare, autonomous driving, sign language reading, music generation, and natural language processing. You will master not only the theory, but also see how it is applied in industry. You will practice all these ideas in Python and in TensorFlow, which we will teach. After this course, you will likely find creative ways to apply it to your work. This class is taught in the flipped-classroom format. You will watch videos and complete in-depth programming assignments and online quizzes at home, then come to class for advanced discussions and work on projects. This class will culminate in an open-ended final project, which the teaching team will help you on.


Please make sure you join the Piazza forum for the class to receive all course related announcements!

Course Information

Time and Location
Wed 11:30 AM - 12:50 PM, NVIDIA Auditorium
Contact Information
If you have a question, to get a response from the teaching staff quickly we strongly encourage you to post it to the class Piazza forum. For private matters, please make a private note visible only to the course instructors. For longer discussions with TAs and to get help in person, we strongly encourage you to come to office hours. If you need to contact us via email, please email us at cs230-qa@cs.stanford.edu.
Office Hours
Refer to the office hour calendar.
Teaching Assistants

Course Coordinator
Swati Dube
Co-Head TA
Aarti Bagul

Course Assistants
Ahmad Momeni

Section Leader
Shubhang Desai


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.
  • Familiarity with the probability theory. (CS 109 or STATS 116)
  • Familiarity with linear algebra (any one of Math 104, Math 113, or CS 205)
Course Materials
If you are enrolled in CS230, you must have received an email from Coursera confirming that you have been added to a private session of the course "Neural Networks and Deep Learning". Follow the instructions to setup your Coursera account with your Stanford email.
On the Coursera platform, you will find:
  • Lecture videos which are organized in "weeks". You will have to watch around 10 videos (more or less 10min each) every week. Make sure you are up to date, to not lose the pace of the class.
  • Quizzes (≈10-30min to complete) at the end of every week. These quizzes are here to assess your understanding of the material.
  • Programming assignments (≈2h per week to complete). The programming assignments will usually lead you to build concrete algorithms, you will get to see your own result after you've completed all the code. It's gonna be fun! For both assignment and quizzes, follow the deadlines on the Syllabus page, not on Coursera.
In addition to the content on Coursera, you will have:
  • In-class lectures on Wednesdays: these lectures will be a mix of advanced lectures on a specific subject that hasn't been treated in depth in the videos or guest lectures from industry experts.
  • Sections on Fridays: Teaching Assistants will hold Hands-on Sections to teach you advanced materials including hands-on tips and tricks to succeed in your projects, or mathematical proofs.
  • 15min weekly project mentorship with your mentor TA: CS230 is a project-based class. Through personalized guidance, TAs will help you succeed in implementing a successful deep learning project within a quarter.
Below is the breakdown of class grade:
  • 40%: Final project
  • 25%: Midterm
  • 25%: Programming assignment
  • 8%: Quizzes
  • 2%: Attendance (in-class lectures --if not SCPD--, sections, 15min weekly project mentorship.)
Note: For project meetings, only the following meetings are mandatory for attendance:
  • The first occurrence,
  • The ocurrence after the project proposal,
  • The ocurrence after the project milestone,
  • The ocurrence before the final submission.
Midterm logistics can be found on the syllabus page.
Submitting Assignments
For this course, you will be invited to a private Coursera Session. In this session, you will be able to watch videos, do quizzes and complete programming assignments. Each quiz and programming assignment can be submitted directly from the session and will be graded by our autograder.
Late assignments
Each student will have a total of ten free late (calendar) days to use for programming assignments, quizzes, project proposal and project milestone. Each late day is bound to only one assignment (which could be a programming assignment, a quiz or a project submission.) Once these late days are exhausted, any assignments turned in late will be penalized 20% per late day. However, no assignment will be accepted more than three days after its due date, and late days cannot be used for the final project and final presentation. Each 24 hours or part thereof that a homework is late uses up one full late day. Also, note that if you submit an assignment multiple times, only the last one will be taken into account, in which case the number of late days will be calculated based on the last submission.
Honor code
We strongly encourage students to form study groups. Students may discuss and work on programming assignments and quizzes in groups. However, each student must write down the 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 submit his/her own code and mention anyone he/she collaborated with.

Student Anecdotes

You’ll learn the technical details from linear regression to CNN, RNN and GAN (what my final project is on). You’ll also learn various efficient training, optimization, regularization and error analysis techniques. But what sets CS230 apart from other machine or deep learning courses is that it also brings a fresh industry perspective - how to structure a machine learning project from scratch, how to effectively collect and massage data, and how to evaluate a model so that the team can shoot for the right target and iterate faster. You really get to have hands on the state-of-the-art deep learning methods and fun applications. And of course Andrew’s exclusive academic and career advice!

- Weini Yu, Masters student in Computer Science

1. Even though I had already seen much of the material before (from other classes), I realized coming in that I still lacked intuition for actually implementing and designing deep learning systems. I haven't taken another AI/ML class yet that has provided so much good and practical advice.
2. GANs, GANs, GANs. I appreciate how GANs were covered so early on (week 4!), as it really demystified them for me. I had been aware that training GANs was tricky, but working with them for the final project has been extremely rewarding.

- Mark Sabini, Undergraduate student in Computer Science

This class has been so well run and I've had a lot of fun learning. My favorite part has been the class project and the weekly feedback and guidance during the TA meetings!

- Gili Rusak, Undergraduate student in Computer Science

This is the first time CS has really felt like engineering to me. I've found it really fun to feel like I'm building things, making design choices like I would if I were building a physical object. I feel like the class is organized really well in this way - it gives you the tools to be able to approach any general problem and come up with multiple ideas regarding how the pieces will fit together.

- Christine Tataru, Masters student in Computer Science

In the first Lecture, Andrew explains how AI in agriculture helps classifying infected cabbages from the healthy ones and eradicate them. He explains errors in this case might not have a huge impact for us, but it is a life or death situation for a cabbage :D Student's Inference: Well trained Deep learning model with higher accuracy can save many innocent cabbage lives.

- Karthik Selvakumar, Stanford Center for Professional Development (SCPD) student

Acknowledegment   This webpage is using the code from Shuqui Qu and Ziang Xie who have built the CS229 webpage, special thanks to them.