-
Notifications
You must be signed in to change notification settings - Fork 1
Homework John Henry
Welcome to ICM Section 1's Wiki Page!
This is John Henry Thompson's section of ICMβMedia. Here is the Syllabus Overview for the course. This section is a continuation of ICM-Code for most students. The ICM-Code homework is included here for continuity. ICM-Media begins on week 8.
- Week 8 Images and Pixels
- Week 9 Pixels and Color
- Week 10 Sound Analysis
- Week 11 Sound Synthesis
- Week 12 Text
- Week 13 Final Project In Progress
- Week 1 Introduction and Drawing
- Week 2 Animation: Variables
- Week 3 Interaction: Conditionals
- Week 4 Repetition: Loops
- Week 5 Functions Objects Arrays
- Week 6 More Functions Objects and Arrays
- Week 7 The DOM
Here is my calendar to sign up for office hours, and my email is [email protected]. Pleae be sure to email when you schedule an appointment.
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 each week.
- Share your documentation. For ITP students this is usually, but not always, in the form of a blog post. Ideally include something visual (inspirational images, screenshots, videos of the interaction), some written thoughts, and code. If you are struggling with your sketch, put your energy into writing about what didn't work and how you tried to solve it. It's okay to vent your frustrations! Writing a blog post helps you remember what you did and tried to do. Think of it as telling yourself a story or writing a reference guide for your future self so that you don't have to relearn everything from scratch.
Assignments are due the day before class each week. Keeping in mind that I want you to succeed, and that the material can sometimes be challenging, I absolutely prefer tentative work to work that is turned in late.
There are worksheets (linked below) to practice the concepts introduced in this course. You are expected to add links to your p5 sketches directly in these documents. Log in to your NYU account to access them.
To submit all other assignments (i.e. your blog posts or other documentation), use this homework form.
Here is the spreadsheet with everyone's responses.
If you find yourself struggling, there are many forms of support at ITP:
- Make an appointment with me - my office hours
- Look out for the residents' office hours and help sessions.
- Visit The Coding Lab, a walk-up (and virtual) help desk for NYU students to get help with their code from ITP student mentors.
- Post a question to the Discourse in the icm category, tagged with our section icm001. Think of Discourse as an asynchronous Q&A forum for peer support for solving technical issues and trouble-shooting, as well as for archiving discussions long-term. As more questions accumulate over time, it will become a useful technical support resource for everyone. Feel free to answer other students' questions, too!
- Post a question to the Discord HELP-ITP #icm channel. Think of Discord as chat. Itβs a platform designed for synchronous connections and community messaging. If you need a question answered in real-time, consider posting here to chat with another student or resident who is currently online.
- Need help asking a question?
- ITP/IMA Code of Conduct
- Week 1 Curriculum Outline
- p5.js Reference
- JavaScript Guide
- A re introduction to JavaScript
- JavaScript Object
- JavaScript Array
- JavaScript Classes
- Create a GitHub account. You might need it to contribute to the ICM syllabus wiki pages.
- Log in to a p5.js web editor account with your GitHub account.
- Before the assignment, watch Videos 1.1 - 1.6 (~1 hour 15 min).
- If you prefer reading, Allison Parrish's excellent First steps with p5.js tutorial covers the same topics.
- Chapters 1-3 of Getting Started with p5.js (read for free) also covers the concepts. Note: It was written several years ago so some aspects--but not the general ideas--might be out of date.
- After the assignment, watch Videos 2.1 - 2.3 (~30 min) for the next class.
- Code examples:
- The Coding Train videos Originals | 2020 Updates
- Getting Started with p5.js Originals | 2020 Updates
- Test yourself: complete this worksheet(NYU login required).
- Create your own p5 screen drawing: a self-portrait, alien, cyborg, etc.
- Use 2D primitive shapes:
arc()
,curve()
,ellipse()
,line()
,point()
,quad()
,rect()
,triangle()
- Also use basic color functions:
background()
,colorMode()
,fill()
,noFill()
,noStroke()
,stroke()
. - Remember to use
createCanvas()
to specify the dimensions of your canvas, and wrap all of your code inside asetup()
function.
- Use 2D primitive shapes:
- Write a blog post, and submit it using the homework form.
- Include a link to your p5 screen drawing. Document the process of creating your sketch. What challenges did you encounter? What could you not figure out how to do?
- In the same post, describe 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? Feel free to review and contribute to the ICM Inspiration Wiki page.
- Week 2 Curriculum Outline
- Week 2 Slides
- p5 Demo Sketches:
- For the assignment:
- Videos map() 2.4 and random() 2.5 (~20 min)
- For review plus some extra tips:
- Allison Parrish's tutorial, see Expressions and Variables (the section on Repetition with Variation previews Loops)
- Getting Started with p5.js: Chapter 4: Variables, examples 4-1 to 4-4, and Robot 2 at the end of the chapter & Chapter 5 Response, examples 5-1 to 5-9 (example 5-8 helps with worksheet question 6)
- For next week's topic, Conditionals: Videos 3.1 - 3.4 (~1 hr)
- Code examples: The Coding Train and Getting Started with p5.js
- (Optional) Going further with Transformations
-
Video 9.1:
translate()
,rotate()
,push()
,pop()
(~23 min) -
Video 9.2:
scale()
(~8 min) -
Video 9.3: more on
push()
,pop()
(~8 min) - Allison Parrish's tutorial on Transformations
- Getting Started with p5.js: Chapter 6 on Translate, Rotate, Scale
-
p5 sketch example illustrating
translate()
androtate()
- Carrie Wang's Spiraling Square Using Translate and Rotate: Video Tutorial and Code
-
Video 9.1:
- Test yourself: complete Worksheet 2.
- Create a sketch that includes all of these and write about it in a blog post:
- 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.
- For example:
- You could try refactoring your Week 1 homework 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. - Or you could do the above but change color, alpha, and/or strokeWeight instead of position.
- Or do something completely different!
- You could try refactoring your Week 1 homework by removing all the hard-coded numbers except for
- Submit link to blog and sketch using the homework form.
- Week 3 Curriculum Outline
- GUI Interfaces Sketches using conditionals:
- GUI Using p5js DOM functions:
- Coding Train Video: The Modulo Operator with Golan Levin
- For review and more tips:
- Interact with Allison Parrish's Interaction tutorial
- Getting Started with p5.js: Chapter 5 Response, examples 5-10 to 5-23 and Chapter 8 Motion, examples 8-3 to 8-5
- Test yourself: complete Worksheet 3
- 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.
- Create or expand on a sketch with animated elements.
- Select one or more of the interface elements presented in class. Class Collection
- Tie the above two together and have the interface element(s) control the visual design or behavior of other elements in your animated sketch.
- Submit link to blog and sketch using the homework form.
- For next week's topic, Loops:
- Videos 4.1 - 4.2 (~25 min)
- If you prefer reading:
- Allison Parrish's tutorial Expressions and Variables
- Getting Started with p5.js: Chapter 4 Variables, examples 4-5 to 4-13
- Code examples: The Coding Train and Getting Started with p5.js
- Inspiration from the art world: Vera Molnar | Bridget Riley
- For a review, Happy Coding Tutorial: For Loops
- Test yourself: complete Worksheet 4
- Make something with a lot of repetition, more than you want to hand-code.
- You could take something you've already done where there was a lot of repetition in the code and see if you can re-write it using a loop so that instead of 28 lines of code that call rect(), you have 1 line of code calls rect() inside of a loop that goes around 28 times. How do you need to rework the way you position that rect() in order to make it work in a loop?
- Or try creating an algorithmic design with simple parameters. One example is to invent your own 10PRINT design. Here are some resources: Coding Train Coding Challenge: 10PRINT and example code. Another source of inspiration: Sol Lewitt's Wall Drawings.
- Submit link to blog and sketch using the homework form.
- For next week's topic, Functions:
- Videos 5.1 - 5.3 (~30 min)
- If you prefer reading, Getting Started with p5.js: Chapter 9 Functions
- Code examples: The Coding Train and Getting Started with p5.js
- For review:
- Test yourself: complete Worksheet 5
- The idea this week is to explore the advantage of using functions:
- Draw a complex design that uses multiple shapes with different parameters.
- Have at least two shapes move independently on the screen.
- Use DOM UI elements, such as a slider, to control some of the shape parameters.
- Reorganize "groups of variables" into objects (see Video 2.3 mentioned above).
- Submit link to blog and sketch using the homework form.
We are deviating slightly from the course outline by delaying the use of ES6 classes, as prescribed for week 6. Instead we will spend more time on loops, functions and javascript object. Focus your time on completing the worksheet, completing the assignment, and writing up any questions that come up.
If you are total comfortable with all the material covered so far, you may watch Videos listed in the Week 6 curriculum outline. For next week these videos are optional.
How is this class going so far? If you haven't yet, please take a few minutes to complete this feedback form
To expand your understanding of JavaScript:
Videos listed in the Week 6 curriculum outline. Lots here. You can narrow your focus by starting with these videos that focus on arrays:
Also you can find the purely functional implementation of the same ideas in my collection for week 6:
If you prefer to read:
- Allison Parrish's tutorial on Classes as object factories
- Getting Started with p5.js: Chapter 10 Objects and Chapter 11 Arrays
-
There is no worksheet for this week. Complete any missing home work or worksheet from prior weeks. If you cannot fully complete, document your struggles and questions in your blog entry for that week. Next week I'll begin reviewing your work to date for your midterm grade. This is your chance to catch up to ensure all your work is considered.
-
For your homework sketch build on your assignment from last week - add additional shapes and controls. Use arrays where appropriate. You can choose to uses classes or functions as illustrated in Week 6 Collection
-
Submit link to blog and sketch using the homework form.
- Allison Parrish's tutorial on Browser Controls
- HTML / CSS / DOM Videos 8.1-8.10 (~2 hr). There's a lot, and if it's too much information, just focus on the basics:
-
DOM Resources:
- MDN - Introduction to the DOM
- MDN - HTML Elements Reference, a list of all possible tags
- MDN - Intro to CSS
-
For general p5 review and more practice:
-
Test yourself: Complete this DOM Quiz and write a blog post with any questions that you have about the topics or specific problems/solutions. Create a collection for your sketches to submit in the homework form.
-
Here are some resources for the Week 7 DOM section:
- Beyond the Canvas, using p5 with HTML elements
- p5 DOM Reference
- p5 Element
- p5 style()
- Week 7 Videos 8.1-8.10
- Week 7 Sketches for Videos
- Allison Parrish's tutorial on Browser Controls
-
Submit link to blog and collection of sketches using the homework form.
- Video and Pixels, Videos 11.1 - 11.7 ~1 hr 40 min (Focus on 11.1 and 11.3)
- Source Code for Videos
- Week 8 Sketches for Videos
- OR read Chapter 7 in Getting Started with P5.js through Ex 7-9 | Code
- Full Resources
-
Over the next two weeks design and write a sketch that creates and/or manipulates an image or video at the pixel level. Include DOM ui elements that controls some parameters of the sketch. Create a blog post documenting your design and work-in-progress. Also include links to other projects that serve as references, inspiration, or deal with similar ideas as your piece.
-
Be prepared next week to show your work-in-progress, present any issues or problems, and get feedback.
-
You may work in pairs.
- Submit link to blog and work-in-progress sketch using the homework form.
-
Complete this worksheet Select only ONE sketch to modify.
-
Complete your sketch from last week that creates and/or manipulates an image or video at the pixel level. Incororate any feedback from your presentation in class.
-
Be prepared next week to show your completed work.
- Submit link to blog and work-in-progress sketch using the homework form.
-
Week 10 Class Sketches
-- Note: there are issues for sketch 17.1: playMode
-
Smarter Everyday: What is the fourier series β The concept explained in this video is the same concept that is used to create sound waves in FFT.
-
Chrome Music Labs β Some inspiration
-
Places to get sound samples
freesound.org
soundofpicture.com
youraccompanist.com
vocalnebula.com
-
Complete this worksheet Select ONE sketch to modify - more than one if you feel adventurous.
-
Create a sketch that analyzes sound and translates it into something visual. Use live or recorded audio. Use color, video, images, pixels, shapes, etc. to represent the sound
-
Prepare the sketch to run full screen by making all positioning relative to the size of the canvas - see example 2:2 Tri-Color ui.
-
You have two weeks to work on this sketch. Be prepared next week to show your work-in-progress, present any issues or problems, and get feedback.
-
You may work in pairs.
- Submit link to blog and sketch using the homework form.
- p5 Demos, Making Notes
- yourSoundFile.rate(), note ratios Pitch Slider | Note Ratios Columns
- p5.Oscillator, note frequencies Sine Wave Oscillator | Different Wave Types | Note Frequencies Columns
- p5.Oscillator, note ratios Melody using Random | Diatonic Melody | Random Diatonic Chords
- p5 Demos, Sound Effects
- p5.Envelope (ADSR) With Oscillator | With Sample | "Zoom Background"
- p5 Effects p5.Delay | p5.Reverb | p5.Distortion | p5.Filter
- p5 Demos, Timing and Patterns
- frameCount and Modulo MIDI Sequencer | Modulo Drum | Loopy Drum | Shifting Syncopation Drum
- p5.SoundLoop Random Sample Sequencer | Polyrhythm Sequencer
- p5 Demos, Other examples Record and Loop | Granular Synthesis | Geometry as Rhythm (related video)
- Complete your sketch that analyzes sound and translates it into something visual. Use live or recorded audio. Use color, video, images, pixels, shapes, etc. to represent the sound
- Prepare the sketch to run full screen by making all positioning relative to the size of the canvas - see example 2:2 Tri-Color ui.
- Be prepared next week to show your sketch that incorporates class feedback.
- You may work in pairs.
- Submit link to blog and sketch using the homework form.
-
Text
-
Tutorials:
- Allison Parrish's Text and Type
- Carrie Wang's Scrolling Text and Drawing the Text Array
-
Code Examples
- Alllison Parrish's Interactive Type Examples
- Generative Design P.3. Type Examples
-
Data & APIs
More Text and Data resources on Ellen's homework page
-
Begin your final project project, it is due in 2 weeks. For next week, week 13, bring to class an initial sketch and description of your concept. For the final week, week 14, you will present your completed sketch.
-
Final Project requirements. β...You are expected to push your abilities to produce something that utilizes what you have learned in the class that is useful in some manner to yourself or the world. This will comprise 20% of your gradeβ¦β
- Submit link to blog and sketch using the homework form.
-
Your final projects! π
-
Complete final project sketch.
-
Write documentation in the form of a blog post. 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 and a brief written description
- References such as links to related projects, code samples, etc.
- Source code (please cite your sources in the code comments)
- What were some of the successes and challenges? What did you learn?
- How do you feel about WHY you want to use code in your work now compared with the beginning of the semester?
- 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!)
- Next steps to further develop the project
- If the project is a collaboration, describe your contribution to the project
-
Prepare a 5-minute presentation to demonstrate your project.
-
Submit link to blog and sketch using the homework form.
-