Skip to content

Latest commit

 

History

History
803 lines (753 loc) · 37 KB

File metadata and controls

803 lines (753 loc) · 37 KB

Creative Coding, Fall 2019, Section E

Syllabus and Course Materials for Creative Coding, Fall 2019, Section E at IDM NYU

This syllabus is subject to change at any time, so check back regularly.

Instructor: Oren Shoham | [email protected]
Meetings: Monday and Wednesday, 2:30 - 4:20pm
Classroom: 370 Jay St., 3rd Floor, Room 310
Office Hours: Monday & Wednesday, 4:30 - 5:30pm, 20 minute appointment slots
Office Location: IDM Adjunct Faculty Office (370 Jay St., 3rd Floor, Room 344)
Open Processing: https://www.openprocessing.org/class/60310 | Access Code: FFECE8
IDM Creative Coding Slack: https://idm-cc.slack.com | Class Channel: #shoham-f19

Table of Contents

Course Description

In this course, you'll learn how to make works of art and design in the medium of software. We'll be exploring poetic and creative computation using the free and open-source programming environments, Processing and p5.js. We'll be learning fundamental programming concepts, exploring computation as a medium for art and looking at a range of artists who work in this area. You'll be experimenting with a range of different techniques to realize creative projects which will be documented online. Topics will include programming interactivity, generative graphics, and computer vision.

Course Objectives

  • Learn the fundamentals of computational thinking applied in the Processing (Java) and p5.js (JavaScript) environments.
  • Learn best practices for designing software within an event-driven, object-oriented, real time framework.
  • Ideate and conceptualize original creative works in the medium of software.
  • Develop a cultural literacy of the computational arts by critically engaging with historic and contemporary practices.
  • Develop personal learning strategies, project planning and problem solving skills.

Books

The following textbooks are required for this class. You can access them for free online through the NYU library, borrow physical copies from the NYU library, or buy your own physical copies.

You might also find the following books useful as supplemental resources, although we won't reference them directly in class:

OpenProcessing

We'll use OpenProcessing, an online code editor for Processing and p5.js, to submit homework assignments for this class. Please create an account and join the class at:

https://www.openprocessing.org/class/60310 | Access Code: FFECE8

Slack

IDM has made a Creative Coding Slack that will be shared across all sections of this class as well as its graduate equivalent. We'll use the shoham-f19 channel in this Slack to submit research posts and hold class discussions. You're also welcome to share resources with students in other sections and ask questions in the #general channel.

Each of you should get a sign-up email on the first day of class - let me know if you don't receive it.

Our Slack uses the free tier of service, which only stores a certain number of messages before it starts erasing chat history, so I'd suggest saving an external copy of any important information contained in Slack messages.

Office Hours

I'll be available for office hours Monday and Wednesday from 4:30pm - 5:30pm at the IDM Adjunct Faculty Office, located at 370 Jay St., Room 344. You can book a 20 minute appointment slot via Google Calendar.

Out of respect for your fellow classmates, please do not book more than one office hours slot per week, and do not come to office hours without booking a slot. If you book office hours and then decide that you do not need them for whatever reason, please release the appointment slot by deleting it from your calendar so that another student can take it.

If my calendar is full and you need to meet with me, send me an email or Slack message and we can set up an additional appointment.

Contacting Me

You can contact me via email ([email protected]) or direct message on Slack. On weekdays, I'll generally respond within 24 hours or sooner, but I may take longer to respond over the weekend.

Grading

The following rubric will be used for grading class projects:

  • A: Outstanding
  • B: High Quality
  • C: Satisfactory
  • D: Substandard or very late
  • F: Incomplete

