# Courses
**Source**: https://cs.uwaterloo.ca/current-graduate-students/courses
**Parent**: https://cs.uwaterloo.ca
## Graduate courses
Graduate
courses
assume
a
background
of
at
least
third-year
honours
Computer
Science
at
the
University
of
Waterloo
and
a
similar
level
of
mathematical
maturity.
Students
lacking
this
background
will
be
asked
to
acquire
this
material
in
addition
to
the
other
requirements
of
the
program.
[Course categories and areas](https://cs.uwaterloo.ca/current-graduate-students/table-categories-and-areas-courses)
[University of Waterloo
Schedule of Classes](https://classes.uwaterloo.ca/under.html)
Expand all
Collapse all
## Course calendar
Graduate courses are classified into three levels:
- 600-level courses are basic graduate courses
- 700-level courses are intermediate graduate courses, and
- 800-level courses are research-oriented courses
[More information on these courses.](https://uwaterloo.ca/graduate-studies-academic-calendar/graduate-course/subject/CS)
## Graduate course offerings
In general it may be assumed that 600-level courses will be offered in each of the next few years, but that the 700 and 800-level offerings will vary greatly from year to year.
For information about instructors and time tabling of 600-level courses for the current term, please see the UW course schedule. For 700 and 800 class times, see term schedule.
[Current course offerings](https://cs.uwaterloo.ca/node/3039)
## Enrolling in Computer Science graduate courses
Starting several weeks *before* the start of the term and ending at the course drop/add deadline (about three weeks *after* the start of the term), graduate students can enroll in CS graduate courses using [Quest](https://uwaterloo.ca/quest/), the University of Waterloo's student information system. Students are advised to consult with their supervisor prior to enrolling in courses online.
[Enrolling in courses](https://cs.uwaterloo.ca/node/3047)
## Enrolling in non-CS graduate courses
Students are permitted to use non-CS graduate courses and count these towards their course requirements if pre-approved. Students can consult a [table of non-CS courses](https://cs.uwaterloo.ca/node/3048) to determine if a non-CS course has previously been pre-approved and the course area and level indicated. If the proposed course is not on this table, the student must consult with the [Director of Graduate Studies](mailto:cs.graddir@uwaterloo.ca?subject=Approval%20Required%20for%20Non-CS%20Course) to get approval.
The number of non-CS courses permitted in the course requirement for each program is limited, unless an exception is made after consultation with the CS [Director of Graduate Studies](mailto:cs.graddir@uwaterloo.ca).
- MMath thesis 1 out of 4 courses
- MMath research paper 2 out of 7 courses
- MMath coursework 2 out of 8 courses
- PhD from master's 1 out of 4 courses
- PhD from bachelor's 2 out of 8 courses
Enrolment in a non-CS course is done using a [Drop/Add Form](https://uwaterloo.ca/forms/graduate-studies/graduate-studies-course-dropadd).
## Non-CS students enrolling in CS graduate courses
Graduate students from other departments cannot enroll on Quest for CS graduate courses which are reserved for CS graduate students only.\
\
Non-CS graduate students are advised to check the prerequisites for the course they are interested in to ensure they meet the minimum requirements. They can then request a permission # for that particular course by sending the course instructor an email with their
- Student full name
- Student ID #
- Student home department registered in
- Course # with section #
Non-CS graduate students are welcome to attend a CS graduate class in the first week of lectures if seating permits. Permission numbers will be assigned to the selected students after the first week of classes if space allows.
\
Students may not request a place in more than 1 course.\
Undergraduate students are not permitted to take 600-level CS courses that have a 400-level undergraduate component.