CS230: Deep Learning

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


  • 06/15/18 Final reports and posters have been posted here!
  • 05/30/18 Poster session location has been updated! It will be at AT&T Patio at the Gates Computer Science Building.
  • 05/03/18 Midterm locations have been updated! Check here to make sure you are aware of the new midterm locations.
  • 04/02/18 Welcome to CS230! We look forward to meeting you Tuesday 04/03 at 3:00 PM!

Course Information

Time and Location
Tues 3:00 PM - 4:20 PM, CEMEX 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. You can also reach out to us via email at cs230-qa@cs.stanford.edu (a mailing list consisting of the TAs and instructors).
Office Hours
Refer to the office hour calendar.
Teaching Assistants

Course Coordinator
Swati Dube
Head TA
Lucio Dery
Course Adviser
Younes Mourri

Course Assistant
Abhijeet Shenoi


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 deadline on Syllabus page, not on Coursera.
You will follow the following schedule, week by week, and have lectures on Thursday. These lectures will be a mix of advanced lectures on a specific subject that hasn't been treated in depth in the videos, guest lectures from industry experts or discussion sessions where you get to ask questions.
Below is the breakdown of class grade:
  • 40%: Final project
  • 25%: Midterm
  • 25%: Programming assignment
  • 8%: Quizzes
  • 2%: Attendance
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. 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.