CS 151: Syllabus

Syllabus for Fall 2012


In this course there will be regular opportunities for you to practice what you have learned and to demonstrate your accomplishments. They include

Labs with Programming AssignmentsWeekly, hands-on, supervised learning. You will begin a programming assignment in each lab. It will be due the following Tuesday night
Short homework assignmentsAssigned, collected, and graded periodically
QuizzesShort weekly in-class quizzes
Participation in lecturesAsk questions, answer questions, join in discussions
Final ExamAn exciting 3-hour opportunity at the end of the semester to demonstrate your ability to answer questions about course material.


The course grade will be determined as follows:

Labs and programming assignments 45%
Short homework assignments 10%
Quizzes 20%
Participation 5%
Final Exam 20%

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

Help and Discussion Outside of Lecture

Office Hours

Stephanie and Bruce will both be holding office hours. 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!

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 Roberts 225 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-10 pm and Monday-Tuesday 7-10 pm.


We will use the Python computer language (v2.7) 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. The computers in Roberts 225 are equipped with all necessary software.


Attendance and Participation

Nothing is more boring than a course with a professor who drones on and on in a lecture about material that the students don't understand. Although this course does involve lecturing, this course will not be boring. I will not drone and I will do my best to make the material as clear as possible. But for this course to be truly successful, your presence and participation are important. When you have a question, ask it. It is highly probable that one of your classmates has the same question. When I give you an opportunity to share your opinion or your answer, please speak up. I want to hear what you have to say. And, of course, to participate in class you must attend class.


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. For each day late, your grade will be reduced by 3 points.


Short quizzes will be given every Friday in class (excepting Sep 10) and the lowest quiz grade will be dropped. I will allow you to make up missed quizzes, but you must email me before class to let me know you will not be there and to request a time when you can make up the quiz. It is imperative that you email me before class begins.


Collaboration on homeworks and programming assignments is encouraged, but you as an individual are responsible for understanding all the material in the assignment. If you have had a substantative 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 "substantative", then ask me or err on the side of caution. You will not be penalized for working together. However, you must not copy answers directly from another student. In particular, no electronic copying of code is allowed. I reserve the right to ask you to verbally explain the reasoning behind any answer or code that you turn in.

Academic Honesty

It is vitally important that you turn in work that is your own. In addition to the ethical implications of dishonesty, you undermine your ability to learn when you cheat. Please read Colby's Academic Integrity and Honesty Statement. As a guideline, we will tell you that no electronic copying of code is allowed.


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

  • Notice: Undefined offset: 1 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 244

    Notice: Undefined offset: 2 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 245
Zelle Ch 9
  • L-Systems
  • Interpreting L-system strings with the turtle
  • Object-Oriented Design
Zelle Ch 12, Algorithmic Beauty of Plants
  • Classes
  • OO Design Principles

  • Notice: Undefined offset: 2 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 245
Zelle Ch 10, 12
  • Inheritance
  • Polymorphism
  • Encapsulation
Zelle Ch 12
  • Python dictionaries

  • Notice: Undefined offset: 1 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 244

    Notice: Undefined offset: 2 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 245
Zelle Ch 11

Thanksgiving Break
  • 3D Turtle

  • Notice: Undefined offset: 1 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 244

    Notice: Undefined offset: 2 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 245
  • Recursion

  • Notice: Undefined offset: 1 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 244

    Notice: Undefined offset: 2 in /web/html/srtaylor/courses/F12/cs151/syllabus.php on line 245
Zelle Ch 13

Miscellaneous Information