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 Fall 2019.
You must pass the course to receive the 3% bonus (the total bonus is based on the number of completed labs).
Assignment 0 is not worth any marks, but it MUST be submitted for all other grades to be counted.
If you have any grievances about an assignment's marking, please email firstname.lastname@example.org 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.
|1. Sept. 4–6||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 Sept. 11 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.
|2. Sept. 9–13||Module 1: Introduction Continued||
Lab 2 due Monday Sept. 16 4:00PM
Lab 2 Interface
|3. Sept. 16–20||Module 2: Design Recipe Module 2 Corrections||
Lab 3 due Monday Sept. 23 4:00PM
Lab 3 Interface
Assignment 1 due Wednesday Sept. 18 10:00AM
Assignment 1 Interface
Please right-click the link to save the Interface Files, do not copy and paste them.
|4. Sept. 23–27||Module 3: Conditionals||
Lab 4 due Monday Sept. 30 4:00PM
Assignment 2 due Wednesday Sept. 25 10:00AM
Assignment 2 Interface
String Documentation [List of Allowed Built in Functions]
|5. Sept. 30–Oct. 4||Module 3: Conditionals Continued||
Lab 5 due Monday Oct. 7 4:00PM
Assignment 3 due Wednesday Oct. 2 10:00AM
|6. Oct. 7–11||Module 4: Lists Continued||
Lab 6 due Monday Oct. 21 4:00PM
Assignment 4 due Friday Oct. 11 10:00AM
|7. Oct. 14–18||Reading Week|
|8. Oct. 21–25:||Module 5: Other Recursion Continued||
Lab 7 due Monday Oct. 28 4:00PM
Assignment 5 due Wednesday Oct. 23 10:00AM
|9. Oct. 28–Nov. 1||Module 6: Two Lists||
Lab 8 due Monday Nov. 4 4:00PM
Assignment 6 due Wednesday Oct. 30 10:00AM
|10. Nov. 4–8||Module 7: Local||
Lab 9 due Monday Nov. 11 4:00PM
Midterm Monday Nov. 4 7:00-8:50 PM
|11. Nov. 11–15||Module 7 :Local Continued||
Lab 10 due Monday Nov. 18 4:00PM
Assignment 7 due Wednesday Nov. 13 10:00AM
|12. Nov. 18–22||Module 8: Structures Continued||
Lab 11 due Monday Nov. 25 4:00PM
Assignment 8 due Wednesday Nov. 20 10:00AM
|13. Nov. 25–29||Module 9: Binary Trees||
Lab 12 due Monday Dec. 2 4:00PM
Assignment 9 due Wednesday Nov. 27 10:00AM
|14. Dec. 2–6||Module 10: General Trees||
Lab 13 practice only, not for bonus
Assignment 10 due Tuesday Dec. 3 11:59PM
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.
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.
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.Solutions
Common errors found on assignments will be posted below.
To log in to MarkUs, please ensure that you are doing the following:
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.
To submit files for Assignments, follow the instructions below.
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.
If you have submitted the incorrect file, you can delete it by selecting the "Delete" box for the file and then clicking . This is also an alternative way to replace a file: delete the file you want to replace and submit the correct version/file.
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.
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:
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!
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.
Exam information will be posted here.
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:
Assignment 1 solutions may only use functions and special forms from Module 1. You may not use conditional or if statements.
Assignment 2 solutions may only use functions and special forms from Module 1 and Module 2. You may not use conditional or if statements.
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.
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 email@example.com, 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.
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.
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: 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.
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: