CS 106 Winter 2017
CS 106 (Introduction to Computer Science 2) is a second-level introductory Computer Science course. This information on this web page is tentative and will be frozen at the beginning of the term; see the course website for current information.
- Course website: www.student.cs.uwaterloo.ca/~cs106/
- Course page on LEARN: learn.uwaterloo.ca/d2l/home/301089
- Discussion page on Piazza: piazza.com/class/iwz22s9btms14r
This course, together with its predecessor CS 105, offers a comprehensive introduction to practical computer programming for students with no background in the subject, and who will not normally go on to further study in computer science. The course is required by students in the GBDA program, and available to students from other programs on campus.
While the main theme of CS 105 is to develop basic skills in imperative programming (variable declarations, control flow, defining functions, basic object-oriented programming), in CS 106 we explore more general applications of programming in contexts of interest to visual artists and designers.
The goal of CS 106 is to apply programming idioms in a practical context, using functionality available in built-in functions, libraries that come shipped with Processing, and libraries that can be added on to it. Topics include input/output, user interface programming, procedural content generation, object-oriented programming, and text and structured data processing.
- The required textbook for the course is Daniel Shiffman's Learning Processing, second edition. I will also make occasional references to Shiffman's other book, The Nature of Code, which is available for free online.
- We also recommend two books by Reas and Fry: Getting Started with Processing (second edition) and Processing: A Programming Handbook for Visual Designers and Artists (second edition).
- Additional references are available on the course web page.
- CS 106 LEC 001: Mondays and Wednesdays, 10:00–11:20, MC 1085
- CS 106 LEC 002: Mondays and Wednesdays, 2:30–3:50, QNC 1507
- CS 106 LAB 101: Mondays and Wednesdays, 1:00–2:20, MC 3003
- CS 106 LAB 102: Mondays and Wednesdays, 4:00–5:20, MC 3003
- CS 106 LAB 103: Mondays and Wednesdays, 1:00–2:20, MC 3005
- CS 106 LAB 105: Mondays and Wednesdays, 1:00–2:20, MC 3027
- Students from LAB 104,106 should attend LAB 102 in MC3003
- Wednesday March 1st, 7:00–8:50, rooms TBA
- Final Exam
All email addresses are @uwaterloo.ca.
- Instructor: Craig S. Kaplan
Office hours: Tuesdays 2:30 PM - 3:30 PM or by appointment.
- Instructor: Kevin Harrigan
Office hours: TBA
- Instructional Support Assistant: Kristina Bayda
Office hours: Thursdays 2:00 PM - 3:00 PM, Fridays 1:00 PM - 2:00 PM
- Instructional Support Assistant: Rishabh Moudgil
Office hours: Wednesdays 12:00 PM - 1:00 PM, Fridays 2:00 PM - 3:00 PM
- Instructional Assistant: Anthony
- Instructional Assistant: Jane Henderson
- Instructional Support Coordinator: Travis Bartlett
List of planned topics
- Processing recap
- A review of programming concepts from CS 105, in terms of the basic structure of the Processing language: types, declarations, expressions, statements, and functions.
- High-level operations on arrays, including appending, concatenation, and removal. Built-in array manipulation functions.
- The String class. Working with characters and strings. String comparisons. Printing and displaying text.
- Input and output
- Loading files in various formats (text, images, illustrations) into Processing, writing files.
- Advanced Shapes
- Drawing fancy shapes with beginShape() and endShape(), using the PShape class.
- User interfaces
- The model-view-controller architecture. Direct manipulation interfaces. User interface toolkits. The ControlP5 library in Processing.
- Geometric context
- The use of translate(), rotate(), and scale() to modify a program’s coordinate system. Building a hierarchy of transformations using pushMatrix() and popMatrix(). Order of operations.
- Recursion and Fractals
- Iterated function systems as a demonstration of recursion.
- Randomness and Noise
- The random() function in detail. Pseudorandomness. Applications of randomness. Introduction to noise().
- Text processing
- Decomposing text into tokens. Regular expressions. Unicode. Working with dates and times.
- Structured data processing
- Dealing with table-structured (CSV) and tree-structured (JSON) data. Processing live data acquired from web APIs.
- There will be 8–10 assignments (roughly weekly, due Sunday nights via LEARN), consisting primarily of programming questions. All assignments must be completed individually by students. Absolutely no late assignment submissions are permitted, but the final assignment mark will be computed by dropping the lowest assignment mark.
- There will be approximately 10 labs (roughly weekly, due Wednesday afternoons via LEARN), consisting of smaller exercises and coding walk-throughs. All labs must be completed individually by students, though students are invited to discuss lab questions and share ideas.
- A 110-minute midterm is scheduled for Wednesday, March 1st at 7:00pm. A 150-minute final exam will be scheduled during the exam period at the end of the term.
- Marking scheme
Participiation: 5% (via responses to clicker questions)
Final exam: 40%
Students must pass the exam portion of the course separately in order to pass the entire course.
Late assignments will not be accepted; consequently, you should aim to finish early, to allow for unexpected delays. After an assignment due date has passed, you may still submit your work for feedback only (no marks) to the late folder and you must inform the CS 106 ISAs by email so they are aware of your submission and request for feedback.
Missed assignments due to illness
With appropriate, authorized documentation, assignment work may be excused. If a missed assignment is excused, its weight is distributed over the remaining unexcused assignments. In the interest of understanding the course material for future assignments and exams, students who miss work are encouraged to do it, submit it request feedback from the ISAs. Please see the Verification of Illness Form.
If you have problems with the marking of an assignment, please contact the ISAs within two weeks of the date the assignment's mark was made available on LEARN. The email must include your name, student number, Quest user ID, and assignment number. We also require that you list the questions you feel were marked incorrectly, and, for each of those questions, why you feel your mark should be changed. Please be aware that the assignment will be remarked in its entirety.
If you have problems with the marking of a midterm exam, please fill out a re-mark request form. Bring a paper copy of the filled-out form to the Course Coordinator or the ISA within two weeks of the day when your marked exam became available.
Group work is disallowed unless otherwise specified.
Academic integrity and grivances
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 the Office of Academic Integrity’s website, www.uwaterloo.ca/academicintegrity/, for more information. All members of the UW community are expected to hold to the highest standard of academic integrity in their studies, teaching, and research. This site explains why academic integrity is important and how students can avoid academic misconduct. It also identifies resources available on campus for students and faculty to help achieve academic integrity in – and out – of the classroom.
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, http://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, to avoid committing academic offenses, and to take responsibility for his/her actions. A student who is unsure whether an action constitutes an offense, or who needs help in learning how to avoid offenses (e.g., plagiarism, cheating) or about rules for group work/collaboration should seek guidance from the course professor, academic advisor, or the Undergraduate Associate Dean. For information on categories of offenses and types of penalties, students should refer to Policy 71, Student Discipline, http://www.adm.uwaterloo.ca/infosec/Policies/policy71.htm. For typical penalties check Guidelines for the Assessment of Penalties, http://www.adm.uwaterloo.ca/infosec/guidelines/penaltyguidelines.htm.
Avoiding Academic Offenses: Most students are unaware of the line between acceptable and unacceptable academic behavior, especially when discussing assignments with classmates and using the work of other students. For information on commonly misunderstood academic offenses and how to avoid them, students should refer to the Faculty of Mathematics Cheating and Student Academic Discipline Policy, http://www.math.uwaterloo.ca/navigation/Current/cheating_policy.shtml.
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, http://www.adm.uwaterloo.ca/infosec/Policies/policy72.htm.
Note for students with disabilities: AccessAbility Services (AA), 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 AA at the beginning of each academic term. See http://www.studentservices.uwaterloo.ca/disabilities for more information.