Class repository for CCNY/CUNY Creative Computing Fall 2020 class
Office hours: Tuesdays from 6-7pm or email me
Contact: jsoltani@ccny.cuny.edu
This course is a graduate-level, introductory course to creative programming and interactive arts, oriented toward students with some or no prior programming experience. This course will cover programming concepts, such as variables, data types, functions, and algorithmic problem-solving, where a sequence of instructions describe the steps necessary to achieve a desired result.
We will apply and discuss computation in relation to a variety of media, such as 2D graphics, animation, image and video processing, interactive web experiences, and physical-digital interfaces. We will cover the basics of circuit design and analysis (both analog and digital), and interaction design utilizing sensors and microcontrollers. The class will provide context for these tools, and an overview of the contemporary and historical landscape of electronic and interactive art.
- Develop technical skills for creative coding in Processing, Javascript (p5.js), and Arduino.
- Learn best practices for designing software within an event-driven, object-oriented and functional framework.
- Demonstrate the ability to bring a creative electronics project from concept to completion through conceptualization, research, sourcing hardware, building circuits, and writing software.
- Understand the landscape of creative programming and apply critical thinking skills to analyze their work within historic, aesthetic, economic, and technological contexts.
- Develop personal learning strategies, project planning, troubleshooting, and problem-solving skills.
- Apply technical skills to weekly creative programming assignments, a midterm project, and a final project
- Present and discuss their work
- Critically engage with their own work as well as other students, giving thoughtful and appropriate feedback
This class will be virtual for the first half of the semester, and we will assess the possibility of in-person sessions for lessons focused on Arduino and circuits the second half of the semester.
Virtual class sessions will include:
- Discussion/Crit: Presentation of assignments, questions, discussion of reference material and artwork
- Lecture: Technical concepts, explanations of example code, & reference work -- this section will be recorded through video and made available to everyone
- Workshop: Exercises related to the weekly topic
Class session recordings in addition to video and text references on each week's topics will be comprehensive (don't worry about missing all or part of a particular class).
Homework & exercises can be submitted on Github or your personal blog. If you miss a class where an assignment is due, please note any questions you came across or whether particular feedback would be helpful along with your code and/or documentation. I will ask the class to give you feedback through our discussion channel.
We will pick our preferred software and distribute a link to the class in our first session.
- Sharing and borrowing code is a normal part of programming. You will learn that you can find solutions to problems, examples, and techniques online. You may want to build off of a project you find, or work a classmate has done. If you are incorporating code you found online into a project, you must cite the source. This is so others looking at your code can find the original reference, and it the polite way to engage with the creative coding community. If you continue to do this kind of work, you will benefit from this habit.
- If you are building off of a significant amount of code or recreating a project, the same rule applies. It is often a good exercise to recreate or remix pieces, but you must reference the original work.
- If you are borrowing code from or building off of work a classmate has done, the same rule applies. If it is a significant amount of code, or an idea or concept, you should take the extra step of asking permission before using their work.
- Clearly describe what you want to happen, and what is happening instead.
- Give enough information in order for someone to recreate the problem.
- Ideally, give a link to the code itself.
- Utilize the class discussion channel to get feedback from others in class!
There is no required textbook for this class, however the following texts are strongly suggested:
- Learning Processing, by Daniel Shiffman (online access to the text through CUNY/CCNY)
- Make: Getting Started with p5.js: Making Interactive Graphics in JavaScript and Processing, by Lauren McCarthy, Ben Fry, and Casey Reas (O’Reilly)
Recommended:
- Learn Electronics with Arduino: An Illustrated Beginner's Guide, by Jody Culkin and Eric Hagan
- Make: Electronics by Charles Pratt (O’Reilly)
Additional resources:
- Practical Electronics for Inventors, by Paul Scherz and Simon Monk
- Making Things Move, by Dustyn Roberts
- Interaction of Color, by Josef Albers
- The Art of Interactive Design, by Chris Crawford
- Dan Shiffman’s Coding Train Youtube Channel
- Processing tutorials, examples, and reference
- P5.js tutorials, examples, and reference
- The Nature of Code (free online) by Dan Shiffman
- Javascript & JQuery by Jon Duckett
- Arduino Playground
- Physical Computing Reference
Any reading required for a particular week will be clearly stated in the homework section of the weekly schedule.
- Weekly homework assignments: 40%
- Participation: 20%
- Midterm Project (due October 7): 15% The midterm project will be an opportunity to apply concepts from the first half of the course to create a self-defined project. I expect that for most if not all of the class, this will be a Processing sketch. It could be a new project built from scratch or build on previous homework assignments or exercises. The only requirement is well-organized code that demonstrates object-oriented programming.
- Final Project (due December 16): 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. It may be a Processing sketch, a p5 sketch, an Arduino sketch, or even some combination of these or other software or libraries. For the proposal, include reference material that will be used to contextualize your work and have a plan to complete the project.
This virtual class has no attendance policy, but if you miss synchronous class sessions please submit your work and feedback to classmates via other channels.
If you are a student with a disability requesting accommodations, please contact The AccessAbility Center/Student Disability Services (AAC/SDS). For more information, included here are links to examples of academic adjustments and auxiliary aids, information about registering with AAC/SDS, and forms.
CCNY also provides student health and counseling services.