Homework
This page will list everything that’s required of you for the course. We’ll keep it updated as the term progresses. See the course information for specifics of policies (marking, lateness, etc.).
Videos and quizzes
Each week, you are responsible for watching a lecture video on the Coursera page for the course. To encourage you to reflect on the lecture material, you are also expected to take a short, auto-graded quiz through Coursera. These are due Monday at 11:59pm immediately preceding the class meetings which cover the material. The deadlines are given in the calendar, and more details on the policies can be found in the course information.
Assignments
There will be four short programming assignments, each of which requires writing about 10-15 lines of Python code and running some experiments. The deadlines are given in the calendar, and more details on the policies and computing resources can be found in the course information.
- Assignment 1: Learning distributed word representations
- Assignment 2: Convolutional Nets
- Assignment 3: Image completion with mixture of Bernoullis
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 far more commonly used in machine learning.
You have several options for how to use Python:
- You can install Python yourself on your own machine. For most of you, this will be the most convenient option. (Our assignments will not require especially heavy computation.)
- Anaconda provides a single-click installer for most common platforms, and this is likely the easiest way to install Python and the required libraries.
- You can install Python, NumPy, and Matplotlib manually. This takes a bit more work than using Anaconda.
- You can run it on the CDF machines. All required libraries are already installed. Accounts should have already been created for registered students by the start of the course. If you are having a problem with a CDF account, ask us.
Once Python is installed, there are two ways you can edit and run Python code:
- You can edit the code in a general-purpose text editor, such as Emacs, Vim, or GEdit, and run Python from the command line. (If you’re not already familiar with a text editor, GEdit is probably the easiest to start with.) We recommend IPython rather than the default Python console. If you’re already comfortable with one of these editors and with the command line, this may be the easiest way to go. For most of us in the machine learning research group at U of T, this is how we use Python on a day-to-day basis. If you’re new to this mode of programming, it may take 5-10 hours before you feel comfortable with it. But if you’re concentrating in computer science, you’ll need to learn this stuff eventually, so why not now?
- If you’re newer to programming, you may feel more comfortable with an IDE. We recommend Spyder because it’s included in Anaconda, and it’s intended for the sort of numerical computing we do in this class. Here are instructions for using it with Anaconda. There are lots of other IDEs for Python, though.
- Note: the Spyder installation on the CDF machines uses Python 3, not 2. We will try to install the Python 2 version. Unfortunately, in the meantime, this means that if you want to run Python on the CDF machines, you will need to use a text editor and the command line.
Here are some recommended background readings on Python and NumPy.
- If you haven’t taken a programming class, you may need to spend some time learning the basics. You should watch Lectures 2, 3, 4, and 6 of MIT 6.001 on EdX. (Lectures 7 and 11 are also helpful.)
- If you have programming experience but not in Python, read Learn X in Y Minutes for a concise summary of the language. You can probably pick up Python quickly if you are familiar with another general-purpose language (C, Java, Matlab, etc.).
- Read this tutorial on NumPy, the library we’ll use for array manipulation and linear algebra.