CS236G Generative Adversarial Networks (GANs)

GANs have rapidly emerged as the state-of-the-art technique in realistic image generation. Its applications span realistic image editing that is omnipresent in popular app filters, enabling tumor classification under low data schemes in medicine, and visualizing realistic scenarios of climate change destruction. You'll also get to examine key challenges of GANs today, including reliable evaluation, inherent biases, and training stability. After this course, students should be familiar with GANs and the broader generative models and machine learning contexts in which these models are situated.

Syllabus Piazza Lecture videos (Canvas)

Course Information

  • This quarter (2020-21 Winter), CS236G meets for in-class lecture T/Th 2:30 PM - 3:20 PM, Zoom.
  • All class communication happens on the CS236G 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 individual TAs.
  • The course content and deadlines for all assignments are listed in our syllabus.
  • For general inquiries, please contact cs236g@cs.stanford.edu.

Course Staff

Course Assistants

Additional Project Mentors

Course Goals

  • Learn and build generative adversarial networks (GANs), from their simplest form to state-of-the-art models.
  • Implement, debug, and train GANs as part of a novel and substantial course project.
  • Gaining familiarity with the latest cutting-edge literature on GANs.
  • Reward risk-taking and creative exploration.

Course Components

  • In class lectures - twice a week on T/Th 2:30 PM - 3:20 PM (hosted on Zoom).
  • Video lectures, programming assignments, and quizzes on Coursera
  • The final project

Lecture Schedule

Date Week Title Resources Instructor
01/12/2021 1 Introduction Slides
Sharon Zhou
01/19/2021 2 Disentanglement Slides
Sharon Zhou
01/21/2021 2 Artbreeder artbreeder.com
Joel Simon
01/28/2021 3 Medicine + GANs Video Sharon’s Research Group
01/30/2021 3 Project Inspo   Sharon Zhou
02/05/2021 4 Finding Project Partners   Sharon Zhou
02/07/2021 4 How to Read a Paper Slides
Sharon Zhou
02/09/2021 5 Reading Group Paper
Sharon Zhou
02/11/2021 5 PyTorch for GANs Part 1 Notebook
Hikaru Hotta
Vincent Liu
02/18/2021 6 PyTorch for GANs Part 2 Notebook
GAN Starter Notebook
AWS Instructions
Hikaru Hotta
Vincent Liu
02/23/2021 7 Speech + GANs   Vincent Liu
02/25/2021 7 Differential Privacy   Tim Gianitsos
03/02/2021 8 Pix2PixHD   Hikaru Hotta
Silvia Gong
William Zhuk
03/04/2021 8 Interim Project Showcase   Sharon Zhou
03/09/2021 9 Video + GANs   Sharon Zhou
03/11/2021 9 Text + GANs   Sharon Zhou
03/16/2021 10 Project Showcase   Sharon Zhou
03/18/2021 10 Project Showcase   Sharon Zhou


Students are expected to have the following background:

  • Familiarity with basic programming (CS106B or CS101)
  • Familiarity with basics of deep learning (CS230 or CS221)
  • Familiarity with the probability theory (CS 109 or STATS 116)
  • Familiarity with linear algebra (MATH 51)


  • 60%: Class project - creativity and equal participation within a group will be rewarded
  • 35%: Programming assignments
  • 5%: Midterm
  • 0%: Attendance
  • Extra credit: Your (or your GAN-generated) Memes. Requirements: Relevant and Appropriate with capital R and A there.


All students who are looking to audit the course should complete and submit the following form. You should receive an invitation to the course’s Canvas and the Coursera course in your Stanford email within 24-48 hours of submitting this form. Make a private piazza post (preferred) or email cs236g@cs.stanford.edu if you did receive get the invitations.

This site was forked from CS230: Deep Learning (https://CS230.stanford.edu).