CS 115 - Introduction to Computer Science 1
School of Computer Science
University of Waterloo

Course Philosophy

Welcome to CS 115!

CS 115 has been designed with the diverse interests, backgrounds, and goals of students always in mind. As we are aware of the varied ways in which this material might be of use in the future, we have included concepts that are beautiful and universal. The focus of the course is foundational concepts in computer science (rather than the mechanics of programming) and ways of thinking about computation (rather than solving tasks in a rote fashion). Students will learn skills that are applicable to new languages and environments, not just those used in the course. Because of the fundamental nature of the concepts taught in CS 115, the course can serve both students whose primary interest in computers is in their use in their chosen areas of study and students intending to minor in CS.

A lot of the information on this page can also be found in a separate course outline.


All announcements will be posted on Learn. You should check Learn everyday!

This course uses a version of Scheme called DrRacket. Follow this link to Install DrRacket.

Below is the class/lab schedule for Winter 2020.

CS 115 LEC 001: Tuesdays and Thursdays, 02:30–03:50, MC 2034
CS 115 LEC 002: Tuesdays and Thursdays, 11:30–12:50, MC 2017
CS 115 LEC 003: Tuesdays and Thursdays, 02:30–03:50, PHY 235
CS 115 LEC 004: Tuesdays and Thursdays, 04:00–05:20, MC 2034

CS 115 LAB 101: Fridays, 08:30–09:50, MC 3003
CS 115 LAB 102: Fridays, 10:00–11:20, MC 3003
CS 115 LAB 103: Fridays, 11:30–12:50, MC 3003
CS 115 LAB 104: Fridays, 01:00–02:20, MC 3003
CS 115 LAB 105: Fridays, 02:30–03:50, MC 3003
CS 115 LAB 106: Fridays, 04:00–05:20, MC 3003

Monday March 2nd, 7:00–8:50PM, rooms TBA

CS 115 Winter Final Exam
Not occurring.


Participation/Clicker 5% 10%
Labs 3% (bonus)
Assignments 20% 35%
Midterm 30% 50%
Final Exam Final Assessment 45% 5%

You do not have to pass the weighted exam portion (i.e. the midterm) in order to pass the course.

If you missed the midterm, and the weight of the midterm was shifted to your final exam, you will be recieving an incomplete in the course. See the email titled "CS115 - Winter 2020" for more information.
You must pass the course to receive the 3% lab bonus. The bonus is how many of the 9 marked labs you passed. A lab is passed when more than 50% of the basic tests have been passed.
Assignment 0 is not worth any marks, but it MUST be submitted for all other grades to be counted.

Your assignment with the lowest mark will be dropped from your final grade, you must however have successfully completed a minimum of 5 assignments. These 5 assignments do not include Assignment 0 nor Assignment 8.
Assignment 8 cannot be dropped.

If you have any grievances about an assignment's marking, please email cs115@uwaterloo.ca with your quest ID, the assignment, and the concern you have about the grading. Note that remarking for the midterm/final is handled by instructors. If you would like an exam remarked, please follow the instructions posted on Learn which will be posted later into the term.

Schedule and Course Materials

*** Please note, all times are in EDT.

Week Lectures Labs Assignments/Exam
Jan. 6–10
Module 1: Introduction
Textbook: How To Design Programs
Lab 1 (Getting Started)
*Labs are still running the first week of classes!
Please be sure to attend!
Assignment 0 due Wednesday Jan. 15 10:00AM
Assignment 0 Q3 Interface
Assignment 0 Q4 Interface
Please right-click the link to save the Interface Files, do not copy and paste them.
Jan. 13–17
Module 1: Introduction Continued Lab 2 due Monday Jan. 20 4:00PM
Lab 2 Interface
Jan. 20–24
Module 2: Design Recipe and Strings
Lab 3 due Monday Jan. 27 4:00PM
Lab 3 Interface
Assignment 1 due Wednesday Jan. 22 10:00AM
Assignment 1 Interface
Please right-click the link to save the Interface Files, do not copy and paste them.
Jan. 27–30
Module 3: Conditionals Lab 4 due Monday Feb. 3 4:00PM
Lab 4 Interface
Assignment 2 due Wednesday Jan. 29 10:00AM
Assignment 2 Interface
String Documentation
[List of Allowed Built in Functions]
Feb. 3–7
Module 3: Conditionals Continued

