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.
The 600-level courses are often listed jointly with 400-level courses. If a course is offered jointly, then graduate students enrol in the 600-level version of the course and undergraduate students enrol in the 400-level version, and the lectures to graduate and undergraduate students are held in common. In order to obtain 600-level credit for a joint 400/600 level course, a student is expected to demonstrate a deeper level of understanding in the course, compared to those students registered in the 400-level version. The distinction between those registered in 400 and 600 level versions may involve: (i) alternative questions on assignments or exams, or a different level of response expected; (ii) preparation of a term project or presentation of a seminar. The instructor will ensure that students are aware of the method used to distinguish between 400 and 600 level credit at the beginning of any given course.
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.
Graduate courses are classified into three levels: