This is the course website for CSC665, Principles of Machine Learning.
Yes, I can write you a letter, but I will not write a letter for you simply based on your course performance: transcripts are already good indicators of course performance. If you intend me to write a letter because of a course I taught you, you need to talk to me at the beginning of the semester (in this specific case, before the end of January 2019), and you should read this section on my advice page.
This course will provide the necessary background in Machine Learning for graduate students to be able to use modern machine-learning methods in their research. Machine Learning has become the preferred method for creating programs that must work with noisy data, or for which it is easier to obtain examples of the desired program behavior (training data) than it is to directly write a program that achieves the desired behavior.
It’s now common to see machine learning being used throughout Computer Science, including areas not traditionally considered to be amenable to data-driven methods such as human-computer interaction, data structures, and software systems. As a result, students who do not have a firm grasp of the potential (and pitfalls and limitations) of machine learning may have a limited ability to understand some of the current research in their own fields.
Students will learn why machine learning is a fundamentally different way of writing computer programs, and why this approach is often a uniquely attractive way of solving practical problems. Machine learning is all about automatic ways for computers to find patterns in datasets; students will learn both advantages and unique risks that this approach offers. They will learn the fundamental computational methods, algorithms, and perspectives which underlie current machine learning methods, and how to derive and implement many of them.
Students will learn the fundamentals of unsupervised and supervised machine learning methods, the computational and quality tradeoffs between different methods, and how to adapt existing methods to fit their own research needs.
A strong background in linear algebra and calculus is necessary. Students will be expected to understand and construct arguments based on the relationship between matrices and linear transformations, and the interpretation of inner products as projections onto subspaces. We will at times refer to ideas in mathematical optimization, specifically in finding optimal solutions for constrained systems. Students will also need a good amount of programming experience and maturity.
Programming assignments will be in Python, and will make heavy use of Python’s ubiquitous linear algebra and scientific computing libraries (numpy and scipy).
The course will have a heavy assignment load: there are many concepts to cover. There are 11 total assignments (in both writing and programming forms), in addition to a written midterm and written final, and a comprehensive project.
The grading of the course is heavily weighted towards assignments and projects:
Content the course will not cover in detail:
The full course syllabus is available here, and should be considered the authoritative source of information about the course offering and assessment.