CS 151: Syllabus

Title image Fall 2017

Computational Thinking: Visual Media Applications
Syllabus for Fall 2017

Course Description

This course is an introduction to computational thinking: how we can describe and solve problems using a computer. The Visual Media section will focus on generating complex and interesting scenes and images through writing well-constructed programs. These applications will motivate how and why we would would want to write procedures, control the flow of information and processes, and organize information for easy access and manipulation. Through lectures, short homeworks, and weekly programming projects, you will learn about abstraction, how to divide and organize a process into appropriate components, how to describe processes in a computer language, and how to analyze and understand the behavior of their programs. While the projects are focused on visual media, the computational thinking skills you learn in this course are applicable to any type of programming or program design you may undertake in the future.

Learning Goals

  1. Students can read a simple program and correctly identify its behavior
  2. Students can convert a problem statement into a working program that solves the problem.
  3. Students understand abstraction and can break down a program into appropriate procedural and object-oriented components
  4. Students can generate an approximate model of computer memory and describe how an algorithm affects its contents.
  5. Students can communicate the result of their work and describe an algorithm


There are no required textbooks for this course. The main course page has links to free, on-line resources for learning Python and basic CS concepts. You may also want to consider purchasing one of the recommended textbooks as a reference. They are available as paperbacks at a reasonable cost.


In this course there will be regular opportunities for you to practice what you have learned and to demonstrate your accomplishments. Below, is a short description of each opportunity, along with the percentage of your final course grade it represents.

Labs with Programming Projects45%Weekly, hands-on, supervised learning. You will begin a programming assignment in each lab. It will be due the following Tuesday night
Quizzes25%Short weekly in-class quizzes (given on Fridays)
Short homework assignments5% Assigned each Wednesday, it will help you prepare for the quiz each Friday.
Participation5%Ask questions, answer questions, join in discussions, attend lectures and labs.
Final Exam20%A 3-hour opportunity at the end of the semester to demonstrate your ability to answer questions about course material.

How to succeed

Labs and Projects

Come to lab ready to focus on the new project. Ask the lab instructor and TA for help if you need it. Talk to your peers about the course concepts.

The grading policy on projects is that the tasks specified explicitly in the lab and project descriptions will constitute about 85% of the assignment. If you complete the specified parts of the assignment properly, and produce a high-quality writeup, it's worth up to a B+ grade. In addition, the written instructions will include a variety of extensions to the assignment, or you can come up with your own. Completing one or more extensions, in addition to the specified parts of the assignment, will earn you some flavor of A. Extensions are not required.

Once during the semester, except for projects 4 or 11, you may take a 3-day extension, handing it in on Friday instead of Tuesday. All you have to do is send an email to one of the professors letting them know you are taking your extension prior to the Tuesday night deadline. Projects 4 (prior to October break) and 11 (the last project of the semester) will be due on the Friday after the normal Tuesday deadline.

Projects handed in after the specified deadline will be graded with a maximum point value of 26/30.


Study for the quizzes by doing the homeworks. We will drop the lowest quiz grade. If you make a silly mistake one week, it won't affect your grade.

Short homeworks

Try them. You will receive full credit as long as you make an honest attempt to complete every question. Each homework will be a set of questions emailed by the professor on Wednesday. You respond to that email with your answers, along with any questions you may have. As long as you send your respons by classtime on Friday, you will get credit. There is no partial credit for late homeworks, because we will go over the answers in class on Friday before you take the quiz.


Speak up in class. Come to office hours. Ask your your instructor or TA for help.

Final Exam

The final exam will be similar to a large set of quizzes (but written from a more wholistic perspective). The best way to study for the final exam is to retake all of the old quizzes (and quizzes from old semesters). Also, read through your notes and make sure you understand everything in them.

For more information about expectations and the assignment of grades, see this document.

Help and Discussion Outside of Lecture

Office Hours and Email

Caitrin and Bruce will both be available to help. If you want to discuss a computer science concept or ask for help regarding an assignment, please do not hesitate to come to our offices. Not only do we enjoy talking about computer science, we want to get to know you!

In addition to coming by our offices for help, you are welcome to send us email with a question. We read our email very frequently and respond to such questions as soon as we read them.

Evening TA Help

In order to provide as much help as possible to you as you work on assignments in this course, the CS Dept has hired upper-level CS students to work as TAs in the Davis 102 lab in the evenings. You are strongly encouraged to take advantage of this resource. The TAs are getting paid to help you, so don't feel guilty about asking them for help. The evening TA hours are: Sunday 4-10pm and Monday 4-6pm and 7-10pm, and Tuesday 4-6pm and 7-10pm.



We will use the Python computer language (v3.6) as the basis for the course, with weekly lab sessions to provide hands-on, supervised learning. You will be using a text editor (e.g. TextWrangler) to write your code. Some projects may also use other free software that you can install on your computer. The computers in Davis 101 and 102 are equipped with all necessary software and you can access the building and the labs 24/7 during the semester.


Attendance and Participation

