Challenge Two
2026-10-01T14:15
Goals
In this challenge, you should be able to demonstrate the following:
- You understand how to use randomness in a controlled way using variance and bounding
- You can make reasonable color choices
Getting Started
- Accept the assignment from Classroom 50
- Clone the repository GitHub classroom creates to your local computer (in your shell, type
git cloneand the address of the repository)
I have noticed that Classroom 50 adds a lot of noise to the name of your repositories which make it difficult to figure out which sketch is which from a file browser.
You can rename the directory without breaking anything, and I suggest that you do so.
git even provides you a way to do this at the moment when you clone the repository:
git clone <repo address> <new name>Objective
This challenge is all about randomness, intentionality, and circles.
You have seen two different ways to draw circles with p5js.
- Use a built in function (e.g.,
circleorellipse) - Calculate the points and draw the shape “by hand”
I want you to create a function that draws imperfect circles. These are circles that apply randomness during the process of drawing the circle.

This is an extreme example – yours does not to be so bursty. Your function should provide control over the placement and the radius. You might find it useful to add parameters to control the extent of the randomness.
Once you have your imperfect circle drawing method, I want you to use it in a sketch. The sketch can look like what ever you like, though I will expect a little more creativity than reproducing the color flurry we looked at in class (i.e., don’t just randomly generate some positions and sizes). Placement and size can be randomized, but I expect to see some intentionality in your design. You are not restricted to the use of your imperfect circle. You may use any shapes you like, but the imperfect circle should be a dominant element.
I also expect to see some considered use of color. Again, randomness should be involved, but in a controlled and intentional way. This challenge is all about marrying randomness and intentionality.
I do not expect you to come up with something that creates a piece from a coherent collection on every iteration. I want you to practice curating. Once the sketch is working the way you like it, run it a batch of times and select between three and five images that you think show your algorithm at its best.
Requirements
- There must be a function that draws an imperfect circle using randomness. The function must have parameters for the placement and the radius of the circle
- The sketch must contain at least five calls to the function
- There must be evidence of intentionality in your choices about form
- The sketch should utilize color in intentional way
- Color selection should be at least partially controlled by randomness
- Your submission must include 3-5 curated outputs of your sketch
Thoughts
When we made the color wheel, we used a TRIANGLE_FAN, so we didn’t need to worry about closing our shape. If you are making an arbitrary polygon, then you may want to include CLOSE to endShape() (i.e., endShape(CLOSE)). This will connect back to the first point. This is only required if you don’t repeat the first point as the last point.
I have added a new function to your sketch: keyTyped(). This is called by p5js when a key is typed. The current key can be accessed with the key variable. If the user types “s”, an image of the current canvas will be saved. I added a second control key to allow you to toggle the run loop. If your piece is dynamic, you may want to pause it to take a screenshot. You are welcome to add to these commands to do things like reinitialize the drawing and start over.
I encourage you to use your sketchbook to explore. Start with the basic circle, but then experiment. Remember that with creative coding we aren’t just proceeding from blank editor to finished sketch, we are exploring and experimenting. If you have anything that looks reasonable, make a copy before poking it further. Don’t stop with your first thought either. Once you have something, start again and try something radically different. Maybe it will be better, or maybe it will suggest things you can add to your first sketch, or maybe it will just give you more confidence in your first sketch.
Reflection
I would like you to write a brief reflection in the reflection.md file. It should answer the following questions:
- Do you think it is complete?
- If not, what is left to go and how are you going to address it?
- What design decisions did you make and why?
- What was the hardest part?
- What, if anything, have you gained by completing this challenge?
- What questions (if any) do you have about this assignment?
Revisions
If you revise your submission, please add a dated addition to your reflection that describes what has been changed.
Submitting
When you are ready to submit,
- Add and commit your changes and push those commit(s) to GitHub.
- Submit your repository to Gradescope (you can submit as often as you like up to the deadline)