CS 151: Syllabus

Syllabus for Fall 2010

Topics and Reading Assignments


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


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

Programming projects will account for about half of your grade, with quizzes, homeworks, class participation 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, as we will be discussing them in class.


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, be sure to 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.


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