CS 106 Winter 2017

Course outline

CS 106 (Introduction to Computer Science 2) is a second-level introductory Computer Science course. This information on this web page is tentative and will be frozen at the beginning of the term; see the course website for current information.

Course Description

This course, together with its predecessor CS 105, offers a comprehensive introduction to practical computer programming for students with no background in the subject, and who will not normally go on to further study in computer science. The course is required by students in the GBDA program, and available to students from other programs on campus.

The course is taught using the Processing programming environment. When working on assignments, the reference section will be especially useful.

While the main theme of CS 105 is to develop basic skills in imperative programming (variable declarations, control flow, defining functions, basic object-oriented programming), in CS 106 we explore more general applications of programming in contexts of interest to visual artists and designers.

Course Objectives

The goal of CS 106 is to apply programming idioms in a practical context, using functionality available in built-in functions, libraries that come shipped with Processing, and libraries that can be added on to it. Topics include input/output, user interface programming, procedural content generation, object-oriented programming, and text and structured data processing.


Course schedule

CS 106 LEC 001: Mondays and Wednesdays, 10:00–11:20, MC 1085
CS 106 LEC 002: Mondays and Wednesdays, 2:30–3:50, QNC 1507
CS 106 LAB 101: Mondays and Wednesdays, 1:00–2:20, MC 3003
CS 106 LAB 102: Mondays and Wednesdays, 4:00–5:20, MC 3003
CS 106 LAB 103: Mondays and Wednesdays, 1:00–2:20, MC 3005
CS 106 LAB 105: Mondays and Wednesdays, 1:00–2:20, MC 3027
Students from LAB 104,106 should attend LAB 102 in MC3003
Wednesday March 1st, 7:00–8:50, rooms TBA
Final Exam

Course staff

All email addresses are @uwaterloo.ca.

Instructor: Craig S. Kaplan
DC 2110
Email: csk
Office hours: Tuesdays 2:30 PM - 3:30 PM or by appointment.
Instructor: Kevin Harrigan
ML 241
Email: kevinh
Office hours: TBA
Instructional Support Assistant: Kristina Bayda
MC 4065
Email: cs106
Office hours: Thursdays 2:00 PM - 3:00 PM, Fridays 1:00 PM - 2:00 PM
Instructional Support Assistant: Rishabh Moudgil
MC 4065
Email: cs106
Office hours: Wednesdays 12:00 PM - 1:00 PM, Fridays 2:00 PM - 3:00 PM
Instructional Assistant: Anthony

Office hours:
Instructional Assistant: Jane Henderson

Office hours:
Instructional Support Coordinator: Travis Bartlett
MC 4011
Email: trbartle

List of planned topics

Processing recap
A review of programming concepts from CS 105, in terms of the basic structure of the Processing language: types, declarations, expressions, statements, and functions.
High-level operations on arrays, including appending, concatenation, and removal. Built-in array manipulation functions.
The String class. Working with characters and strings. String comparisons. Printing and displaying text.
Input and output
Loading files in various formats (text, images, illustrations) into Processing, writing files.
Advanced Shapes
Drawing fancy shapes with beginShape() and endShape(), using the PShape class.
User interfaces
The model-view-controller architecture. Direct manipulation interfaces. User interface toolkits. The ControlP5 library in Processing.
Geometric context
The use of translate(), rotate(), and scale() to modify a program’s coordinate system. Building a hierarchy of transformations using pushMatrix() and popMatrix(). Order of operations.
Recursion and Fractals
Iterated function systems as a demonstration of recursion.
Randomness and Noise
The random() function in detail. Pseudorandomness. Applications of randomness. Introduction to noise().
Text processing
Decomposing text into tokens. Regular expressions. Unicode. Working with dates and times.
Structured data processing
Dealing with table-structured (CSV) and tree-structured (JSON) data. Processing live data acquired from web APIs.

Student expectations

There will be 8–10 assignments (roughly weekly, due Sunday nights via LEARN), consisting primarily of programming questions. All assignments must be completed individually by students. Absolutely no late assignment submissions are permitted, but the final assignment mark will be computed by dropping the lowest assignment mark.
There will be approximately 10 labs (roughly weekly, due Wednesday afternoons via LEARN), consisting of smaller exercises and coding walk-throughs. All labs must be completed individually by students, though students are invited to discuss lab questions and share ideas.
A 110-minute midterm is scheduled for Wednesday, March 1st at 7:00pm. A 150-minute final exam will be scheduled during the exam period at the end of the term.
Marking scheme

Participiation: 5% (via responses to clicker questions)
Labs: 5%
Assignments: 30%
Midterm: 20%
Final exam: 40%

Students must pass the exam portion of the course separately in order to pass the entire course.


Late assignments

Late assignments will not be accepted; consequently, you should aim to finish early, to allow for unexpected delays. After an assignment due date has passed, you may still submit your work for feedback only (no marks) to the late folder and you must inform the CS 106 ISAs by email so they are aware of your submission and request for feedback.

Missed assignments 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 unexcused 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 request feedback from the ISAs. Please see the Verification of Illness Form.


If you have problems with the marking of an assignment, please contact the ISAs within two weeks of the date the assignment's mark was made available on LEARN. The email must include your name, student number, Quest user ID, and assignment number. We also require that you list the questions you feel were marked incorrectly, and, for each of those questions, why you feel your mark should be changed. Please be aware that the assignment will be remarked in its entirety.

If you have problems with the marking of a midterm exam, please fill out a re-mark request form. Bring a paper copy of the filled-out form to the Course Coordinator or the ISA within two weeks of the day when your marked exam became available.

Group work

Group work is disallowed unless otherwise specified.

Academic integrity and grivances

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 the Office of Academic Integrity’s website, www.uwaterloo.ca/academicintegrity/, for more information. All members of the UW community are expected to hold to the highest standard of academic integrity in their studies, teaching, and research. This site explains why academic integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in – and out – of the classroom.

Grievance: 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, http://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.

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

Avoiding Academic Offenses: Most students are unaware of the line between acceptable and unacceptable academic behavior, especially when discussing assignments with classmates and using the work of other students. For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Faculty of Mathematics Cheating and Student Academic Discipline Policy, http://www.math.uwaterloo.ca/navigation/Current/cheating_policy.shtml.

Appeals: 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, http://www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.

Note for students with disabilities: AccessAbility Services (AA), 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 the AA at the beginning of each academic term. See http://www.studentservices.uwaterloo.ca/disabilities for more information.