CS 106 Winter 2019

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.

Textbooks

Course schedule

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.
Arrays
High-level operations on arrays, including appending, concatenation, and removal. Built-in array manipulation functions.
Strings
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

Assignments
There will be 8–10 assignments (roughly weekly, due Friday nights via LEARN), consisting primarily of programming questions. All assignments must be completed individually by students. Absolutely no late assignment submissions are permitted, and this course does not offer grace days. Each student's final assignment grade will be computed by dropping their lowest-scoring individual assignment.
There will be one final mini-project due at the end of the term. The project will be worth roughly twice the amount of an individual assignment. Unlike the other assignments, a student's project mark is not eligible for dropping, even if it's their lowest-scoring assignment of the term.
Labs
There will be approximately 8–10 labs (roughly weekly, due Wednesday nights 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.
Exams
A 90-minute midterm is scheduled for Friday, March 1st at 6:30pm. A 150-minute final exam will be scheduled during the exam period at the end of the term.
Marking scheme

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

Students must pass the weighted average of the midterm and final exam in order to pass the entire course.

Course Policies

Collaboration

Group work is disallowed unless otherwise specified. Any excessive collaboration will be treated as a violation of academic integrity.

You are responsible for writing all the code in your assignments and labs. You may not receive code from anybody else, whether by email, by copying-and-pasting, by dictation, by having them type it into your Processing window, or by any other means.

When working on assignments, please do not show your code to other students, or allow them to see it accidentally. You can discuss assignment problems in general terms, and perhaps work together on strategies for solving them, but do not go so far as to develop code in pairs or groups.

When working on lab exercises, we're more tolerant of students looking over each others' shoulders and seeing ideas for solutions. But in the end, the work you submit must still be your own.

Devices in Lectures

Aside from Clickers, please avoid unnecessary use of electronic devices during lectures. They are distracting to students around you, and educational research has shown repeatedly that they are harmful to your learning as well. Successful participation in lectures relies on nothing more than your focused attention, together with notes taken by hand and the occasional use of Clickers.

If you do have an electronic device out during lecture, please make sure you are using it only for looking at lecture notes or using Processing. Do not use it for outside communication, social media, games, or working on assignments or labs. Consider sitting towards the back of the class, and/or turning down your screen's brightness, to minimize distractions to others.

Late assignments

Late assignments will receive no credit; 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.

Here is a non-exhaustive list of excuses that we will not accept for late assignments:

Generally speaking, each student who works on their own computer is responsible for maintaining that computer, its network, and backups, to avoid any missed deadlines. Students who are uncomfortable doing so should use one of the on-campus labs.

On the other hand, LEARN is always up and running. Feel free to submit early and often—LEARN can be useful as a failsafe backup for partially completed assignments.

Missed assignments due to illness

With appropriate, authorized documentation (provided via a Verification of Illness Form), 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 complete it anyway, and submit it for feedback from the ISAs.

Remarking

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. Details will be provided after the midterm.

University Policies

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 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.

Intellectual Property

Students should be aware that this course contains the intellectual property of their instructor, TA, and/or the University of Waterloo. Intellectual property includes items such as:

Course materials and the intellectual property contained therein, are used to enhance a student’s educational experience. However, sharing this Intellectual property without the intellectual property owner’s permission is a violation of intellectual property rights. For this reason, it is necessary to ask the instructor, TA and/or the University of Waterloo for permission before uploading and sharing the intellectual property of others online (e.g., to an online repository).

Permission from an instructor, TA or the University is also necessary before sharing the intellectual property of others from completed courses with students taking the same/similar courses in subsequent terms/years. In many cases, instructors might be happy to allow distribution of certain materials. However, doing so without expressed permission is considered a violation of intellectual property rights.

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. 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. For typical penalties, check Guidelines for the Assessment of Penalties.

Avoiding Academic Offenses

Most students are unaware of the line between acceptable and unacceptable academic behaviour, 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.

Appeals

A decision made or a 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.

Note for students with disabilities

The AccessAbility office is located in Needles Hall, Room 1401, 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 AccessAbility Services at the beginning of each academic term.