Home Goals Resources Schedule Assignments Kaggle Competition Project Marks Policies Pascal's Homepage

CS480/680 Fall 2020 - Introduction to Machine Learning

There will be six assignments, each worth 10% of the final mark (7% for CS680). Assignments are done individually (i.e., no team). The assignments will consist of a mixture of theoretical questions and programming questions. Some assignments may make use of TensorFlow or PyTorch. For GPU and TPU acceleration, feel free to use Google's Colaboratory environment. This is a free cloud service where you can run Python code (including TensorFlow and PyTorch, which are pre-installed) with GPU or TPU acceleration. A virtual machine with two CPUs and one GPU or TPU will run up to 12 hours after which it must be restarted. The following steps are recommended:

The approximate out and due dates are:

On the due date of an assignment, the work done to date should be submitted electronically on the LEARN website; further material may be submitted with a 2% penalty for every rounded up hour past the deadline. For example, an assignment submitted 5 hours and 15 min late will receive a penalty of ceiling(5.25) * 2% = 12%. Assignments submitted more than 50 hours late will not be marked.

Assignment 1: due Sept 29 (11:59 pm)

In this assignment, you will implement k-nearest neighbours and linear regression. Then you will test your implementations on some small datasets.

Assignment 2: due Oct 6 (11:59 pm)

In this assignment, you will implement logistic regression. Then you will test your implementations on some small datasets.

Assignment 3: due Oct 19 (11:59 pm)

In this assignment, you will implement generalized linear regression and Gaussian process regression. Then you will test your implementations on a small dataset.

Assignment 4: due Oct 29 (11:59 pm)

In this assignment, you will experiment with fully connected neural networks and convolutional neural networks, using the Keras open source package. Keras is one of the simplest deep learning packages that serves as a wrapper on top of TensorFlow. Preliminary steps:

Answer the following questions by modifying the base code in cs480_fall20_asst4_cnn_cifar10.ipynb. Submit the modified Jupyter notebook via LEARN.

Assignment 5: due Nov 9 (11:59 pm)

In this assignment, you will experiment with various types of recurrent neural networks (RNNs) in PyTorch. PyTorch is a popular alternative to Keras and TensorFlow that has become quite popular in recent years. It is more intuitive than TensorFlow, while giving the programmer greater control than Keras. Preliminary steps:

Answer the following questions by modifying the base code in each notebook. Submit the modified Jupyter notebooks via LEARN.

Assignment 6: due Nov 20 (11:59 pm)

In this assignment, you will implement a variational auto-encoder (VAE) and a generative adversarial network (GAN) in PyTorch to generate images similar to those in the MNIST dataset. As a starting point, the code for a deterministic auto-encoder (DAE) is provided. While DAEs achieve good reconstruction of the original images, they struggle to generate new images that are similar to those in MNIST. Implement a VAE and GAN to generate better images. Download the skeleton code for this assignment:

Fill in the functions in each skeleton notebook and answer the following questions in each notebook. Submit the Jupyter notebooks via LEARN.