# ECE 551 (formerly EECS 551): Matrix Methods for Signal Processing, Data Analysis and Machine Learning

Instructor: Prof. Jeff Fessler, Prof. Raj Nadakuditi

Coverage
The goal of this course is to provide mathematical foundations for subsequent signal processing and machine learning courses, while also introducing matrix-based signal processing and machine learning methods/applications that are useful in their own right.

Prerequisite
EECS 351 or Graduate Standing. Students who have previously enrolled in 505 cannot get credit for 551. A prior undergraduate course in linear algebra is very helpful. (4 credits)

Major topics include:

• matrix factorizations
• singular value decomposition
• subspaces
• linear least squares problems
• vector and matrix norms
• Procrustes method
• low-rank matrix approximation
• special matrices like companion matrices and circulant matrices
• Perron-Frobenius theory and Markov chains
• basics of convex optimization using gradient descent and accelerated gradient descent

Applications include:

• handwritten digit recognition
• image denoising, image compression
• recommender systems

These applications are often covered in the discussion sections using Jupyter notebook templates.

Homework sets include autograder problems in the Julia language

Comparison between EECS 505, EECS 551, and EECS 553

Important points

• EECS 505 and EECS 551 are very similar. They both use matrix methods extensively and both use the Julia language for technical computing.
They are so similar that you cannot earn credit for both; you must pick one or the other. Do not enroll in both!
• For any course that requires EECS 551 as a prerequisite, EECS 505 will count as well, even if it is not officially listed that way.
(We do not enforce prerequisites at the graduate level anyway, because they are just advisory.)
• EECS 551 is required for SIMPL majors in ECE, and it assumes that students have an EE background and already understand convolution and the DFT.
When enrollment is limited by room size, SIMPL majors and other ECE students have priority for EECS 551.
• EECS 505 is targeted at a broader audience and usually is taught on central campus. Most non-EECS students should take EECS 505.
• EECS 505 is an approved course for the MIDAS data science certificate. See listing here.
• There is a draft syllabus for EECS 505 for F20 at this url: [gdrive ]EECS 505 uses a cool “computational textbook” that Prof. Nadakuditi developed. You can learn more about it from his 2020 Juliacon video
• For comparison, here is a draft outline for EECS 551 in F20.
• If you are part of some other grad program that recommends EECS 551, then tell your adviser that EECS 505 is equivalent and ask them to approve it for you. Have your adviser contact Prof. Fessler or Prof. Nadakuditi if they want to discuss it further.
• EECS 553 is a more advanced Machine Learning course and we recommend that you take EECS 505 or EECS 551 before taking EECS 553. The linear algebra background and the software experience from 505/551 are very helpful for 553.