Monday/Wednesday 4:00-7:00 Hybrid Lab San Francisco Barney Haynes bhaynes@cca.edu Lectures and Schematics Folder Lab Schedule
Due Dates and Grade Breakdown: Interface Show Saturday May 8 Attendance: Miss 3 classes lose 1 grade point, miss 4 you will not pass.
Assignment | Due Date | Grade Percentage Participation in class, labs, weekly homework | blog and punctuality | Ongoing | 10% Artist Report | Ongoing | 5% Generative Pixels | 2/24 | 15% //Random Motion Machine | 3/18 | NA Individual Meetings with Preliminary Proposal | 3/30 and 4/1 | 10% Prototype 1 | 4/13 | 10% Prototype 2 | 4/22 | 10% Final Critique | 5/9 5:00 PM | %20 Interface Show | 5/9 7:00 to 9:30 | 30%
Week 1 Wednesday 1/22 Introduction to the Class, expectations, assignments and grading. On-going: Artist Presentations, the how, why, and when. Some starter links: Steve Wilson's Links Creative Applications Network 21st Century Digital Art Creators Project Processing Exhibition Gallery Adafruit Projects Page p5.js Specific: Generative Design Web Site OpenProcessing Movies: Examples of Student Work
Week 2 Monday 1/27 Movies: A selection of work by practicing artists and designers Wednesday 1/29 Processing Day One Reference Videos: Code Tree Coordinate System Class Sketches: Processing Sketch One p5.js Version Static Sketches: Window Punctuation Shapes Drawing Order Color: RGB and HSB Attributes Processing Sketch Two p5.js Version Extra: Un-assigned Variables Dynamic Sketches Structure: Code Blocks Loops void setup() void draw() Variables: System Variables: Variables Drawing lines ellipses Saving images of your sketch Sketch Three Inverting Numbers p5.js Version Syntax: () parentheses ; semicolon = (assign) Environment: size(); p5.js createCanvas(); Shapes: line(); rect(); ellipse(); Color: background(); stroke(); fill(); noFill(); noStroke(); Attributes: strokeWeight(); Dynamic Sketches Debugging: println(); p5.js print(); Structure: void setup() void draw() p5.js function setup() function draw() System Variables: mouseX mouseY pmouseX pmouseY Variables: int float String (note the String Variable is capitalized) p5.js Variables let var (Doesn't have a reference page) const Variables do not have a type in p5.js. Uselet
(or the older syntaxvar
) instead offloat
,int
,double
,long
,char
,String
,Array
, etc. You do not need to specify return types or parameter types for functions.
Week 3 Monday 2/3 Processing Day Two Mouse_Key_Contolled_Draw_S20 incrementingDecrementing_S20 if_ElseIf_Else_S20 BouncingEllipse_S20 millisDelay_S20 p5.js mouseAndKeyDraw_S20 incrementingDecrementing_S20 if_ElseIf_Else_S20 BouncingEllipse_S20 millisDelay_S20 Generating Numbers += ++ -= -- Making Decisions or Conditionals: if() else if() else Logical Operators && || != Using Conditional for timing Using the mills() function p5.js using the setTimeout function saveFrame() p5.js save() Incrementing (x = x + speedX) Calculations dist() Making Decisions (forking paths): if() else if == (equality) || (Logical OR) Wednesday 2/5 Processing Day Three Sketches randomWalk_S20 randomLines_S20 imageSequencer_S20 randomImageSequencer_S20 p5.js randomWalk_S20 randomLines_S20 imageSequencer_S20 randomImageSequencer_S20 Functions: Random random() Image: PImage p5.js (Use let instead of PImage) loadImage() image()
Week 4 Monday 2/10 Artist Presentations Vrinda Jay Processing Day Four Generating noise fueled ellipses across the screen: noise() Sketches: EllipseFun_S20 noiseDouble_S20 p5.js EllipseFun_S20 noiseDouble_S20 Wednesday 2/12 Artist Presentations Dayeon Yi Processing Day Five: Generating Motion: firstLerp_S20 millisLerp_S20 dementedFlowers_S20 atan2Ex_20 p5.js firstLerp_S20 millisLerp_S20 dementedFlowers_S20 atan2Ex_20 Implementing map() to map one range of numbers to another range of numbers Functions: Calculations: lerp() sin(); cos(); map(); atan2(); Transformation translate() rotate() Homework: Work on the Generative Pixels Assignment
Week 5 Monday 2/17 Processing Day Six Transformations (continued) scale() pushMatrix() popMatrix() for() loops and iteration Arrays Sketches basicForLoop_S20 heartImageArray_S20 sphereNoiseyArray_S20 sphereNoiseySetColorArray_S20 sharkBang_S20 p5.js basicForLoop_S20 heartImageArray_S20 sphereNoiseyArray_S20 sharkBang_S20 Wednesday 2/19 Artist Presentations Yuxin Ron Sick Work on the Generative Pixels Assignment
Week 6
Monday 2/24
Workday: Generative Pixels
Wednesday 2/26
GENERATIVE PIXELS CRITIQUE
Week 7 Monday 3/2 Artist Presentations Richard Rahul Arduino Day One: Intro to Arduino Arduino tour Board Layout pinMode() Serial.begin() Serial.println() digitalWrite() HIGH | LOW delay() random() Sketches and Schematics Arduino Day One Folder Wednesday 3/4 Arduino Day Two analogRead() analogWrite() constrain() Sketches and Schematics Arduino Day Two Folder Tom Slick
Week 8 Monday 3/9 This was the plan until I got sick. I'm including this for your information. It is not an assignment, it is an option. Sketches and Schematics Arduino Day Three Folder Artist Presentations INTERFACE: Processing to Arduino to Processing Serial.parseInt() Wednesday 3/11 Artist Presentations El Work day for Random Motion Machine Project
Week 9 Monday 3/16 Shelter at Home Wednesday 3/18 Shelter at Home RANDOM MOTION MACHINE CRITIQUE Cancelled
Spring Break 3/23 - 3/27
Week 10 Monday 3/30 Discuss the Interface show vis a vie COVID-19 Interface Show expectations More Inspriration Open Processing Generative Art p5.js for Processing users p5 web editor = https://editor.p5js.org/ Porting Processing sketches to p5.js createCanvas(); instead of size(); function instead of void For instance; function setup() function draw() Variable names and scope let var const difference between var and let JavaScript doesn't always load things synchronously.Use the preload() function for loading photos or other data into your sketch. fullscreen() mode (Works with Brave or Chrome) Example Wednesday 4/1 p5.js Potential topics: Working with the DOM How to showcase your projects using your CCA server. FTP settings: CCA web hosting preload()
Week 11 Monday 4/6 Individual Meetings Final Project Proposal Guidelines. 4:00 Ron 4:30 Lu 5:00 Diane 5:30 - break - 6:00 Vrinda 6:30 Herman Wednesday 4/8 Individual Meetings 4:00 Jay 4:30 Yi 5:00 Yuxin 5:30 - break - 6:00 Rich 6:30 Rahul
Week 12 Monday 4/13 Lab Lab Schedule //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// Wednesday 4/15 Lab Lab Schedule
Week 13 Monday 4/20 Lab Lab Schedule Wednesday 4/22 Prototyping Assignment 1 Due Lab Lab Schedule
Week 14 Monday 4/27 Lab Schedule Lab Wednesday 4/29 Lab Schedule Prototyping Assignment 2 Due Lab
Week 15 Monday 5/4 Lab Schedule Lab Wednesday 5/6 Final Critique upload and launch projects
Friday 5/8
ON-LINE
INTERFACE SHOW!!! 7:00PM to 9:30PM
How this syllabus works: This column contains the topics we intend to cover in this class. When the topic is presented it will be moved over to the left column to the date it was covered. This system gives us the flexibility to address your interests. Topics To Be Covered: Concepts: Chance and Emergence Patterns and Chaos Garden of Forking Paths On Screen / Off Screen Programming: ProcessingSyntax Variables Punctuation Functions Color Drawing (with the mouse) ConditionsIteration (Loops) NestingDrawing (Procedural)Timing Strategies Countersmillis() based delaysInterpolation Communication Events or Listeners Using Arrays to store numbers, strings, images etcComplex Data Types Text and Fonts ImagesLibraries Serial Sound (Mimin Library) Video Installing 3rd Party Libraries Kinect Leap motion Electronics: Arduino Ohm's Law Voltage Current Resistance Power AC DC LEDS Resistors Sensors Alex Benz formula Analog and Digital Transisters/Mosfets Actuators Motors DC Moters Hobby Servos Steppers Solenoids Pneumatics Arduino Shields Advanced: Objects/Classes Particles Data Visualization CAD design with Fusion 360