Module 4: Lists

Lab 5 due Monday Feb. 10 4:00PM
Lab 5 Interface
Assignment 3 due Wednesday Feb. 5 10:00AM
Assignment 3 Interface
[List of Allowed Built in Functions]
Feb. 10–14
Module 4: Lists Continued

Module 5: Other Recursion

Lab 6 due Tuesday Feb. 25 4:00PM
Lab 6 Interface
Assignment 4 due Wednesday Feb. 12 10:00AM
Assignment 4 Interface
[List of Allowed Built in Functions]
Feb. 17–21
Reading Week
Feb. 24–28
Module 5: Other Recursion Continued Lab 7 due Wednesday Mar. 4 4:00PM
Lab 7 Interface
Assignment 5 due Wednesday Feb. 26 10:00AM
Assignment 5 Interface
[List of Allowed Built in Functions]
Mar. 2– 6
Module 6: Two Lists
Module 6 Corrections
Lab 8 due Monday Mar. 9 4:00PM
Lab 8 Interface
No Assignment
Midterm Monday Mar. 2 7:00-8:50 PM
Mar. 9–13
Module 7: Local Lab 9 due Monday Mar. 23 4:00PM
Lab 9 Interface
Assignment 6 due Wednesday Mar. 11 10:00AM

Assignment 6 Interface
[List of Allowed Built in Functions]
Mar. 16–20
Module 7 :Local Continued

Module 8: Structures

Lab 10 due Friday April 3 10:00AM
Lab 10 Interface
Assignment 7 due Friday Mar. 27 10:00AM
Assignment 7 Interface
[List of Allowed Built in Functions]
Mar. 23–27
Module 8: Structures Continued Lab 11
Lab 11 Interface
Assignment 8 due Wednesday April 15 11:59PM EDT
Assignment 8 Interface
[List of Allowed Built in Functions]
Mar. 30–Apr. 3
Module 9: Binary Trees

Online Lecture Materials

Written Notes

Below are text based resources for students on Modules 7 and 8:

Written Notes

Video Lectures

Below are video based resources for students on Modules 7:

Module 7 Topics Covered Slides* Video Links Video Descriptions Author
Review Slides 1–42 Module 7 Review
Module 7 Review on Youtube
Seven abstract list functions are introduced. They are ‘sort’, ‘filter’, ‘map’, ‘build-list’, ‘foldr’, ‘andmap’, ‘ormap’. Graeme Turner
Intro to Local Slides 43–46 Intro to Local
Intro to Local on Youtube
Definitions made inside expressions are motivated and introduced, through ‘local’. Graeme Turner
Local Constants and Definitions Slides 47–52 Local Constants and Definitions
Local Constants and Definitions on Youtube
Video descriptions will be inserted here once complete. Graeme Turner
Efficiency of Local and Common Subexpressions Slides 54–55 Efficiency of Local and Common Subexpressions
Efficiency of Local and Common Subexpressions on Youtube
The advantages of using ‘local’, which include reducing repetitiveness and improving efficiency, are explored. Sandy Graham
Encapsulation with Local Slides 63–68 Encapsulation with Local Part 1
Encapsulation with Local Part 1 on Youtube

Encapsulation with Local Part 2
Encapsulation with Local Part 2 on Youtube
Part 1 - Encapsulation, when one hides the details of the function implementation, is introduced through ‘local’.

