All assignments and activities associated with this course must be performed in accordance with the University of Rochester's Academic Honesty Policy. More information is available at: http://www.rochester.edu/college/honesty.
The University of Rochester respects and welcomes students of all backgrounds and abilities. In the event you encounter any barriers(s) to full participation in this course due to the impact of a disability please contact the Office of Disability Resources. The access coordinators in the Office of Disability Resources can meet with you to discuss the barriers you are experiencing and explain the eligibility process for estabilishing academic accommodations. You can reach the Office of Disability Resources at disability@rochester.edu, (585) 276-5075; Taylor Hall.
This advanced course is aimed at students who wish to build and use efficient large-scale AI systems. It condenses CSC 252, CSC 254, CSC 258, and CSC 255, collating material from those courses that are most relevant to modern AI systems. Topics covered include machine learning (ML) applications, ML programming models, code generation and optimization, manual and automatic parallelization, performance modeling, systems-level challenges, and specialized AI hardware. No background in AI or ML is expected, but proficiency in programming is expected.
The purpose of this course is to enable students to design, build, and operate efficient AI/ML systems.
In this course, we will learn how programs execute on a computer, with specific focus on the computational units, the memory and storage subsystem, and networking abilities of modern systems containing CPUs and GPUs. We will learn how to model these and reason about them to achieve better performance, lower energy, higher scalability, and overall a notion of "efficiency." The programs we will study will all be taken from the domain of machine learning and/or artificial intelligence, specifically those from deep learning.
At the end of this course, students will be able to:
CSC173, CSC242. Familiarity with the Linux command line recommended.
This is a 4-credit course. There will be 150 minutes of lecture (two 75-minute lectures/week), 50 minutes of "4th credit hour", and 400 minutes of out-of-class student work. Grade distribution is:
Letter grades are assigned using a standard scale based on the absolute score. Here is the scale I will use, although I might choose to use a different scale which will not be stricter than this:
Score | CSC290 | CSC420 |
---|---|---|
>= 96 | A | A |
>= 92 | A- | A- |
>= 88 | B+ | B+ |
>= 84 | B | B |
>= 80 | B- | B- |
>= 76 | C+ | C |
>= 72 | C | C |
>= 70 | C | C |
>= 68 | C- | E |
>= 60 | D | |
< 60 | E |
In case we encounter difficulties due to COVID, I may use projects instead of exams.
Students taking the 4xx version of this course should expect to read more, and expect to solve different problems, and be graded on different criteria.
Inform the instructor in advance if circumstances beyond your control will make you miss a deadline. Otherwise there is no provision for late submissions.
This is the first time this course is being taught.