CS 106
Introduction to Computer Science 2 (GBDA Section)

This is the home page for CS 106, the second-level introductory programming course for students in the Global Business and Digital Arts program. In Winter 2016, it is being offered as Section 011 of CS 116 (AKA, CS 116X). Although this section is listed alongside the other CS 116 sections in the schedule of classes, it is completely different. Students cannot move back and forth between this GBDA section and the others. Information for all non-GBDA CS 116 students can be found on the main CS 116 web page.

A lot of the information on this page can also be found in a separate course outline.


CS 116 LEC 011: Mondays and Wednesdays, 2:30–3:50, MC 4061
CS 116 TUT 115: Mondays and Wednesdays, 4:00–5:20, MC 3003
CS 116 TUT 116: Mondays and Wednesdays, 4:00–5:20, MC 3027
Monday, February 29th, 7:00–8:50, rooms TBA
Final Exam


For questions related to course content, contact Craig or Chrissy. 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.

Instructor: Craig S. Kaplan (see also)
email: csk
Office hours: Thursdays, 1:00pm–2:00pm, DC 2110, or by appointment
Instructional Support Assistant: Chrissy Schreiner
email: lcschrei
Office hours: Fridays, 1:00pm–2:30pm, MC 4065
Instructional Assistant: Marta Kryven
email: mkryven
Office hours: Fridays, 2:30pm–4:00pm, DC 2303
Coordinator: Victoria Sakhnini
email: vsakhnin


Week of Lectures Suggested readings Other announcements
04 January Administration
Module 01: Processing recap [notes]
Your CS 105 lecture notes
11 January Module 02: Input and Output [notes, sketches] Learning Processing, Sections 15.1, 17.1, 17.2, 17.3, 18.3, 18.4, 21.3, 21.4
18 January Module 03: User interfaces [notes, sketches]
25 January Modue 04: Physics and animation [notes, sketches] The Nature of Code, Chapters 1 and 2 (Chapter 5 is relevant too, but we'll use a different library)
01 February Module 04 (continued)
08 February Module 05: Geometric context [notes, sketches] Learning Processing, Sections 14.1, 14.5, 14.7, 14.8, 14.9 (but you don't need to worry about 3D for now)
15 February No lectures (reading week)
22 February Module 06: 3D [notes, sketches]
Module 07: Recursion and fractals [notes, sketches]
The 3D parts of the Chapter 14 sections listed above
Learning Processing, Sections 13.11
Nature of Code, Chapter 8
29 February Module 07 (continued)
Module 08: Randomness and noise [notes, sketches]

Learning Processing, Sections 13.3–13.6
07 March Module 08 (continued)
Module 09: The shape of data [notes]
14 March Module 09 (continued)
Module 10: Text processing [notes, sketches]
The first part of Shiffman's online notes about data
Learning Processing, Sections 17.1, 17.2 and Chapter 18
21 March Module 11: Structured data [notes, sketches]
28 March Module 11 (continued)
Module 12: Wrap up [notes]


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

You are required to pass the examination portion of the course 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.


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.




Practice problems

  • I have assembled a large number of simple programming exercises that you can treat as "drills" to practice different aspects of coding in isolation. You can use these exercises for study purposes, in which case I recommend that you practice writing the solutions out by hand before trying them live in Processing. Check this file periodically for updates as I add new problems.

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.


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


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.


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.


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

The Office for persons with Disabilities (OPD), 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 OPD at the beginning of each academic term.