Part 2 - The ‘red-vs-blue' function from A4Q2 is re-done using abstract list functions and local through two approaches. The approaches are compared in efficiency, highlighting the efficiency of ‘local’.
Sandy Graham
Intro to Lambda Slides 70–73 Intro to Lambda
Intro to Lambda on Youtube
‘lambda’, which is used to define expressions within the main function, is introduced. Students will learn when and how to use ‘lambda’. Yang Tian Zi
When to use Lambda Slides 75–76 Work in Progress Video descriptions will be inserted here once complete. TBD
Lambda Practice Review Lambda Practice
Lambda Practice on Youtube
The 'make-acronym' function was created by defining local constants using lambda expressions. Using the local constants, a simple local body expression could be defined. Sandy Graham
Lambda Summary Examples Review Part 1 - Summary Example with build-list
Part 1 - Summary Example with build-list on Youtube

Part 2 - Summary Example Mapping with foldr
Part 2 - Summary Example Mapping with foldr on Youtube
Part 1 - The built-in function 'string->list' was re-defined using build-list. Two approaches were used, with and without lambda.

Part 2 - The built-in function 'map' was re-defined using a lambda expression and foldr.
Sandy Graham
*material covered may not be exactly what’s in these slides but directly related to their content


For questions related to course content, contact an instructor or an ISA. The best place to ask questions is on LEARN DISCUSSION or email, but you can also send email or visit during office hours. For questions about marking, contact the Assistants first, who will consult with the Instructor if necessary.


Photo Unavailable
Sandy Graham
Email: sandy.graham@uwaterloo.ca
Online Office Hours:
Tuesday, Thursday 8:30 am - 9:50 am
Tuesday, Thursday 11:30 am - 12:50 pm
Photo Unavailable
Graeme Turner
Email: g3turner@uwaterloo.ca
Online Office Hours:
Monday, Tuesday, Wednesday 4:00 pm - 5:30 pm
Office Hours Access Information (on Learn)
Photo Unavailable
Yang Tian Zi
Email: ytzi@uwaterloo.ca
Online Office Hours:
Tuesday 9:00 pm - 10:30 pm
Thursday 2:30 pm - 4:00 pm
Office Hours Access Information (on Learn)

Instructional Support Assistants (ISAs)

Bill Zhang
Email: cs115@uwaterloo.ca
Online Office Hours:
Monday 12:00 pm - 1:00 pm
Thursday 1:30 pm - 2:30 pm
Friday 1:00 pm - 4:00 pm
Jio Wang
Email: cs115@uwaterloo.ca
Online Office Hours:
Monday 1:00 pm - 2:00 pm
Thursday 10:00 am - 11:00 am
Friday 8:30 am - 11:30 am
Morgan Mallinson
Email: cs115@uwaterloo.ca
Online Office Hours:
Tuesday, Wednesday 1:00 pm - 2:00 pm
Friday 11:30 am - 1:00 pm
Friday 4:00 pm - 5:30 pm

Instructional Support Coordinator (ISC)

Barbara Daly
email: bmzister@uwaterloo.ca

Office Hours


Class Participation

Class participation counts for 5% of the final grade in CS 115. This grade is based off the in-class use of iClickers. iClickers can be purchased at the campus bookstore. During weekly lectures, the instructor will ask several multiple-choice questions to be answered using clickers. Each question during lectures is worth 2 marks: one mark for participation (answering the question), and one mark for correctness (getting the right answer). Your final participation grade is taken from the best 75% of your clicker answers over the whole term.

Use this link for iClicker registration.

You must register your iClicker in order for your responses to count towards your grade.
The Faculty of Mathematics has a fairly extensive iClicker FAQ if you have any questions.


Some assignments will require to complete stepping/tracing questions. Follow the link here to access the stepping problems.


Follow the link below to access assignment solutions. Please note that solutions to labs will not be posted.


Common Errors

Common errors found on assignments and the midterm will be posted below.

How to Submit on MarkUs


