CSC 321 Winter 2018

Intro to Neural Networks and Machine Learning

Source: CycleGAN. You will implement this model for Assignment 4.


Machine learning is a powerful set of techniques that allow computers to learn from data rather than having a human expert program a behavior by hand. Neural networks are a class of machine learning algorithm originally inspired by the brain, but which have recently have seen a lot of success at practical applications. They're at the heart of production systems at companies like Google and Facebook for face recognition, speech-to-text, and language understanding.

This course gives an overview of both the foundational ideas and the recent advances in neural net algorithms. Roughly the first 2/3 of the course focuses on supervised learning -- training the network to produce a specified behavior when one has lots of labeled examples of that behavior. The last 1/3 focuses on unsupervised learning and reinforcement learning.

Policies (marking, prerequisites, etc.)

See the course information handout.

Where and When

There are two sections of the course. Since both sections are fully subscribed, please attend the one you are assigned.


All course-related announcements will be sent to the class mailing list, csc321h1s [at]

We will use Piazza for the course forum. Details to follow.

If you want to contact the course staff privately, please e-mail csc321staff [at] (for the TAs and the instructor) or rgrosse [at] (for only the instructor).

Homeworks, Programming Assignments, and Tests

All assignment deadlines are at 11:59pm on the date listed. Please see the course information handout for detailed policies (marking, lateness, etc.).

Marking scheme:




Note that there is no tutorial after the first lecture for the afternoon section, and no tutorial after the final lecture for the night section.

Computing resources

The programming assignments will be done in Python using the NumPy scientific computing library. Some of the assignments will also use PyTorch. More details to follow.

Python and NumPy

The programming assignments will all be done in Python using the NumPy scientific computing library, but prior knowledge of Python is not required. Basic Python will be taught in a tutorial. We will be using Python 2, not Python 3, since this is the version more commonly used in machine learning.

You have several options for how to use Python:

Once Python is installed, there are two ways you can edit and run Python code:

Here are some recommended background readings on Python and NumPy.