The course will involve both lectures and hands-on activities in lab. For this course to be truly successful, your presence and participation in lecture and lab is important. When you have a question, ask it. It is highly probable that one of your classmates has the same question. When we give you an opportunity to share your opinion or your answer, please speak up. We want to hear what you have to say. And, of course, to participate in the class you must attend.


The short homework assignments must be turned in on time. No late short assignments will be accepted because we will refer to their solutions in class. The longer programming assignments must be turned in on time for maximal credit. Late labs (programming assignments) will be accepted, but will be given reduced grades. Programming assignments are graded on a 30 point scale. Late assignments will be graded with a maximum score of 26.


We will give a short quiz every Friday in class except the first one. We will drop lowest quiz grade. You may make up a missed quiz only if you email one of the professors before class to let us know you will not be there and to request a time when you can make up the quiz. It is imperative that you let us know before before class begins.

Collaboration and Academic Integrity

Computer science, both academically and professionally, is a collaborative discipline. In any collaboration, however, all parties are expected to make their own contributions and to generously credit the contributions of others. In our class, therefore, collaboration on homework and programming assignments is encouraged, but you as an individual are responsible for understanding all the material in the assignment and doing your own work. Always strive to do your best, give generous credit to others, start early, and seek help early from both your professors and classmates.

The following rules are intended to help you get the most out of your education and to clarify the line between honest and dishonest work. We reserve the right to ask you to verbally explain the reasoning behind any answer or code that you turn in and to modify your project grade based on your answers. It is vitally important that you turn in work that is your own. We do use automated plagiarism detection software, so please be sure to abide by these, rather minimal, rules. Reports of academic dishonesty are handled by an academic review board and a finding of academic dishonesty may result in significant sanctions. For more details on Colby’s Academic Integrity policies and procedures, see www.colby.edu/academicintegrity/.

If you have had a substantive discussion of any homework or programming solution with a classmate, then be sure to cite them in your write-up. If you are unsure of what constitutes "substantive", then ask us or err on the side of caution. As one rule of thumb, if you see more than 10 lines of someone else's code, then you should cite them. You will not be penalized for working together. You must not copy answers or code from another student either by hand or electronically. Another way to think about it is that you should be talking English with one another, not Python.

The Colby Affirmation

Colby College is a community dedicated to learning and committed to the growth and well-being of all its members.

As a community devoted to intellectual growth, we value academic integrity. We agree to take ownership of our academic work, to submit only work that is our own, to fully acknowledge the research and ideas of others in our work, and to abide by the instructions and regulations governing academic work established by the faculty.

As a community built on respect for ourselves, each other, and our physical environment, we recognize the diversity of people who have gathered here and that genuine inclusivity requires active, honest, and compassionate engagement with one another. We agree to respect each other, to honor community expectations, and to comply with College policies.

As a member of this community, I pledge to hold myself and others accountable to these values.

Sexual Misconduct/Title IX Statement

Colby College prohibits and will not tolerate sexual misconduct or gender-based discrimination of any kind. Colby is legally obligated to investigate sexual misconduct (including, but not limited to sexual assault and sexual harassment).

If you wish to speak confidentially about an incident of sexual misconduct, please contact Colby Counseling Services (207-859-4490) or the Director of the Gender and Sexual Diversity Program, Emily Schusterbauer (207-859-4093).

Students should be aware that faculty members are considered responsible employees; as such, if you disclose an incident of sexual misconduct to a faculty member, they have an obligation to report it to Colby's Title IX Coordinator. "Disclosure" may include communication in-person, via email/phone/text, or through class assignments.

To learn more about sexual misconduct or report an incident, visit http://www.colby.edu/sexualviolence/.


It should go without saying that you should back up any files related to this course. If the code you submit to us is somehow lost (through your fault or our fault), we must be able to get another copy from you. We suggest you use the college's personal server to store your work in this class, as it is regularly backed up.

Miscellaneous Information


WeekTopicsSuggested Reading
  • Introduction, course concept
  • What is computational thinking?
  • Algorithms
Zelle Ch 1
  • Intro to Python and its memory model
  • Variables and Assignment
  • Functions and Parameters
Zelle Ch 2, 3, 6
  • Using loops to repeat commands
  • Stepping through function calls
  • Booleans, relationals, and conditionals
Zelle Ch 2, 7, 8
  • Image manipulation using Zelle's library
  • Objects
  • More about loops
Zelle Ch 2, 4, 5
  • More about strings
  • Adding graphics to images using Zelle's library
  • Lists
Zelle Ch 4, 5, 11
  • Lists
  • More about Zelle's graphics library
  • Top-Down Design
Zelle Ch 5, 9, 11
  • More about Design
Zelle Ch 9

Spring Break
  • L-Systems
  • Interpreting L-system strings with the turtle
  • Object-Oriented Design
Zelle Ch 12, Algorithmic Beauty of Plants
  • Classes
  • OO Design Principles
Zelle Ch 10, 12
  • Inheritance
  • Polymorphism
  • Encapsulation
Zelle Ch 12
  • Python dictionaries
Zelle Ch 11
  • 3D Turtle
  • Recursion
Zelle Ch 13