CSC 321 Winter 2017:

Intro to Neural Networks and Machine Learning

Students intending to take CSC321 in Winter 2018: Please see here for application instructions.


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 -- the algorithm isn't given any examples of the correct behavior, and the goal is instead to discover interesting regularities in the data.

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 Discourse as the discussion forum. If you have a question you think would be relevant to the whole class, please post it there so that everyone gets the benefit of the answer. Please include the part of the course (e.g. "Homework 1", "Lecture 2") in the subject.

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

Homeworks, Programming Assignments, and Tests

All assignment deadlines are at 11:59pm of 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 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.