To achieve an A, your work must reach the following standards:

  • Technical: Your code works as intended and uses programming techniques appropriately, e.g. object-oriented programming where functions and objects are used to avoid duplication. Interaction design is thoughtful and considered, so that the code supports the underlying concept of the project (e.g. details such mouse clicks or key press interactions are well-designed). Code is clearly commented, referenced, and formatted.
  • Concept: Your response is inventive and you're exploring ideas and questions outside of the obvious and predictable. Your project may respond to historic ideas or practices of art or design, but explores these questions or topics in new ways.
  • Aesthetic: Your project is visually/sonically cohesive. This doesn't necessarily mean that your work is beautiful, but it must show a careful consideration of aesthetic choices where close attention has been paid to details such as font choices, color palette, and compositional rhythm. These elements relate to the concept and intention behind the work.
  • Documentation: The documentation of your project is well-written, in grammatically correct English. Your documentation shows project research and includes references to influences and research materials. It also includes appropriate audio/visual materials documenting your work, such as screenshots, GIFs, or videos. It should clearly explain the intention behind your work to a non-expert audience. It should also include a link to the code on OpenProcessing or GitHub.

The breakdown of your overall grade in the class is as follows:

  • Weekly Homework Assignments: 40%
    • Weekly homework assignments will consist of research posts, readings, and coding projects. Complete your homework before class so we can discuss it on the day that it’s due. See the schedule for assignments and due dates.
    • There are 8 coding assignments and 2 research posts, each worth 10% of your homework grade.
  • Engagement: 25%
    • There will be a lot of ways to show you're engaging with the material from class and your classmates:
      • Participate in class discussions
      • Help your fellow classmates and give feedback
      • Ask and answer questions on the class slack channel
      • Never use your cell phone or laptop while your classmates are presenting work
  • Midterm Project (due 10/15): 10%
    • The midterm project will be an opportunity to apply concepts from the first half of the course to create a self-defined project. It must be an interactive Processing or p5.js sketch that includes appropriate use of loops, objects, and functions.
  • Final Project (due 12/9): 25%
    • The final project will be an opportunity to conceptualize and complete an engaging project that demonstrates your ability to apply the technical material of the course. You may use Processing or p5.js, and may include other libraries.
    • 5% of this grade will be an assessment of your project proposal.

Attendance

Students are expected to attend all classes, except in cases of emergency, grave illness, religious commitment, or pre-planned event of critical importance. Attendance will be taken at the beginning of class. In the case of a planned absence, notify me. For illnesses, provide documentation whenever possible.

For any absence, it is the student’s responsibility to inquire with classmates for notes, make up any exercises completed in class, and to complete impending assignments. Lateness and unexcused absences will significantly impact your grade. Two unexcused absences will result in the deduction of a letter grade (e.g. an A goes to A-). Five unexcused absences and you'll be dismissed from the course.

Weekly Schedule

Week 1 In Class Homework Readings
9/4
  • Introductions
  • Syllabus
  • The Processing IDE
  • setup() / draw()
  • Pixels / Coordinate Systems
  • Shapes
  • Colors
Due 9/9
Week 2 In Class Homework Readings
9/9
  • Data Types
  • Variables
  • println()
  • Mouse Interaction
Due 9/16
9/11
  • map() / constrain()
  • frameCount
  • sin() / cos()
  • random()
Week 3 In Class Homework Readings
9/16
  • if / else if / else
  • Mouse Clicks
  • Key Presses
Due 9/23
9/18
  • && and || Operators
  • Loops
  • Functions
Week 4 In Class Homework Readings
9/23
  • Functions Pt. 2
  • Matrix Transformations
Due 9/30
9/25
  • Objects
  • Arrays
Week 5 In Class Homework Readings
9/30
  • Objects and Interaction
  • Communication Between Objects
Due 10/15
  • Learning Processing Ch. 8, Ch. 15 (Sections 1 - 2)
  • The Coding Train Objects and Images tutorial (optional)
10/2
  • Images
  • Objects and Images
Week 6 In Class Homework Readings
Note: I'll be out of town on 10/7 and Dominic Barrett will substitute for me.
10/7
  • Sound
  • Sample Playback
  • Synthesis
  • Audio Analysis
Due 10/15
10/9
  • Work on Midterm Projects In-Class
Week 7 In Class Homework Readings
10/15
  • Midterm Presentations Pt. 1
10/16
  • Midterm Presentations Pt. 2
  • Intro to p5.js and the web
Week 8 In Class Homework Readings
10/21
  • p5.dom Pt. 1
  • Document Object Model (DOM)
  • HTML Elements
  • CSS
  • Fonts
