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.
|||||||||||| |||||||||||| ___ ___ ___ ___ / \ / \ /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. |
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.
Totem.py
module
totem
function by copy/pasting these into another text-file
you create whose name is myruns.txt
(don't worry
about the .txt suffix).