Compsci 101, Fall 2012, Totems/Assignment 1

See the howto pages for details on creating projects, files, and so on. The pages here describe in broad strokes what this assignment is about.

*totem poles*
(image from Wikimedia, public domain)
According to Wikipedia Totem Poles are "monumental sculptures" largely from the Pacific Northwest.

At Duke, we can trace programming assignments that involve creating totem poles as far back as 1994 when C++ was first used in the equivalent of Compsci 101. The last time an assignment to generate totem poles was given was in spring 2004, the last time C++ was used in Compsci 101. When Java was used, from fall 2004 to spring 2010, no totem poles were generated in courses by Duke students.

In the fall of 2010 we resurrected the assignment, and tried to make it more modern: using Python, scaling the assignment to create user-generated-content and being accessible via the web. Since the first, more modern version, even former students of Compsci 101 have blogged about the assignment and both how bad and good it was.

We hope to make it better now.

Totem 2.1



||||||||||||     ||||||||||||
 ___    ___	  ___    ___ 
/   \  /   \ 	 /o  \  /  o\
  o  ||  o   	      ||    
\___/  \___/ 	 \___/  \___/
|          |	 |          |
|  \____/  |	 |  \____/  |
|          |	 |          |
\__________/	 \__________/
||||||||||||	 ||||||||||||
 ___    ___	  ___    ___ 
/   \  /   \ 	 /   \  /   \
o    || o    	     o||o   
\___/  \___/ 	 \___/  \___/
|          |	 |          |
|  \____/  |	 |  \____/  |
|          |	 |          |
\__________/	 \__________/
||||||||||||	 ||||||||||||
 ___    ___	  ___    ___ 
/   \  /   \ 	 /   \  /   \
   o ||    o 	 o    || o
\___/  \___/ 	 \___/  \___/
|          |	 |          |
|  \____/  |	 |  \____/  |
|          |	 |          |
\__________/	 \__________/

As part of the Totem 2.1 aspects of this assignment you'll be uploading your totem pole programs and sharing the results with mashups from other totem programs created by students. You'll also be mixing/matching/smashing/mashing parts of your totems with parts from other totems. To ensure these match ups will work, you must conform to totem standards as describe in the totem howto pages. Be sure to read those pages carefully to understand the constraints in the functions and module you write. It's important to satisfy the standards, but it's important to have fun making totem poles as well.

This assignment is designed so that you'll be able to demonstrate your understanding of writing and calling functions, returning values from functions, and adhering to design standards.

It's also designed so that you can demonstrate some creativity, one of the important aspects of creating computational artifacts. While you're being creative, you'll need to design your program so that it can interact with other creators, part of understanding how programs interoperate when they're scaled up beyond being used by one person.

What to Turn In

You must turn in a Python module Totem.py which has methods that conform to the totem standards defined in the howto pages. Include a function named totem that will, if called/run from an Eclipse/Pydev console, print three "heads", where a "head" is a distinct part of the totem pole your program creates. Each of the three heads your Python function totem generates should be different. You should also write a function randompole as described in the howto pages.

Include the __name__ == "__main__" boilerplate in Totem.py so that when the program is run, it calls randompole, not totem. However, you should test your function totem yourself before submitting the program using the main Python idiom described in the howto pages.

Your grade will be based on how well your program conforms to the totem standards and whether it prints a three-head totem pole from a function named totem. It's possible to earn extra credit for artistic creativity.

Submit your Python module using Ambient from Eclipse and the assignment named totem.


What to Submit

Please submit the followig: