Drawing project

In this project you will make a drawing using Python's turtle library. It's up to you to make a drawing you actually care about making. The drawing could be static, or you could create an animation using the Superturtle library. Chris will help you choose a project that's a good level of challenge.

Examples

Requirements

Process

Planning

This is a big project, and you will get lost or frustrated if you don't do some planning up front. You are required to write a project design document and get it approved by a teacher. Planning can take multiple forms:

Describe your planning in README.md. If you want to add images, just move them into this project directory.

Milestone

It's easy to underestimate the complexity of a project and end up not getting as far as you wanted to--or worse, end up with half a project which doesn't work at all. To avoid this, it's important to set a milestone. Describe your milestone in README.md:

What would it mean to be halfway finished with your project? Describe something that would be easy to observe, such as a certain function being complete and drawing part of the project.

Debugging

You are going to get stuck on this project, and you're probably going to feel incredibly frustrated at some point. We will discuss strategies for debugging, but for now, please remember to take a break when you feel frustrated and to ask for help.

Assessment criteria

Approaches expectationsMeets expectationsExceeds expectations
Concepts: FunctionsBUT the sub-functions don't help break down the complexity of the project. They may be irrelevant to the project's drawing, or they may simply cut-and-paste lines of code from the main program.Your project breaks down the complexity of the drawing by defining and using new functions.AND each function is responsible for its own work. At least some functions are generalized, accepting parameters and not making prior assumptions about the state of the turtle.
Concepts: IterationBUT your project doesn't benefit much from the use of iteration. Constructs may be used incorrectly or in ways which don't have much effect on the project. Your project may contain repetitive code which could have been simplified using iteration.Your project reduces the complexity of the drawing using iteration. The project contains at least one iteration over a list or a range.AND Your project achieves a complex effect which would have been difficult to do without using iteration.
Practices: Learning through reflectionBUT You do not have enough commit messages, or they may be terse or generic.Your commit messages (mwc submit) show an ongoing process of reflection as you work. You have at least three commit messages over the course of your project.AND your commit messages provide meaninful updates on your project. The trajectory of your project is apparent from reading your commit messages.
Practices: PlanningBUT you might be missing required components of the README, not have enough commits, or not have enough detail in your commit messages.Between your README and your commit messages, a reader can understand the process by which you designed, developed, and debugged your drawing project.AND your process documentation contains evidence of reflection, showing what you have learned or how your thinking has changed over the course of this project.