CS 106
Introduction to Computer Science 2 | Winter 2018

This is the home page for CS 106, a second-level introductory programming course at the University of Waterloo. The course explores the use of graphics in art, design and visualization contexts. It is a required course for students in the Global Business and Digital Arts program.

Please consult the separate course outline for more detailed information about many aspects of the course's operation, as well as course and university policies.


Logistics

Lectures
CS 106 LEC 001: Mondays and Wednesdays, 8:30–9:50, STC 0040
CS 106 LEC 002: Mondays and Wednesdays, 11:30–12:50, STC 0040
Labs
CS 106 LAB 101: Mondays and Wednesdays, 1:00–2:20, MC 3003
CS 106 LAB 102: Mondays and Wednesdays, 1:00–2:20, MC 3003
CS 106 LAB 103: Mondays and Wednesdays, 2:30–3:50, MC 3003
CS 106 LAB 104: Mondays and Wednesdays, 2:30–3:50, MC 3005
CS 106 LAB 105: Mondays and Wednesdays, 4:00–5:20, MC 3003
CS 106 LAB 106: Mondays and Wednesdays, 4:00–5:20, MC 3027
CS 106 LAB 107: Mondays and Wednesdays, 4:00–5:20, MC 3003
As indicated above, students in LAB 102 should attend LAB 101, and students in LAB 107 should attend LAB 105.
Midterm
Wednesday February 28th, 7:00–8:50, rooms TBA
Final Exam
TBA

Staff

For questions related to course content, contact an instructor or an ISA. The best place to ask questions is on Piazza, but you can also send email (add "@uwaterloo.ca" to the addresses below) or visit during office hours. For questions about marking, contact the Assistants first, who will consult with the Instructor if necessary. For questions about course logistics (particularly absences), contact the Coordinator.

Kevin
Instructor: Kevin Harrigan
email: kevinh
Office hours:
  • Mon/Wed -> 10:00am - 11:00am in MC 4065
  • By appointment
Craig
Instructor: Craig S. Kaplan (see also)
email: csk
Office hours:
  • Monday -> 10:00am - 11:00am in DC 2110
  • Thursday -> 11:00am - 12:00pm in DC 2110
  • By appointment
Sabiha
Instructional Support Assistant: Sabiha Hansrod
email: cs106@uwaterloo.ca
Office hours:
  • Thursday -> 11:00am - 12:00pm in MC 4065
  • Friday -> 1:00pm - 2:00pm in MC 4065
Murielle
Instructional Support Assistant: Murielle Mambo
email: cs106@uwaterloo.ca
Office hours:
  • Thursday -> 3:30pm - 4:30pm in MC 4065
  • Friday -> 11:00am - 12:00pm in MC 4065
William
Instructional Assistant: William Callaghan
Jessy
Instructional Assistant: Jessy Ceha
Greg
Instructional Assistant: Greg d'Eon
Lisa
Instructional Assistant: Lisa Elkin
Lisa
Instructional Assistant: Sangho Suh
Chantelle
Instructional Support Coordinator: Chantelle Gellert
email: chantelle.gellert

Schedule

Notes and sketches marked with "(2017)" are the materials that were used last year. They can be useful for now as a reference, but we will replace them with updated files during the term.

See also Professor Kaplan's in-class sketch snapshots and a separate page with additional material made available by instructors.

Week of Lectures Suggested readings
01 January Module 00: Administration [notes]
Module 01: Processing recap [notes]
CS 105 lecture notes
08 January Module 02: Arrays and Strings [notes, sketches] Learning Processing, Chapters 9 and 17; Online tutorial on arrays; Online tutorial on strings
15 January Module 03: Input and Output [notes, sketches] Learning Processing, Sections 15.1, 17.1, 17.2, 17.3, 18.3, 18.4, 21.3, 21.4
22 January Module 04: Advanced Shapes [notes, sketches]
Learning Processing, Sections 14.3, 13.8, 13.9; online tutorial about the PVector class
29 January Module 05: User Interfaces [notes, sketches]
05 February Module 06: Geometric Context [notes, sketches]

Learning Processing, Sections 14.1, 14.5, 14.7, 14.8, 14.9 (ignoring 3D)
12 February Module 07: Recursion [notes, sketches] Learning Processing, Section 13.11
Nature of Code, Chapter 8
19 February Reading week: no lectures
26 February Module 08: Randomness [notes, sketches] Learning Processing, Sections 13.3–13.6
05 March TBA
Module 09: Noise [notes, sketches]

Nature of Code Introduction, especially I.6, "Perlin Noise (A Smoother Approach)"
12 March Module 10: Data Processing and Text [notes, sketches] The first part of Shiffman's online notes about data
Learning Processing, Sections 17.1, 17.2 and Chapter 18
19 March Module 11: Tables [notes, sketches]
26 March Module 12: Tree-structured data [notes, sketches]
02 April Wrap-up [notes] Note: no lecture on April 04

Marking

Participation 5%
Labs 5%
Assignments 30%
Midterm 20%
Final 40%

You are required to pass the examination portion of the course (the weighted average of the midterm and the final) in order to pass the course as a whole.

Please see the bottom of the course outline page for more information about re-marking of assignments and the midterm.


Assignments

Before submitting code for assignments, you should familiarize yourself with the code style guidelines (as well as Processing's auto-format feature!) and read the instructions on how to submit code on LEARN.

Labs


Resources

Practice

  • We have created a large set of practice programming exercises to help you build your skill at writing short functions. Some of these exercises may be included in labs during the term.

Processing

Course technology

  • We use Piazza for questions, discussions, announcements, and other topics of interest to students in the course. Visit The course's Piazza page for timely updates on course material. Feel free to use Piazza to seek help with assignments from the course staff or each other, but keep academic integrity in mind. Don't post anything publicly that might constitute an academic offence (e.g., a partial solution to a programming question). If in doubt, you can always make your post private, so that other students can't see it.
  • Non-public aspects of the course (such as assignment submission and marks) happen on LEARN. But for the most part, all other course-related documents will be posted publicly here.
  • The course uses iClickers for in-class feedback and quizzes. The Faculty of Mathematics has a fairly extensive iClicker FAQ if you have any questions. You will need to register your clicker in order for your in-class responses to be recorded. You can also view your clicker marks online.

Other documentation

  • There are a few general documents that will help you get through this course, which are identical to the ones we made available to you in CS 105. 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 code style guidelines and that you know how to submit code on LEARN.