CS 106
Introduction to Computer Science 2 | Winter 2019

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 4059
CS 106 LEC 002: Mondays and Wednesdays, 11:30–12:50, DC 1351
Labs
CS 106 LAB 101: Mondays and Wednesdays, 1:00–2:20, MC 3003
CS 106 LAB 102: Mondays and Wednesdays, 10:00–11:20, MC 3004
CS 106 LAB 103/104: Mondays and Wednesdays, 2:30–3:50, MC 3003
CS 106 LAB 105: Mondays and Wednesdays, 4:00–5:20, MC 3003
Midterm
Friday March 1st, 6:30PM–8:00PM at DC 1350 / DC 1351 (Check Odyssey)
Old Midterm [ 2018 | Solved ]
Please note that some of the questions in these are outdated and will not be tested
Final Exam
Thursday April 11th, 9:00AM–11:30AM, STC 1012

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

Kevin
Instructor: Kevin Harrigan
email: kevinh
Office hours:
  • Mon/Wed: 10:00am - 11:00am in MC 4065
  • By appointment
Rina Wehbe
Instructor: Rina Wehbe
email: rina.wehbe@uwaterloo.ca
Office hours:
  • Thursdays: 1:00pm - 3:00pm in MC 4065
  • By appointment
Rebecca
Instructional Support Assistant: Rebecca Chirayath
email: cs106@uwaterloo.ca
Office hours (MC 4065):
  • Thursday: 4:00 - 5:00 PM
  • Friday: 4:00 - 5:00 PM
Prabnur
Instructional Support Assistant: Prabnur Bal
email: cs106@uwaterloo.ca
Office hours (MC 4065):
  • Thursday: 3:00 - 4:00 PM
  • Friday: 12:30 - 2:00 PM
Johann
Instructional Apprentice: Johann Wentzel
Office hours (MC 4065):
  • Thursday: 1:30 - 2:30 PM
Margaret
Instructional Apprentice: Margaret Foley
Office hours (MC 4065):
  • Friday: 3:00 - 4:00 PM
Matthew
Instructional Apprentice: Matthew Lakier
Office hours (MC 4065):
  • Thursday: 1:00 - 2:00 PM
Sangho
Instructional Apprentice: Sangho Suh
Office hours (MC 4065):
  • Friday: 2:00 - 3:00 PM
John Akinyemi
Instructional Support Coordinator: John Akinyemi
email: john.akinyemi at uwaterloo.ca

Schedule

Notes and sketches marked with "(2018)" are the materials that were used in a previous 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
07 January Administration [notes]
Module 00: Processing Recap [notes, sketches]
Module 01: Generative Art [notes, sketches]
CS 105 lecture notes
14 January Module 02: Arrays and Strings [notes, sketches] Learning Processing, Chapters 9 and 17; Online tutorial on arrays; Online tutorial on strings
21 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
28 January Module 04: Advanced Shapes [notes, sketches]
Learning Processing, Sections 14.3, 13.8, 13.9; online tutorial about the PVector class
04 February Module 05: User Interfaces [notes, sketches]
11 February Module 06: Geometric Context [notes, sketches]
Learning Processing, Sections 14.1, 14.5, 14.7, 14.8, 14.9 (ignoring 3D)
18 February Reading week: no lectures
25 February Module 07: Images and Image Processing [notes, sketches] Learning Processing, Section 13.11
Nature of Code, Chapter 8
04 March Module 08: Video and Libraries [notes, sketches] Learning Processing, Sections 13.3–13.6
11 March Module 09: Randomness [notes, sketches]
Noise [notes, sketches]
Nature of Code Introduction, especially I.6, "Perlin Noise (A Smoother Approach)"
18 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
25 March Module 11: Tables [notes, sketches]
01 April Module 12: Tree-structured data [notes, sketches]

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