CS 151: MyDraw


The final project of the semester is to put together a simple interactive drawing program that enables a user to draw scenes using different artistic styles and graphical objects.

You may work in pairs for this project. If you choose to do so, only create one writeup. In the writeup you will need to indicate the contribution of each person to the work. If you work in a pair, the expectations will be somewhat higher than if you work alone.


To build an interactive program you need two things. First, you have to set up the user interface, creating all of the components and placing them appropriately. Second, you need a main loop that waits for user interaction and reacts appropriately.

How complex you make your program is up to you. The required capabilities are the following:

The following are some suggestions for handling various aspects of the project.


The following are suggested extensions.

  1. Implement more than two artistic styles.
  2. Implement more graphical objects like images or the Peace sign.
  3. Provide more drawing attributes, like line width and fill color.
  4. Implement the ability to select objects.
  5. Implement your interface and graphical objects so they can be rotated/oriented.


Create a web page for your writeup. Your writeup should include the following.

Handing in

When your writeup is ready for viewing and linked to your index page, send me an email.

To hand in your python code, place it on the Academics fileserver in the private folder. Do not post it on the web. You may include snippets from your code in your writeup to demonstrate how certain aspects of the function work, but please do not include the whole thing.

To place the code on the fileserver, go to the server fileserver1 and select the Academics volume. Within that there ought to be a CS151 folder, and within that there should be a folder with your username, and within that ought to be a folder labeled private. You can read and write files to the private directory and I can read them, but no one else can access them. Put your python files in that directory to hand them in. Please organize your files into folders by project.