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:
- You might want to start by collecting some inspiration images
- Create one or more sketches of the drawing you want to make
- Plan out the code. Are there parts of your drawing which could be dealt with on their own as sub-problems? Are there features which will need to be repeated? You could write functions to deal with these.
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 expectations | Meets expectations | Exceeds expectations | |
---|---|---|---|
Concepts: Functions | BUT 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: Iteration | BUT 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 reflection | BUT 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: Planning | BUT 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. |