To log in to MarkUs, please ensure that you are doing the following:

  • Use Firefox, Safari, or Chrome to access Markus. MarkUs does not work properly with Internet Explorer or Edge.
  • Use all lowercase letters when entering your userid on the CAS page. Using uppercase letters will render you unrecognizable to the system.
  • Use the link to MarkUs provided on the menu at the left.

If you encounter a "Login Failed" message, check that you meet the above three criteria before contacting course personnel. If you are still experiencing issues or have run into different errors (such as a redirect problem), please e-mail the ISAs with your Quest userid and a brief description of your error.

Submitting Assignments

To submit files for Assignments, follow the instructions below.

  1. On your MarkUs homepage, click the assignment name to go to its submission page.
    This box shows you how many files you have submitted and how many of the required files you are missing. The Missing Required Files will initially be equal to the number of files you have to submit. As you submit the properly named files, this number will decrease.
    Assignment Rules
    This box has the assignment name, due date, and the names of the required files for the assignment. You must name your assignment submissions as indicted by the list: a lowercase a followed by a 0, then the assignment number, then a lowercase q followed by the question number. The file extension must be .rkt. For example, for Assignment 2 Question 3, your file should be named a02q3.rkt.
    The names of the lab files are similar to how you name assignment files: a lowercase l (l stands for "lab"; not a capital i nor a number 1) followed by two digits for the lab number, then a lowercase q followed by the question number. For example, the file name for Lab 1 Question 2 should be l01q2.rkt.
  2. Click the "Submissions" tab at the top of the page.
  3. Click "Add A New File". A new row will be added to the table. Click "Choose File" or "Submit" in the new row. (The button's name will depend on your web browser.) In the window that appears, browse to where you have saved your file and select it. Click the Submit button.
  4. Your submitted file will now appear in the table. Check that the filename is correct. If you click on the filename, you will see the contents of the file. You should check that the contents are correct, and that you have submitted what you wanted to submit.

Replacing a file

You can only replace a file with one that has the same name.
Warning Do not use Internet Explorer to replace files. It will appear as though the change has gone through when it has not. Your files will not be replaced.

  • Under the "Replace" column, click "Choose File" or "Browse" for the file you want to replace. In the window that appears, browse to the replacement file and select it. Click the Submit button.

Deleting a file

If you have submitted the incorrect file, you can delete it by selecting the "Delete" box for the file and then clicking Submit. This is also an alternative way to replace a file: delete the file you want to replace and submit the correct version/file.

Viewing Assignment Marks and Results

Once marking for an assignment is completed, you can see your mark for each assignment on your MarkUs home page. For a more detailed breakdown of your mark along with marker comments, click the "Results" link.

  • On the right is your mark breakdown:
    Under this tab you can see the level you received for each criterion.
    Under this tab you can see the weight for each catagory and how your mark was added up.
  • On the left is the code for one of your files.
    1. To see marker comments, click on the left drop-down box (it is above and to the right of ''Annot. Summary'').
    2. Select "GRADED_ASSIGNMENT.rkt". This file contains all of your submissions.
    3. Put your mouse over any lines that are yellow. A box will appear with the marker's comments about that particular line of code, or a general note about your submission.
      The ''Annot. Summary'' tab contains a list of all the comments a marker has made to your assignment. Click on the link at the top left of each comment to go to the associated code.

Copy Paste Error

If you receive the following error when you submit your code to MarkUs, then you most likely have a Copy Paste Error:


The Copy Paste Error is caused by inputting a symbol into your code that our testing software cannot support in a Racket file. Click here to see what it makes your code look like. And just to be crystal clear, the code is not supposed to look like that.

Causes of the Copy Paste Error include:
  • Copying certain symbols from the interactions window to the definitions window.
  • Inserting comment boxes.
  • Inserting images into Dr. Racket.
  • Copying from PDF documents into Dr. Racket
  • Inserting symbols from different language settings on the keyboard
  • Many many more!

This error is subtle! Your code will most likely still run in your Dr. Racket, but when submitted to MarkUs, the code will explode into this. Make sure you always review the basic test results to ensure that there were no issues when submitting!

How to fix a Copy Paste Error

To fix a Copy Paste Error, you should save your code as text. To do this you click File > Save Other > Save Definitions as Text...

Please be aware that Copy Paste Errors will cause your code to fail all of the tests run on it, meaning you will lose marks for having it! Don't let it be a problem.


Midterm Exam:

Date and Time: Monday, March 2nd, from 7:00PM to 8:50PM.

All seating is assigned. Seating information will be posted soon. Watch for an announcement. Your seating information will be found here.

  • Bring your WatCard to the exam for ID.
  • Before you sit down at the exam, check the picture, name and ID that will already be stamped on the exam - if it is not yours, look up your room and seat again (lists will be posted in the room) or see the proctor.

Coverage: The exam will cover the material in all of Modules 1, 2, 3, 4, up to and including material from assignments 1 through 5, and labs 01 through 06.

Questions will be in the form of multiple choice, tracing and coding. You should review lectures and notes, and the supporting materials from labs and assignments as part of your study process. You should bring a pencil and an eraser to write your answers in the exam booklet and to be able to change your answers on the bubble sheet for the multiple choice questions.

Additional Aids:

  • You will be given a reference sheet with your exam. Calculators are not allowed.
  • A sample reference sheet is available at: CS115 Midterm Reference Sheet. Also, a copy of the instructions that will appear at the beginning of the midterm is available at: Midterm Instructions. Please read through these carefully as you prepare for the exam. Do not bring your own copies of these documents to the exam. They will be provided for you at your seat.


Course technology

  • Follow this link to Install DrRacket .
  • If you have any questions, you can ask them on LEARN in the Discussion Forum section. Keep in mind that course staff probably will not answer questions late at night, so try to ask questions early!

Other documentation

  • There are a few general documents that will help you get through this course. Make sure you've read the Survival Guide for starters. Then, before submitting code for assignments and labs, make sure you're up to speed on our suggested Style Guide and that you know how to submit code on MarkUs.
  • The string documentation can be found here.

Allowed Built-In Functions

Each assignment identifies the modules that are covered. Unless the question specifically describes exceptions, you are restricted to using the functions and special forms covered in lectures and described in this post for all assignment solutions. A grade of zero will be applied to any question that uses other functions. As the term goes on, more functions will be added for each module.

Here is a list of allowable Built-In Functions that will be updated weekly:
Module 1
  • any mathematical function found in the section 1.5 of the Racket documentation found here
  • define

Assignment 1 solutions may only use functions and special forms from Module 1. You may not use conditional or if statements.

Module 2
  • any string function found in documentation on Strings here.
  • any string function found in the section 1.11 of the Racket documentation found here
  • max, min

Assignment 2 solutions may only use functions and special forms from Module 1 and Module 2. You may not use conditional or if statements.

Module 3
  • basic comparison functions, e.g. =, >, >=, <, <=, equal?, etc.
  • and, or, not
  • any type predicate function, e.g. string?, number?, integer?, etc.
  • any predicate that tests the nature of its parameter, e.g. even?, negative?, zero?, etc.
  • cond, else

Assignment 3 solutions may only use functions and special forms from Modules 1, 2, and 3.

Module 4
  • cons
  • first, rest
  • empty?, cons?
  • length
  • member?
  • string->list, list->string
  • any Char functions included in the documentation found here

Assignment 4 solutions may only use functions and special forms from Modules 1, 2, 3, and 4.

Module 4 Continued
  • append
  • remove, remove-all
  • make-list
  • integer->char, char->integer
  • may use the function "list" in examples and tests but not the function body

Assignment 5 solutions may only use functions and special forms from Modules 1, 2, 3, 4, and 4 Continued.

Module 5
  • add1, sub1
  • list
  • second, third, fourth
  • range

Assignment 6 solutions may only use functions and special forms from Modules 1, 2, 3, 4, and 5.

Module 6
  • symbol=?

Assignment 7 solutions may only use functions and special forms from Modules 1, 2, 3, 4, 5, 6 and slides 1-35 of Module 7.

Module 7 & 8
  • filter
  • map
  • ormap
  • andmap
  • foldr
  • build-list
  • sort
  • local
  • lambda
  • define-struct

Assignment 8 solutions may only use functions and special forms from Modules 1, 2, 3, 4, 5, 6, 7, and 8. However, solutions must use abstract list functions (meaning no explicit recursion). Also, all helper functions must be defined locally.

Assignment Information

General information

All Assignments will be posted on the course website AND the Assignment folder on Learn.

Please note that all assignment and lab deadlines are in EDT.

Before submitting code for assignments, you should familiarize yourself with the code style guidelines and read the instructions on how to submit.

Lab computers are available to complete assignments on should you have any technical difficulties with your personal computer. We highly recommend to regularly back up your files, to prevent lost progress.

Assignments are designed to give you practice in the concepts and skills discussed in lecture, to prepare you for exams, and to give you feedback on your mastery of course material. You rob yourself of these benefits if you hand in work that is not your own. Please read the section below on Academic Integrity, including the linked UW Policies and Avoiding Academic Offenses. These apply to every course you will take at UW, and you should be familiar with them.

Preamble: Each assignment has a preamble which explains the assignment requirements and restrictions. Read carefully. Changes from one assignment to the next will be highlighted.

Help: Each assignment will have its own discussion board on Learn broken down by question. Use these forums to ask for clarification on assignment questions, lecture material, or Racket in general. If you are worried about whether or not your question is appropriate (Do not post code) you can make a private post.

Basic Tests: Check Markus to see the basic test results for your submitted files. Note that basic tests only check to see if your code will run on our marking server and that any required spelling of functions, parameters, etc. or number of parameters/arguments is correct. It does not generally do testing to verify the correctness of your code as per the assignment specifications; that is something you must check.

Accessing Files: To use any of the Racket files, you must save them from the webpage onto your computer by right clicking on the file name and seleting the option "Save Link as...". This will open a dialogue box that will allow you to save the Racket file on your computer and open it using DrRacket on your computer. Please do not use Internet Explorer to attempt to access files; the option to save the file does not exist. Any other browser is acceptable.

Interface Files: With every assignment, we will typically include an "interface" which contains the correct spelling of all functions and structures requested by the assignment. Since the markers will be running our tests of your code, spelling errors can result in loss of marks. Use the interface provided as a starting point for your own work.

Style guidelines: Your assignment submissions should conform to the guidelines laid out in the style guide. Some of the main points are summarized here.

  • The file for one question should have a file extension of .rkt.
  • Please do not submit code using the embedded Special Boxes offered by DrRacket, such as Comment Boxes or Test Boxes; these cause major problems for our marking procedures.
  • Use semicolons for comments, and check-expect tests as described in the style guide and in lecture.
  • Do not cut anything out of the Interactions window of DrRacket and paste it into the Definitions window. There is no need for you to do this, and because of the way DrRacket works, what you are pasting is not simple text; it also causes major problems with our marking procedures.

Submission: You will submit program files electronically through MarkUs as described in how to submit.

Late assignments: Late assignments will not be accepted; consequently, you should aim to finish early, to allow for unexpected delays. You may submit a single question as often as you wish; submitting a partially-completed solution is a good idea, just in case you don't get back to it in time. After an assignment due date has passed, you may still submit your work for feedback only (no marks) but you must inform the CS 115 ISAs by email so they are aware of your submission and request for feedback.

Missed work due to illness: With appropriate, authorized documentation, assignment work may be excused. If a missed assignment is excused, its weight is distributed over the remaining un-excused assignments. In the interest of understanding the course material for future assignments and exams, students who miss work are encouraged to do it, submit it and request feedback from the ISAs.

Marked assignments: Corrected assignments will be available on MarkUs, usually the week after the assignment is due. Complete solutions will be available online under the solutions tab. Review the feedback that is provided on the marked assignment and in the Post-Mortems.

Remark requests for assignments: If, after checking the marking on MarkUs, the post mortem comments and the solutions, you believe that errors were made in the marking, please email a ISA via cs115@uwaterloo.ca, preferably from your uWaterloo email account for verification of who you are, and state clearly what questions or components you feel were mis-marked and why. The subject for the email should be cs115 Assignment X Remark Request with the assignment number filled in appropriately. If you are not emailing from your uWaterloo email, then include your uWaterloo(Quest) username and student ID. The deadline for remark requests is 2 weeks after the marks are released on MarkUs. To ensure fairness and equality, remark requests are usually processed together after the deadline.


All work in CS 115 is to be done individually. The penalty for plagiarism on assignments (first offense) is an assigned mark of 0 percent on the assignment and a 5 percent reduction of the final grade, consistent with School of Computer Science policy. In addition, a letter detailing the offense is sent to the Associate Dean of Undergraduate Studies, meaning that subsequent offenses will carry more severe penalties, up to suspension or expulsion.

To avoid inadvertently incurring this penalty, you should discuss assignment issues with other students only in a very broad and high-level fashion. Do not take notes during such discussions, and avoid looking at anyone else's code, on screen or on paper. If you find yourself stuck, contact the ISA or instructor for help, instead of getting the solution from someone else. Do not consult other books, library materials, Internet sources, or solutions (yours or other people's) from other courses or other terms.

