CS 151: Syllabus

Syllabus for Fall 2011

Topics and Reading Assignments


J. Zelle, Python Programming: An Introduction to Computer Science


In-class Quizzes 25%
Final Exam 15%
Class Participation 5%
Programming Projects 45%
Short Homeworks 10%

Programming projects and class participation will account for about half of your grade, with quizzes, homeworks, and the final exam accounting for the remainder. The grading policy for programming projects is that the tasks specified explicitly in the lab description will constitute about 85% of the assignment. If you complete the specified parts of the assignment properly, and produce a good quality writeup, it's worth up to a B+ grade. In addition, the project description will include a variety of extensions, 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.


The weekly programming projects will be due on Tuesday at midnight. Late assignments will receive reduced credit. Homework assignments will be due by midnight Thursday, with no credit for late homeworks.

Every Friday's lecture will begin with a short quiz after a review of the homework. There will be 11 quizes in total, with your top 10 scores counting towards you overall grade. If you have to miss class on Friday, you must take the quiz early in order to receive credit.

Collaboration and Academic Honesty

For some assignments you may be working with a partner. You and your partner will generate a single writeup for the assignment and a single set of code. When working with a partner, you should divide the code writing between the two of you in an equitable fashion, noting the division of labor in the writeup or the code.

Collaboration on project concepts and ideas between individuals and groups is acceptable, but, you need to understand everything you do, and your code should be your own or your group's code. If you use ideas from another group, you must indicate that within your code or writeup. Err on the side of caution. The worst thing that can happen is for the professor to notice disturbing similarities in homeworks with no attribution of credit.

Obtaining or copying code from someone else and using it as part of your solution without attribution is a violation of academic honesty.

Sharing code, or verbally providing python code to someone who is not your partner for the project is a violation of academic honesty.


The first week we will go over how to build a simple web page that incorporates text and images using the Colby Wiki. Each week you will add a new page to your wiki site that describes your weekly project and the results. You will submit your own code using a college file server.

Weekly Topics and Readings

  • Introduction, administrivia
  • Computational thinking
  • Algorithms
Zelle, Chapter 1
Computational Thinking
  • A memory model for Python
  • Variables and assignments
  • Functions and parameters
Zelle, Chapters 2, 3, 6
  • Loops and repetition
  • Calling functions
  • Conditionals and relations
Zelle, Chapters 2, 7, 8
  • Image manipulation
  • Objects
  • Looping, lists, and strings
Zelle, Chapters 2, 4, 5
  • Strings and string manipulation
  • Zelle graphics library
  • Lists
Zelle, Chapters 4, 5, 11
  • Zelle graphics library
  • Lists
  • Top-down design
Zelle, Chapters 5, 9, 11
  • Design
  • Grammars
  • L-systems
Zelle, Chapter 9, ABOP Chapters 1-2
  • Object-oriented Design
  • Classes
Zelle, Chapter 12, ABOP Chapters 1-3
  • Inheritance
  • Polymorphism
  • Encapsulation
Zelle, Chapters 10-12
  • Multiple Rule L-systems
  • Dictionaries
ABOP, Zelle, Chapter 11
  • Stochastic Multiple Rule L-systems
  • Function calls and stacks
Zelle, Chapter 12
  • Recursion
  • 3D Turtle
Zelle, Chapter 13
  • Topics