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, MC 4021
CS 106 LEC 002: Mondays and Wednesdays, 10:00–11:20, MC 4021
CS 106 LEC 003: Mondays and Wednesdays, 11:30–12:50, MC 4020
CS 106 LEC 004: Mondays and Wednesdays, 1:00–2:20, MC 4020
Labs
CS 106 LAB 101: Mondays and Wednesdays, 10:00–11:20, MC 3003
CS 106 LAB 102: Mondays and Wednesdays, 2:30–3:50, MC 2062
CS 106 LAB 103: Mondays and Wednesdays, 2:30–3:50, MC 2063
CS 106 LAB 104: Mondays and Wednesdays, 11:30–12:50, MC 3003
CS 106 LAB 105: Mondays and Wednesdays, 11:30–12:50, MC 2062
CS 106 LAB 106: Mondays and Wednesdays, 11:30–12:50, MC 2063
CS 106 LAB 107: Mondays and Wednesdays, 1:00–2:20, MC 3003
CS 106 LAB 108: Mondays and Wednesdays, 1:00–2:20, MC 2062
CS 106 LAB 109: Mondays and Wednesdays, 1:00–2:20, MC 2063
CS 106 LAB 110: Mondays and Wednesdays, 2:30–3:50, MC 3003
CS 106 LAB 111: Mondays and Wednesdays, 4:00–5:20, MC 2062
CS 106 LAB 112: Mondays and Wednesdays, 4:00–5:20, MC 2063
Midterm
Friday February 28th, 6:30PM–8:00PM at STC 1012/0060/0050/0040/0020 (A link will be posted closer to the exam date with your seat location)
Old Midterm [ 2018 | Solved ]
Please note this 2018 sample midterm is in the language Processing and that some of the questions in this midterm are outdated and will not be tested. The Winter 2020 midterm will be in JavaScript P5.

Staff

For questions related to course content, contact an instructor or an ISA. The best place to ask questions is to use the discussion features of LEARN. This can be found under "Connect". You can also visit during office hours. For questions about marking, contact the Assistants first, who will consult with the Instructor if necessary. You can email them at "cs106@uwaterloo.ca". For questions about course logistics (particularly absences), contact the Coordinator, Barbara Daly.

Kevin
Instructor: Kevin Harrigan
email: kevinh@uwaterloo.ca
Office hours:
  • Wednesdays 1:00-3:00 Room 3602
  • By appointment
Michael
Instructor: Michael Brooks
email: mlbrooks@uwaterloo.ca
Office hours:
  • Mondays 3:00-4:00 in DC3102
  • Wednesdays 10:00-11:00 in DC3102
  • By appointment
Muddassir
Instructor: Muddassir Malik
email: muddassir.malik@uwaterloo.ca
Office hours:
  • Tuesdays 3:30-5:00 in DC2129
  • By appointment
Daniel
Instructional Support Assistant: Daniel Huab
email: cs106@uwaterloo.ca
Office hours (MC 4065):
  • Thursdays 3:00-4:00 (Work Station 4)
  • Fridays 4:00-5:00 (Work Station 4)
  • By appointment
Sherry
Instructional Support Assistant: Sherry Zhao
email: cs106@uwaterloo.ca
Office hours (MC 4065):
  • Thursdays 11:00-12:00 (Work Station 4)
  • Fridays 11:00-12:00 (Work Station 4)
  • By appointment
Instructional Apprentice: Micheal Friesen
Instructional Apprentice: Genseric Ghiro
Instructional Apprentice: Scott Larter
Instructional Apprentice: Abel Molina
Instructional Apprentice: Ludwig Wall
Barbara
Instructional Support Coordinator: Barbara Daly
email: barbara.daly@uwaterloo.ca
Office Hours as of March 23, 2020
Instructor\Date Mon Tue Wed Thu Fri
Kevin Harrigan 8:30am-11:30am 8:30am-11:30am 1pm-3pm
Mike Brooks 11:30am - 1pm 11:30am - 1pm
Muhammad Muddassir Malik 1pm - 2:20pm 3:30pm - 5pm 1pm - 5pm

