CS231n: Convolutional Neural Networks for Visual Recognition

Fei-Fei Li, Andrej Karpathy, Stanford

Computer Vision has become ubiquitous in our society, with applications in search, image understanding, apps, mapping, medicine, drones, and self-driving cars. Core to many of these applications are visual recognition tasks such as image classification, localization and detection. Recent developments in neural network (aka “deep learning”) approaches have greatly advanced the performance of these state-of-the-art visual recognition systems. This course is a deep dive into details of the deep learning architectures with a focus on learning end-to-end models for these tasks, particularly image classification. During the 10-week course, students will learn to implement, train and debug their own neural networks and gain a detailed understanding of cutting-edge research in computer vision. The final assignment will involve training a multi-million parameter convolutional neural network and applying it on the largest image classification dataset (ImageNet). We will focus on teaching how to set up the problem of image recognition, the learning algorithms (e.g. backpropagation), practical engineering tricks for training and fine-tuning the networks and guide the students through hands-on assignments and a final course project. Much of the background and materials of this course will be drawn from the ImageNet Challenge.

Schedule and Syllabus

Unless otherwise specified the course lectures and meeting times are:

Monday, Wednesday 3:00-4:20
Bishop Auditorium in Lathrop Building (map)
Event TypeDateDescriptionCourse Materials
Lecture Jan 4 Intro to Computer Vision, historical context. [slides] [video]
Lecture Jan 6 Image classification and the data-driven approach
k-nearest neighbor
Linear classification I
[slides] [video]
[python/numpy tutorial]
[image classification notes]
[linear classification notes]
Lecture Jan 11 Linear classification II
Higher-level representations, image features
Optimization, stochastic gradient descent
Lecture Jan 13 Backpropagation
Introduction to neural networks
Lecture Jan 18 Holiday; No class.
A1 Due Jan 20 Assignment #1 (kNN/SVM/Softmax) Due date
Lecture Jan 20 Getting Neural Networks to work: cross-validation process, optimization, debugging
Lecture Jan 25 Convolutional Neural Networks: architectures, convolution / pooling layers
Lecture Jan 27 Understanding and visualizing Convolutional Neural Networks
Proposal due Jan 30 Couse Project Proposal due [proposal description]
Lecture Feb 1 What makes ConvNets tick
Transfer learning
Lecture Feb 3 Squeezing out the last few percent
Training ConvNets in practice
A2 Due Feb 3 Assignment #2 (Neural Nets) Due date
Lecture Feb 8 Image captioning
Recurrent Neural Networks
RNN language models
Midterm Feb 10 In-class midterm
Lecture Feb 15 Holiday; No class.
Milestone Feb 17 Course Project Milestone
Lecture Feb 17 ConvNets for spatial localization
Object detection
A3 Due Feb 22 Assignment #3 (ConvNets) Due date
Lecture Feb 22 Generating images with ConvNets
Deep dream
Artistic style transfer
Generative models: VAE / GAN
Lecture Feb 24 ConvNets in full-stack agents
Reinforcement Learning overview
Deep Q Learning for ATARI game playing
Lecture Feb 29 Training ConvNets in practice
Caffe tutorial
Overview of Torch/TensorFlow
Lecture Mar 2 Attention Models
Spatial Transformer Networks
Lecture Mar 7 Student spotlight talks
Poster Presentation Mar 9 Mandatory! Details TBA
Final Project Due Mar 13 Final course project due date


  • Proficiency in Python, familiarity in C/C++
    All class assignments will be in Python (and use numpy) (we provide a tutorial here for those who aren't as familiar with Python), but some of the deep learning libraries we may look at later in the class are written in C++. If you have a lot of programming experience but in a different language (e.g. C/C++/Matlab/Javascript) you will probably be fine.
  • College Calculus, Linear Algebra (e.g. MATH 19 or 41, MATH 51)
    You should be comfortable taking derivatives and understanding matrix vector operations and notation.
  • Basic Probability and Statistics (e.g. CS 109 or other stats course)
    You should know basics of probabilities, gaussian distributions, mean, standard deviation, etc.
  • Equivalent knowledge of CS229 (Machine Learning)
    We will be formulating cost functions, taking derivatives and performing optimization with gradient descent.


Is this the first time this class is offered?
This class was first offered in Winter 2015, and has been slightly tweaked for the current Winter 2016 offering. The class is designed to introduce students to deep learning in context of Computer Vision. We will place a particular emphasis on Convolutional Neural Networks, which are a class of deep learning models that have recently given dramatic improvements in various visual recognition tasks. You can read more about it in this recent New York Times article.

Can I follow along from the outside?
We'd be happy if you join us! We plan to make the course materials widely available: The assignments, course notes, lecture videos and slides will be available online. We won't be able to give you course credit.

Can I take this course on credit/no cred basis?
Yes. Credit will be given to those who would have otherwise earned a C- or above.

Can I audit or sit in?
In general we are very open to sitting-in guests if you are a member of the Stanford community (registered student, staff, and/or faculty). Out of courtesy, we would appreciate that you first email us or talk to the instructor after the first class you attend. If the class is too full and we're running out of space, we would ask that you please allow registered students to attend.

Can I work in groups for the Final Project?
Yes, in groups of up to two people.

I have a question about the class. What is the best way to reach the course staff?
Stanford students please use an internal class forum on Piazza so that other students may benefit from your questions and our answers. If you have a personal matter, email us at the class mailing list cs231n-winter1516-staff@lists.stanford.edu.

Can I combine the Final Project with another course?
Yes, you may. There are a couple of courses concurrently offered with CS231n that are natural choices, such as CS231a (Computer Vision, by Prof. Silvio Savarese) and CS228 (Graphical Models, by Prof. Stefano Ermon). If you are taking some combination of these classes, please speak to the instructors to receive permission to combine the Final Project assignments.

  • 1 March 2017
  • 4 January 2016, 11 weeks
  • 5 January 2015, 11 weeks
Course properties:
  • Free:
  • Paid:
  • Certificate:
  • MOOC:
  • Video:
  • Audio:
  • Email-course:
  • Language: English Gb


No reviews yet. Want to be the first?

Register to leave a review

Included in selections:
Small-icon.hover Machine Learning
Machine learning: from the basics to advanced topics. Includes statistics...
Small-icon.hover Deep Learning
Good materials on deep learning.
More from 'Computer Science':
Maxresdefault CS 282: Principles of Operating Systems II: Systems Programming for Android
Developing high quality distributed systems software is hard; developing high...
Banner_ruby Ruby on Rails Tutorial: Learn From Scratch
This post is part of our “Getting Started” series of free text tutorials on...
Logo-30-128x128 NYU Course on Deep Learning (Spring 2014)
Lectures from the NYU Course on Deep Learning (Spring 2014) This is a graduate...
Cppgm C++ Grandmaster Certification
The C++ Grandmaster Certification is an online course in which participants...
Umnchem Computational Chemistry (CHEM 4021/8021)
Modern theoretical methods used in study of molecular structure, bonding, and...
More from 'Stanford':
Nlp-logo CS224d: Deep Learning for Natural Language Processing
Natural language processing (NLP) is one of the most important technologies...
Databases DB: Introduction to Databases
Learn about Databases, one of the most prevalent technologies underlying internet...
Envphys_water EP101: Your Body in the World: Adapting to Your Next Big Adventure
Discover the amazing adaptability of the human body to environmental stressors...
Images_course_image HRP258: Statistics in Medicine
Provides a firm grounding in the foundations of probability and statistics,...

© 2013-2019