Rules for group work: All assignments are to be done individually.


Academic Integrity

In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [Check www.uwaterloo.ca/academicintegrity/ for more information.]


MOSS (Measure of Software Similarities) is used in this course as a means of comparing students' assignments to ensure academic integrity.


A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4, www.adm.uwaterloo.ca/infosec/Policies/policy70.htm. When in doubt please be certain to contact the department's administrative assistant who will provide further assistance.


A student is expected to know what constitutes academic integrity [check www.uwaterloo.ca/academicintegrity/] to avoid committing an academic offence, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about 'rules' for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean. For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline, www.adm.uwaterloo.ca/infosec/Policies/policy71.htm. For typical penalties check Guidelines for the Assessment of Penalties, www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.


A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground. A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals) www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.

Students with Disabilities

AccessAbility Services (AAS), located in Needles Hall, Room 1132, collaborates with all academic departments to arrange appropriate accommodations for students with disabilities without compromising the academic integrity of the curriculum. If you require academic accommodations to lessen the impact of your disability, please register with AAS at the beginning of each academic term.

Mental Health Resources

Mental Health: If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support.

On-campus Resources

Off-campus Resources

  • Good2Talk (24/7): Free confidential help line for post-secondary students. Phone: 1-866-925-5454
  • Here 24/7: Mental Health and Crisis Service Team. Phone: 1-844-437-3247
  • OK2BME: set of support services for lesbian, gay, bisexual, transgender or questioning teens in Waterloo. Phone: 519-884-0000 extension 213

Diversity: It is our intent that students from all diverse backgrounds and perspectives be well served by this course, and that students’ learning needs be addressed both in and out of class. We recognize the immense value of the diversity in identities, perspectives, and contributions that students bring, and the benefit it has on our educational environment. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In particular:

  • We will gladly honour your request to address you by an alternate/preferred name or gender pronoun. Please advise us of this preference early in the semester so we may make appropriate changes to our records.
  • We will honour your religious holidays and celebrations. Please inform of us these at the start of the course.
  • We will follow AccessAbility Services guidelines and protocols on how to best support students with different learning needs.

More Information

Academic Integrity and Students with Disabilities