CS 151: Syllabus

Syllabus for Fall 2007

Topics and Reading Assignments


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


In-class Quizzes 25%
Final Exam 20%
Class Participation 5%
Programming Projects 50%

Programming projects will account for half of your grade, with quizzes, 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. There will be no credit given for late assignments, as we will be discussing them in class on Wednesdays.


For some assignments you will 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. Each week you will add a new page to your web site that describes your weekly project and the results. In addition, you will submit your code using a central fileserver.

Weekly Topics and Readings

  • Computing and climate change
  • Computational thinking
Zelle, Chapter 1
Computational Thinking
  • Designing algorithms
  • Turtle graphics
  • Variables, operators, and functions
Zelle, Chapters 2, 3
  • Modularity and abstraction
  • Conditionals and control flow
  • Iteration and sets
Zelle, Chapters 3, 6, 7, 8
  • Parsing strings
  • Terminal I/O
  • File I/O
Zelle, Chapter 4
  • Common math structures; random numbers
  • File handling and data conversion
  • Introduction to L-systems
Zelle, Chapter 3(review), 4, ABOP
  • Zelle graphics package
Zelle, Chapter 5
  • Zell user interface components
  • Lists
  • Why classes and objects?
Zelle, Chapter 11
  • Classes and objects
  • Encapsulation
  • Creating aggregate objects
Zelle, Chapters 5 and 10
  • Inheritance and polymorphism
  • Interpreter design with objects
  • Object-oriented Design
Zelle, Chapter 12
  • Multiple Rule L-systems
  • Dictionaries
  • Basic sorting (outside)
ABOP, Zelle, Chapter 11
  • Using Dictionaries
  • Stochastic Multiple Rule L-systems
Zelle, Chapter 11
  • Function calls and stacks
  • Recursion
  • Dynamic objects
Zelle, Chapter 13
  • Applications of CS