ECE 364: Programming Methods for Machine Learning (Fall 2025)

Teaching Staff
Prof. Corey SnyderInstructorEmail: cesnyde2[at]illinois.edu |
Kamila AbdiyevaGraduate Teaching Assistant |
Ayush BarikUndergraduate Course Assistant |
Class Time & Location
Class Time: Tuesday, Thursday 9:30AM-10:50AMLocation: ECEB 3081 (Electrical and Computer Engineering Building)
Course Information
In this course, you will learn how to use auto-differentiation tools like PyTorch, how to leverage them for basic machine learning algorithms (linear regression, logistic regression, deep nets, k-means clustering), and how to extend them with custom methods to fit your needs. Auto-differentiation is one of the most important tools for data analysis and a solid understanding is increasingly important in many disciplines. In contrast to existing courses that focus on algorithmic and theoretical aspects, here we focus on studying material that permits deploying auto-diff tools to your area of interest.
Pre-requisites: Math 257 (Linear Algebra with Computational Applications) or equivalent, basic probability, and proficiency in Python.
Recommended Reference Texts: (1) Pattern Recognition and Machine Learning by Christopher Bishop
(2) Machine Learning: A Probabilistic Perspective by Kevin Murphy
(3) Deep Learning by Ian Goodfellow and Yoshua Bengio and Aaron Courville
Please note that these books are more comprehensive than the material covered in this class.
Course Deliverables:
(1) Homeworks (submission on Gradescope).
(2) Midterm Exams: There will be two midterm exams.
(3) Final Project
Final Project:
More details to come.
Homework and Late Policy:
We will drop the lowest homework grade (1 assignment) for each student. Late submissions will be deducted 20% per day that the assignment is submitted late.
Grading:
25% Homeworks; 25% each Midterm; 25% Final Project
Lectures
Lecture recordings may be found here.
The syllabus is subject to minor changes.
Event | Date | Description | Materials | Assignments |
---|---|---|---|---|
Lecture 1 | 08/26/2024 | Course introduction | Lec1-Notebook, Lec1-Complete Notebook Setting up Python environment | |
Lecture 2 | 08/28/2024 | PyTorch basics | Lec2-Notebook, Lec2-Complete Notebook | |
Lecture 3 | 09/02/2024 | Linear algebra and calculus review | Lec3-Notebook, Lec3-Complete Notebook | |
Lecture 4 | 09/04/2024 | Matrix calculus and primal optimizations | Lec4-Notebook | HW1 Latex Files, HW1 PDF |
Lecture 5 | 09/09/2024 | Automatic differentiation 1 (gradient descent) | ||
Lecture 6 | 09/11/2024 | Automatic differentation 2 (computational graphs and backpropagation) | HW2 | |
Lecture 7 | 09/16/2024 | Automatic differentiation 3 (backpropagation and PyTorch) | ||
Lecture 8 | 09/18/2024 | Linear regression 1 | HW3 | |
Lecture 9 | 09/23/2024 | Linear regression 2 | ||
Lecture 10 | 09/25/2024 | Logistic regression 1 | HW4 | |
Lecture 11 | 09/30/2024 | Logistic regression 2 | ||
Lecture 12 | 10/02/2024 | Midterm 1 review | ||
Lecture 13 | 10/07/2024 | Midterm 1 (in class) | ||
Lecture 14 | 10/09/2024 | PyTorch optimizers, datasets, dataloaders 1 | ||
Lecture 15 | 10/14/2024 | PyTorch optimizers, datasets, dataloaders 2 | ||
Lecture 16 | 10/16/2024 | Deep nets 1 (MLPs) | HW5 | |
Lecture 17 | 10/21/2024 | Deep nets 2 (CNNs) | ||
Lecture 18 | 10/23/2024 | Deep nets 3 (CNNs) | ||
Lecture 19 | 10/28/2024 | Deep nets 4 (RNNs) | HW6 | |
Lecture 20 | 10/30/2024 | Unsupervised learning 1 | ||
Lecture 21 | 11/04/2024 | Unsupervised learning 2 | HW7 | |
Lecture 22 | 11/06/2024 | Transformers 1 | ||
Lecture 23 | 11/11/2024 | Transformers 2 | ||
Lecture 24 | 11/13/2024 | Transformers 3 | HW8 | |
Lecture 25 | 11/18/2024 | Object detection and segmentation | ||
Lecture 26 | 11/20/2024 | Midterm 2 review | ||
Break | 11/25/2024 | Thanksgiving | ||
Break | 11/27/2024 | Thanksgiving | ||
Lecture 27 | 12/02/2024 | Midterm 2 (in class) | ||
Lecture 28 | 12/04/2024 | Diffusion models | ||
Lecture 29 | 12/09/2024 | Alternate supervision |