-
Notifications
You must be signed in to change notification settings - Fork 11
Homework Cassie
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!).
Use this form to turn in your homework assignments.
Assignments are due before class each week. Even if you don't think it's finished or it's not working, turn it in! I won't count it if it's late.
- Final project presentations are Wednesday, December 5th. In class presentations will be approximately 7 minutes each, I will be strict about the time.
- Please post your final project documentation to a web page (blog post is fine) and submit through the above homework form. This is due Friday, December 14 (at midnight).
- It's up to you to figure out how to best document your project, here are some loose 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)
- Son
- Sachiko
- Rachel
- Patil
- Shuju
- Jaekook
- Madison
- Aaron
- Fenfen
- Yves
- Arnab
- Cara
- Xiaotong
- Chenhe
The testing will follow a speed "round robin" format. The class will be divided into two groups and we'll do two rounds. For each round half the students will set up on a laptop in the class room and the other half will "view" or "interact with" or "listen to" your project for ~5-7 minutes. We'll rotate so that all "testers" will try each project and provide feedback.
It's up to you to design your "user testing". It can mean something different for each project. For a game, it's pretty obvious what to do. For a physical installation or performance or sound piece, this will be more difficult. The "rule" that we will try to adhere to is no explaining of the project until after the user has viewed/interacted.
If you are not sure how to design your testing, e-mail me or come and see me and we'll discuss.
Yves, Madison, Jaekook, Cara, Xiaotong, Sachiko, Arnab
Aaron, Son, Patil, Chenhe, Shuju, Rachel, Fenfen
- RESOURCES FROM CLASS
- Awesome Creative Coding
- JavaScript Ecosystem Overview, the audience here is assumed to be a professional web developer and includes a ton of stuff we haven't touched upon
- WebAPIs
- WebGL
-
- Show as much as possible. You won't be allowed to "explain" your concept during the user test.
- What questions do you have about your project? Build your prototypes so you can answer those questions by observing how users respond to your prototype.
- Working code is always good. But prioritize getting across your concept. Use paper, glue, sound, play-doh to quickly mock-up things that would take too long in code.
- Nicole He - The Best Art
- Robin Sloan - Writing With The Machine
- Ross Goodwin - Sunspring
- Google Deepdream / Gallery
- Google Magenta Demos
- Botnik Studios - Harry Potter
- GAN - Helena Sarin and Gallery
- Runway
- Wekinator
- ProPublica - Machine Bias
- Amazon Rekognition and Bias
- Jaron Lanier - The Myth of AI
- The Baffler - Discover Weakly
Final Project Proposals: 5 minutes of slides, sketches...something to ILLUSTRATE what's in your head.
- Collect inspirations: Quotes, photographs, products, projects, people, music, political events, social ills.
- Collect source material: Drawings, Images, Videos, Sounds, Text
- Collect code: Your own sketches. Other people's sketches.
- Collect ideas for a title?
- Collect ideas for 1-sentence description?
- Context? Who's it for? How will people experience it? Is it interactive? Is it practical? Is it for fun? Is it emotional? Is it to provoke something?
-
Collect questions for your classmates.
- What are you unsure of? Conceptually and technically.
- Slit Scan
- Brightness Mirror
- Particle Painting
- Video Painting: Generative Design
- Song Example
- Synthesis Example
- Slit Scan
- Nam June Paik at The Whitney, and Electronic Superhighway
- Pipilotti Rist
- Daniel Rozin
- jazz.computer
- Chrome Music Experiments
- Scribble Audio
- Learning Music
- How Generative Music Works
TEST YOURSELF: Complete Quiz for Week 8
- Create a sketch that uses external media (sound, images or video). Some ideas are:
- Make something responsive to microphone input.
- Create a "photobooth" with augmented snapshots from a camera.
- Create a "painting" system that colors pixels according to images, video or camera input.
- Create a blog post documenting your work. Also include at least two links to other projects that serve as references, inspiration, or deal with similar ideas as your piece.
-
IN-CLASS
-
TEST YOURSELF
- Complete the optional Quiz
-
DO:
- Create a sketch that uses an external data source. Consider building on top of your website assignment. Make it data-rich!
- Here are some ideas:
- Track personal data over the course of a few days (exercise, sleep, computer use, eating, etc.). Enter the data manually into a JSON file and visualize the results.
- Count word frequencies in two different text sources (i.e. two different authors, two different newspapers, two different political speeches) and visualize the results.
- Use weather data to affect elements in a sketch
- Gather data from a google spreadsheet and use in a sketch with loadTable()
- APIs to consider
-
READ / WATCH
- Week 8: Video & Sound
- Videos: Images/Video 11.1-11.8
- Videos: Sound 17.1-17.11
- Chapter 7 in Getting Started with P5.js
- Additional Resources
-
EXAMPLES
-
IN-CLASS:
-
DO:
- Create your own HTML page with the following:
- Pre-defined HTML Elements
- Pre-defined CSS Styles
- HTML Elements generated by your p5 sketch
- Some kind of mouse interaction with an HTML Element using a callback function you write.
- Another option for your assignment this week is to play with an existing website rather than create your own from scratch. To do that you will need to save it and upload it to your web editor. Here are instructions on how to do that.
- Let’s say you want to work with the awesome MDN documentation page on the animate() function.
- Go to the File>>Save as… menu. Rename the file something short like animate.
- You will end up with 1 file that’s called animate.htm and a folder of supporting files (including the css style files) called animate_files.
- Open animate.htm in a code editor (Brackets, Atom, Sublime)
- Copy the html from animate.htm and replace the html in the index.html file on the p5 web editor.
- Create a folder in the web editor called animate_files and upload all the files from the saved folder INTO the one in the web editor. (If you click on the folder name in the web editor, you will see a little down arrow to the right of the name. Click that and you will see an option to Add File.)
- Voila, you should be able to run the saved website from the web editor.
- Remember that if you want p5 functionality, you will need to copy and paste the p5 script tags back into your index.html file.
- If this is all too much, I’ve set up this lovely specimen from the 1990s here for you to play with. You can File>>Duplicate it into your own account and go from there!
- Create your own HTML page with the following:
-
READ / WATCH
- Videos 10.0-10.10
- Pick 1 of the APIs to learn about from videos 10.8 to 10.12
- Chapter 12 in Getting Started with P5.js
- Additional Resources
-
Examples + Resources
- Week 5 in the Syllabus
- Arrays in JavaScript | Documentation
- OOP Balls
- Cosine Array
- Complete the optional Quiz
- Design a sketch in an object-oriented fashion. Follow these steps and see how far you get (even just doing the first couple steps is ok!)
- Make one single object with just variables.
- Put one or more functions in the object.
- Try manually making two objects.
- Duplicate the object using an array and make as many as you like!
- If you are already working with classes/objects and arrays:
- Re-organize / break-down your classes into the "smallest functional units" possible.
- Try different ways to have your objects "communicate" with each other in some way.
- In the end the goal is to have code in
draw()
that only makes calls to objects. Something like:
function draw() {
background(0);
// A single object
apple.chop();
// Another object
orange.peel();
// Calling a function on all of the objects in an array
for (var i = 0; i < grapes.length; i++) {
grapes[i].pluck();
}
}
- Videos 8.1-8.16 - Focus on videos 8.1-8.9.
- p5.dom section of Chapter 13 in Getting Started with P5.js
- Additional Resources
- Video Examples
- Getting Started with p5.js Chapters 13_05 + 13_06
- Casey Reas - Software Structures - Commissioned by the Whitney
-
RESOURCES FROM CLASS:
-
TEST YOURSELF
- Complete the Quiz
-
DO: The idea this week is to explore re-organizing your code. It is 100% legitimate to turn in a version of a previous assignment where nothing changes for the end user, but the code has been restructured. You may, however, choose to try a new experiment from scratch. Aim to keep
setup()
anddraw()
as clean as possible, and do everything (all calculations, drawing, etc.) in functions that you create yourself. Possibilities (choose one or more):- Reorganize "groups of variables" into objects.
- Break code out of
setup()
anddraw()
into functions. - Use a function to draw a complex design multiple times with different arguments.
- If you are feeling ambitious, try embedding a function into an object.
-
READ / WATCH
- Videos 6.1-6.3, 7.1-7.7, 16.4
- Getting Started with p5.js chapters 10-11
-
Examples
-
RESOURCES FROM CLASS:
-
TEST YOURSELF:
-
DO: In general this week, you should work with rule-based animation, motion, and interaction. You can use the ideas below or invent your own assignment. Start by working in pairs as below. Can you divide an idea into two parts and combine those parts? Can you swap sketches and riff of of your partner's work? You can post together or break off and complete the assignment individually.
- Try making a rollover, button, or slider from scratch. Compare your code to the examples on github. 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. (One example is 10PRINT, example code).
- Tie the above two together and have an interface element control the visual design or behavior of other elements in your sketch.
-
Groups
- Shu-Ju, Aaron
- Jaekook, Rachel
- Xiaotong, Fenfen
- Patil, Sachiko
- Chenhe, Yves
- Cara, Son
- Madison, Arnab
-
READ / WATCH
- Videos 5.1-5.3 in the learning p5.js series.
- Getting Started with p5.js chapters 9-10
-
RUN CODE
-
LINKS FROM CLASS:
- Week 2 Resources
- Curve (Catmull-Rom) Applet
- Bezier Curve Applet
- p5 Playground
- Bees and Bombs
- From UCLA DMA Interactivity Class
-
REVIEW
- Variables videos 2.1-2.3 and 1st half of Chapter 4 of Getting Started with p5 (up to Example 4-5).
- map() and random() videos 2.4 - 2.5
-
DO:
- 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.
- e.g. Try refactoring your Week 1 HW by removing all the hard-coded numbers except for createCanvas(). Have some of the elements follow the mouse. Have some move independently. Have some move at random.
- e.g. Do the above but change color, alpha, and/or strokeWeight instead of position.
- Or do something completely different!
- Here is an optional "take-home" quiz to test your knowledge.
- Create a sketch that includes (all of these):
-
READ AND WATCH:
-
EXAMPLE CODE:
- random painting
- mouse controlled painting
- moving circle
- arc example
- background fade
- clock -- Clock coding challenge video
- 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
-
RESOURCES FROM CLASS:
-
SET UP:
- Sign up for a p5.js web editor account
- Sign up for the ITP ICM Google Group
- Sign up for a Github Account. You need it to edit this wiki page.
-
DO:
- Here is an optional "take-home" quiz to test your knowledge. We'll discuss answers next week in class.
- 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: Zoog - 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 sketch. 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?
-
READ AND WATCH:
-
Watch before homework: Videos 1 - 7 | Watch after homework: Videos 2.1 - 2.3
- If YouTube bothers you, ask Daniel Shiffman for a link to videos on Google Drive.
- If you prefer books, Chapters 1-3 of Getting Started with p5.js cover the same material. Log into the NYU network to read it for free.
-
Watch before homework: Videos 1 - 7 | Watch after homework: Videos 2.1 - 2.3