You can go to LEARN >> Connect >> Virtual Classroom to join instructors' office hours.

ISA\Date Mon Tue Wed Thu Fri
Daniel 12pm - 1:30pm 1pm - 3pm 12pm - 1:30pm 1pm - 3pm 12pm - 1pm
Sherry 3pm - 4:30pm 3pm - 4:30pm 3pm - 4:30pm 3pm - 4:30pm 2pm - 4pm

IA\Date Mon Tue Wed Thu Fri
Scott Larter 11:30am - 1pm 11:30am - 1pm
Ludwig Wilhelm Wall 10:40am - 12pm 10:40am - 12pm 10:40am - 12pm
Abel Molina Prieto 1pm - 3pm 1pm - 4pm
Genseric Ghiro 10am - 12pm 10am - 12pm

You can go to LEARN >> Connect >> Chat to join ISAs and IAs' office hours.


Schedule

Week of Lectures Labs Assignments Suggested readings
06 January Administration [notes]
Module 01: Processing Recap [notes]
Wed Jan 8 11:59 PM A01, Fri Jan 10 11:59 PM CS 105 lecture notes
13 January Module 02: Containers [notes][Racer Code] Wed Jan 15 11:59 PM A02, Fri Jan 17 11:59 PM
A03, Fri Jan 24 11:59 PM
20 January Module 03: Input and Output [notes, sketches] Wed Jan 22 11:59 PM A04, Fri Jan 31 11:59 PM
27 January Module 04: Advanced Shapes [notes, sketches]
Wed Jan 28 11:59 PM A05, Fri Feb 7 11:59 PM
03 February Module 05: User Interfaces [notes, sketches]
Wed Feb 6 11:59 PM A06, Fri Feb 14 11:59 PM
10 February Module 06: Geometric Context [notes, sketches]
Wed Feb 12 11:59 PM A07, Fri Mar 6 11:59 PM
17 February Reading week: no lectures
24 February Module 07: Earth, Sun and Moon and Review [notes, Review Programs] Wed Feb 26 11:59 PM
02 March Module 08: Randomness [notes, sketches]

Module 08: Noise [notes, sketches]

Wed Mar 4 11:59 PM Fri Mar 13 11:59 PM
09 March Module 09: Data Processing and Text [notes, sketches]
Wed Mar 11 11:59 PM Fri Mar 20 11:59 PM
23 March Module 10: Tables

10a Introduction to Tables,

10b Introduction to Tables in JavaScript p5,

10c Cells in Tables in JavaScript p5,

10d An Example program using Tables in JavaScript p5,

10e Baseball Master Table in JavaScript p5,

10f Baseball Salaries Table in JavaScript p5.mp4

30 March Module 11: Trees [notes, Demos]

11a Trees Intro.mp4

11b Trees Intro.mp4

11c Trees Intro.mp4

11d Trees Game.mp4


Marking

Participation 10%
Labs 10%
Assignments 35%
Midterm 35%
Project 10%

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 the Processing IDE's auto-format feature!) and read the instructions on how to submit code on LEARN.

Labs


Resources

Practice

  • A set of practice programming exercises will be provided before the Midterm Test to help you build your skill at writing short functions.

JavaScript p5

  • The course is taught using the ( JavaScript p5 ) programming environment. When working on assignments, the reference reference section section will be especially useful.
  • We recommend the free ebook “Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing”. By Ben Fry, Casey Reas, Lauren McCarthy. This ebook is free to University of Waterloo students. It is available for free through UWaterloo's subscription to O'Reilly On-line Learning. Visit this page "Start Your Free Trial", then enter your uwaterloo email address. This should give you instant access to the entire book! Note this may only work when you are connected to campus wifi or using a lab computer.

Course technology

  • We use LEARN for questions, discussions, announcements, and other topics of interest to students in the course. Visit LEARN for timely updates on course material. Feel free 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).
  • 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 on Learn.

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.

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 www.uwaterloo.ca/academicintegrity/ for more information.]

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

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

More Information

Academic Integrity and Students with Disabilities