Due 10/28
10/23
  • p5.dom Pt. 2
  • Buttons
  • Sliders
  • Text Inputs
  • Callbacks / Events
Week 9 In Class Homework Readings
10/28
  • Data Visualization
  • JSON
Due 11/4
10/30
  • APIs
Week 10 In Class Homework Readings
Note: 11/4 is the last day to withdraw from this class with a W.
11/4
  • Webcam Video Capture
  • Image Processing
Due 11/11 Due 11/13
  • Learning Processing Ch. 15 - 16
  • The Coding Train Video and Pixels tutorials (optional)
11/6
  • Video
  • Working with Pixels
Week 11 In Class Homework Readings
11/11
  • Mobile Devices
Due 11/18
11/13
  • Final Project Proposal Presentations
Week 12 In Class Homework Readings
11/18
  • Final Project Check-in
  • WebGL
  • 3D Geometry
  • Textures
  • Perspective and Orthographic Cameras
Due 12/9
  • Work on your final project
11/20
  • Final Project Check-in
  • Lighting and Materials
  • Shaders
Week 13 In Class Homework Readings
11/25
  • Machine Learning with ml5.js
Due 12/2
  • Prepare usability and interaction questions for next week's playtesting session
Due 12/9
  • Work on your final project
11/27 No Class - Thanksgiving
Week 14 In Class Homework Readings
12/2
  • Final Project Playtesting
Due 12/9
12/4
  • Final Project Check-in
  • Beyond Processing / p5.js
  • WebMIDI
  • OpenSoundControl (OSC)
Week 15 In Class Homework Readings
12/9
  • Final Project Presentations Pt. 1
12/11
  • Final Project Presentations Pt. 2

Use of Electronic Devices

Laptops will be an essential part of the course and may be used in class during workshops and for taking notes in lecture. Laptops must be closed during class discussions and student presentations. Phone use in class is strictly prohibited unless directly related to a presentation of your own work or if you are asked to do so as part of the curriculum.

Academic Integrity

Violations of academic integrity are considered to be acts of academic dishonesty and include (but are not limited to) cheating, plagiarizing, fabrication, denying other access to information or material, and facilitating academic dishonesty, and are subject to the policies and procedures noted in the Student Handbook and within the Course Catalog, including the Student Code of Conduct and the Student Judicial System. Please note that lack of knowledge of citations procedures, for example, is an unacceptable explanation for plagiarism, as is having studied together to produce remarkable similar papers or creative works submitted separately by two students, or recycling work from a previous class.

Please review NYU’s School of Engineering’s academic dishonesty policy in its entirety. Procedures may include, but are not limited to: failing the assignment, failing the course, going in front of an academic judicial council and possible suspension from school. Violations will not be tolerated.

All work for this class must be your own and specific to this semester. Any work recycled from other classes or from another, non-original source will be rejected with serious implications for the student. Plagiarism, knowingly representing the words or ideas of another as one’s own work in any academic exercise, is absolutely unacceptable. Any student who commits plagiarism must re-do the assignment for a grade no higher than a D. In fact, a D is the highest possible course grade for any student who commits plagiarism. Please use the MLA or Chicago Manual style for citing and documenting source material.

This includes copying code for other sources, using code from other sources with only slight modifications and using code from other sources without a reference.

Educational Accessibility Statement

NYU-Tandon is committed to assuring equal educational opportunity and full participation for all students. The mission of the Office for Students with Disabilities is to provide individuals with learning differences (a.ka. disabilities) the same access to programs and activities as other students. We assist students to maximize their potential while helping them develop and maintain independence.

Students who believe they are eligible for course accommodations under the ADA or Section 504 or have had accommodations please contact New York University’s Moses Center for Students with Disabilities at 212-998-4980 or [email protected]. You must be registered with CSD to receive accommodations. Information about the Moses Center can be found at http://www.nyu.edu/csd. The Moses Center is located at 726 Broadway on the 2nd floor.

Faculty can provide course accommodations/modifications only after receipt of an approved accommodations letter from the Moses Center for Students with Disabilities. Accommodation letters can be provided to qualified students at any time during the semester, but grades earned before the faculty receives the letter cannot be changed.