CS 116x: Introduction to Computer Science 2 (GBDA Section)

This is the home page for CS 116x, the second-level introductory programming course for students in the Global Business and Digital Arts program. In Winter 2015, it is being offered as Section 002 of CS 116. Although this section is listed alongside the other CS 116 sections, 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.

Time and place

Lectures: Monday and Wednesday, 2:30pm–3:50pm, MC 4059
Lab: Friday, 2:30pm–3:50pm, MC 3003 and MC 3027

Course staff

For questions related to course content, contact Craig or Alyssa. 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
Email: csk
Office hours: Mondays 4–5 in DC 2110 or by appointment
Instructional Assistant: Alyssa Jamal
Email: amjamal
Office hours: Mondays 1-2:30 in MC 4065, or by appointment
Instructional Assistant: Chrissy Schreiner
Email: lcschrei
Instructional Assistant: Aaron Voelker
Email: arvoelke
Office hours: Mondays 1-2:30 in MC 4065
Coordinator: Ahmed HajYasien
Email: ahajyasi
Office: MC 4012


Below is an approximate timetable for the course. When lecture notes and/or sketches are available for a module, links are provided along with the title of the module. In the suggested readings, "GS" refers to the Reas and Fry Getting Started book, and "LP" refers to Shiffman's Learning Processing book.

Week of Lectures Suggested Readings Other announcements
5 January Module 0: Administration and overview
Module 1: Processing review
Lab 0: Processing Recap
12 January Module 2: Input and output [notes, sketches]
Lab 1: Writing and Reading Files
GS: pp. 78–83, 164–167
LP: Sections 18.3, 18.4, 21.3, 21.4
13 January: Assignment 0 due
19 January Module 3: User interfaces [notes, sketches]
Lab 2: GUIs
20 January: Assignment 1 due
26 January Module 4: Physics and animation [notes, sketches]
Lab 03: Physics and Animation
28 January: Assignment 2 due
2 February Module 4 (continued)
Module 5: Geometric context [notes, sketches]
4 February: Assignment 3 due
9 February Module 5 (continued)
Module 6: Procedural content [notes, sketches]
11 February: Assignment 4 due
16 February Reading Week. No lectures/labs.
23 February Module 6 (continued)
25 February: Assignment 5 due
2 March Module 6 (continued)
Module 7: Advanced types and Object-Oriented Programming [notes, sketches]
9 March Module 7 (continued)
11 March: Assignment 6 due
16 March Module 8: Image Processing [notes, sketches] 18 March: Assignment 7 due
23 March Module 9: Text processing [notes, sketches]
Module 10: Structured data [notes, sketches]
25 March: Assignment 8 due
30 March Module 10 (continued)
Module 11: Wrap up [slides, sketches]
6 April No lectures or labs
6 April: Assignment 9 due


Assignment handouts will be posted here, together with any additional files required to complete them.
Assignment 0: Warmup
Solution posted on LEARN
Assignment 1: Input/Output
drawings.zip (for Question 1)
image.jpg (for Question 2)
Solution posted on LEARN
Assignment 2: User Interfaces
A02_1.zip (for Question 1)
A02_2.zip (for Question 2)
Demo video
Solution posted on LEARN
Assignment 3: Physical Simulation
Solution posted on LEARN
Assignment 4: The Fisica Physics Library
Assignment 5: Geometric Context
Assignment 6: Recursion
Assignment 7: Object-Oriented Programming
Demo video
Assignment 8: Image Processing
Assignment 9: Data Processing


Lab handouts will be posted here, together with any additional files required to complete them. You are permitted to work on the labs outside of the weekly lab time, but we encourage you to attend, particularly when you need help.
Lab 0: Processing Recap
Lab 1: Writing and Reading Files
Lab 2: GUIs
Lab 3: Physics and Animation
L03csk.zip (Craig's starter code)
Lab 4: Physics and Animation (Fisica)
Lab 5: Geometric Context
Robot Demo Video
Lab 6: Procedural Content Generation
Starter Code
Midterm Review Questions
Lab 7: Advanced Types and OO
ProvidedFiles.zip UPDATED: Thursday, March 12th at 2pm.
Demo Video
Lab 8: Image Processing
Lab 9: Text Processing
Provided Files
Final Exam Review
Review Questions
Review Solutions

Resources and links

  • This course is taught using the Processing programming environment. When working on assignments, the reference section will be especially useful.
  • The main book to use as a source of information on programming in Processing is Getting Started with Processing by Reas and Fry. It's a simple and useful introduction.
  • Two other books might serve as a great source of additional information and inspiration. Reas and Fry have a much more comprehensive book Processing: A Programming Handbook for Visual Designers and Artists. We also recommend Shiffman's book Learning Processing: A Beginner's Guide to Programming Images, Animation, and Interaction. It looks like there are new editions of both of these books coming in Spring 2015, to coincide with Version 3 of Processing.
  • Andrew Glassner runs an online course on learning Processing at his website The Imaginary Institute. He also has another good book on Processing, Processing for Visual Artists: How to Create Expressive Images and Interactive Art. The course isn't free, but he has published an excellent series of introductory tutorials on bits of mathematics that artist-programmers should know. Some of these might be useful refreshers on techniques we'll use in CS 116x.
  • 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. Please log in there for information of that nature.
  • 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.


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.

Valid XHTML 1.0 Strict Valid CSS!

Last modified on Friday, 17 April 2015, at 09:28 hours.