Drawing

Unit 00 Drawing Project

In this project you will make an animated drawing (or a GIF!) using Python’s turtle library and Superturtle. It’s up to you to make a drawing you actually care about making. Chris will help you choose a project that’s a good level of challenge.

Requirements

  • Submit your work by pushing the contents of your project_drawing repository. This repo should contain:
    • drawing.py, which should generate the drawing when run.
    • Optionally, additional Python files containing functions used in your drawing. (If you had a file called shapes.py, then drawing.py would import shapes using something like from shapes import triangle.)
    • The final image or animation produced by your drawing, saved as drawing.png if it’s static or drawing.gif if it’s animated.
    • README.md should contain a subheading called Project (## Project) which describes the final product and a subheading called Process which describes your process of planning, developing, and debugging the project.
  • Commit your work after each major change. Your repo should have at least five commits.

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.
✅ CHECKPOINT:
Get your design document approved by a teacher before you start programming.

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.

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

👾 💬 Independent study
You won’t receive assessments during the independent study. If you want, you can use this rubric to reflect on what you learned in the first unit.
Approaches expectations Meets expectations Exceeds expectations
Concepts: Control flow BUT your project doesn’t benefit much from the use of control flow. 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 control flow. Your project reduces the complexity of the drawing using control flow. The project contains at least one loop to repeat commands and at least one context manager to affect the execution of a code block. AND Your project achieves a complex effect which would have been difficult to do using control flow,
Concepts: Decomposition 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.
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.