-
Notifications
You must be signed in to change notification settings - Fork 6
Homework Allison
A big part of learning at ITP is learning from each other. So share your work and in exchange you'll get to see everyone else's!
- Do the assignment.
- Contribute a question.
- Post documentation in the form of a blog post. Ideally something visual, some written thoughts, and code. If you are struggling with your sketch and can't get things to work, you should feel free to put your energy into writing about what didn't work (and vent any frustrations!).
aparrish@nyu.edu
I save all of my in-class p5js examples in the web editor. You can see a full list here.
Assignments are due before class begins each week. I will not give credit for assignments that are turned in late. Keeping in mind that I want you to succeed, and that the material can sometimes be challenging, I infinitely prefer inchoate or tentative work to work that is turned in late.
Use this form to turn in your homework assignments.
This is a scratch document for in-class collaboration, like sharing links to our sketches, asking questions, etc. I might ask you to add a link to your web editor sketch when we do in-class workshops and exercises.
Make sure to set up the following:
- Sign up for a p5.js web editor account
- Sign up for the ITP ICM Google Group
Allison's notes:
- Create your own screen drawing: self-portrait, alien, monster, etc. Use 2D primitive shapes –
arc()
,curve()
,ellipse()
,line()
,point()
,quad()
,rect()
,triangle()
– and basic color functions –background()
,colorMode()
,fill()
,noFill()
,noStroke()
,stroke()
. Remember to usecreateCanvas()
to specify the dimensions of your window and wrap all of your code inside asetup()
function. Here's a sample example: Elegant Composition - Write a blog post about how computation applies to your interests. This could be a subject you've studied, a job you've worked, a personal hobby, or a cause you care about. What projects do you imagine making this term? What projects do you love? (Review and contribute to the ICM Inspiration Wiki page. In the same post (or a new one), document the process of creating your sketches. What pitfalls did you run into? What could you not figure out how to do? How was the experience of using the web editor? Did you post any issues to github?
Videos listed in Week 2 curriculum outline.
Allison's notes and examples:
- Expressions, variables and loops
-
Interaction (for
mouseX
andmouseY
) - Changes over time (for "Changing variables over time")
- Sines, cosines, radians, the unit circle
Create a sketch that includes (all of these):
- One element controlled by the mouse.
- One element that changes over time, independently of the mouse.
- One element that is different every time you run the sketch.
You can choose to build off of your week 1 design, but I might suggest starting over and working with one or two simple shapes in order to emphasize practicing with variables. See if you can eliminate all (or as much as you can) hard-coded numbers from the sketch.
Videos listed in the Week 3 curriculum outline.
Example code:
- Video Examples: 3.1-4.2
- Getting Started with p5 Examples: 04, 05, 06, 08.
- Learning Processing Examples: chp03-06
- Animation examples from ICM 2015
Allison's notes:
- Expressions, variables and loops
- Interaction (scroll down for relational expressions and conditionals)
For this assignment, you'll be working in pairs. Make a rule-based animation that incorporates motion and interaction and includes a user interface element of your own design. Things to try:
- Make a rollover, a button, or a slider from scratch. Compare your code to the examples in "Examples" below. Later we'll look at how this compare to interface elements we'll get for free from the browser.
- Create an algorithmic design with simple parameters. Make your interface element control the appearance or behavior of the algorithmic design.
- When working in teams, try working separately and then combining your work together. Overlay your sketches, or have the interface element you created control your partner's algorithmic design (and vice versa). Trade sketches and riff on your partner's work. Or, sit next to each other at one keyboard and take turns coding while looking over each other's shoulder.
Videos listed in the Week 4 curriculum outline.
Allison's notes:
Create an interactive artwork that implements the concept of repetition with variation. Use at least one for loop. (Note that this assignment might be easier if you consider making it non-interactive—try putting noLoop();
in your setup()
function.)
- 10 PRINT (Shiffman's sample implementations in p5.js); (video by Casey Reas)
- Casey Reas Process 6
- Gerhard Richter Color Charts
- Taroko Gorge by Nick Montfort
- Repetition with variation mood board.
- Vera Molnar
Videos listed in the Week 5 curriculum outline with links to tutorials, videos and examples.
Allison's notes:
Re-work an existing assignment, using functions to compartmentalize your code. Write at least one function that takes parameters and one function that has a return value. If your existing assignments already make use of functions, or if you don't want to build on existing work, feel free to make a new experiment from scratch. Goals and things to try:
- Break code out of
setup()
anddraw()
into functions. - Use a function to draw a complex design (like this) multiple times with different arguments.
- Write a function to that returns the result of a mathematical operation that you need to do several times in your code.
- Reorganize "groups of variables" into objects.
- If you are feeling ambitious, try embedding a function into an object.
Videos listed in the Week 6 curriculum outline.
Examples:
- New object syntax
- Video Examples for Objects and Arrays
- Getting Started with p5.js Chapters 10-11
- Learning Processing examples Chapters 8-9
Allison's notes:
Arrays and objects allow you to do something new with your programs: keep track
of user action over the course of your sketch's execution. For this week's
assignment, create a sketch that takes advantage of your new skills. The sketch
should allow the user to use clicks, key presses, etc. to add new elements to
the scene (and potentially to remove them later). Your sketch should use an
array of objects. (Using a constructor function or the class
syntax is optional.)
Videos listed in the Week 7 curriculum outline.
- p5.dom section of Chapter 13 in Getting Started with P5.js
- Tutorial: Beyond the Canvas in P5
Allison's notes:
See also:
- Tutorial: Intro to HTML and CSS
- Tutorial: Beyond the Canvas in P5
- p5.js DOM library videos
- Chapter 13 in Getting Started with P5.js
- p5.js dom reference
- CSS reference
- Learn Layout: a great guide to writing CSS
It's up to you to figure out how to best document your project, here are some guidelines if you aren't sure what to include.
- Title
- Brief written description
- Visual Documentation: sketch running online, images, video, etc.
- References: links to related projects, code samples, etc.
- Source code (please cite your sources in the code comments)