Coder Social home page Coder Social logo

programming-for-artists-s22's Introduction

Programming for Artists

ART 39552 • Electronic Design & Multimedia Program (EDM) • The City College of New York (CCNY) • Spring 2022

Course Information
Meeting Time Tuesdays 9:00am - 11:50am ET
Location Comp Goeth CG122
Instructor Ellen Nickles (she/her)
Contact [email protected]
On weekdays I'll do my best to respond within 24 hours
Student Hours On Zoom Mondays 12pm - 1pm ET or email me • Sign up here
Assignments Schedule and Assignments
Supplemental Materials Resources and Inspiration

Contents

Description

This course introduces programming the computer for creative applications. It presents computational thinking and fundamental concepts of programming including variables, conditionals, functions, iteration (loops), and data structures (objects and arrays) in the context of screen-based projects, such as for animation, text manipulation, and other media. The course assumes no prior programming knowledge and presents concepts in a manner that is accessible to everyone. Problem solving skills are emphasized for students to learn how to learn to program to express their creative ideas. The free and open source, JavaScript-based p5.js (p5) programming framework for creative coding is the primary vehicle for the course using the p5 web editor.

Learning Objectives

Upon completion of this course, we will be able to:

  • describe possibilities of computational thinking and coding for creative applications;
  • recognize p5.js (p5) as a Javascript framework for drawing graphics and working with media on the HTML Canvas element of a web page;
  • identify fundamental coding concepts, such as variables, conditionals, iteration (loops), functions, and data structures (objects and arrays);
  • identify approaches to debug errors in our code, including how to interpret error messages, and print messages to the Console of the p5 web editor;
  • practice and apply these coding concepts and debugging approaches in our creative work using p5.

Class Format

Programming for Artists is a 15-week course that meets once a week in person at the scheduled time. There are assignments to do before each class. These assignments are relevant to the material from previous classes and build towards a final project to share at the end of the semester.

This course embraces an active-learning approach with the belief that programming is best understood by doing. In keeping with this approach, class time is structured as a workshop and seminar instead of a lecture, relying heavily on group discussion and participation. Weekly reading and video tutorials to watch before class sessions will introduce fundamental coding concepts and creative programming techniques. Supplemental code examples are presented in class to work on together. Time is also allotted for sharing weekly assignments.

Community Guidelines

In keeping with the CCNY Community Standards, this course is committed to providing an inclusive, welcoming, and harassment-free space for everyone in our community. Harassment or discrimination in any form will not be tolerated, and this applies to any interactions and content.

Commitment to Diversity and Safer Spaces

We understand the classroom as a space for practicing freedom; where one may challenge psychic, social, and cultural borders and create meaningful artistic expressions. To do so we must acknowledge and embrace the different identities and backgrounds we inhabit. This means that we will use requested pronouns, respect self-identifications, and be mindful of special needs. Disagreement is encouraged and supported, however, our differences affect our conceptualization and experience of reality, and it is extremely important to remember that certain gender, race, sex, and class identities are more privileged while others are undermined and marginalized. Consequently, this makes some people feel more protected or vulnerable during debates and discussions. A collaborative effort between the students and instructor is needed to create a supportive learning environment. While everyone should feel free to experiment creatively and conceptually, if a class member points out that something you have said or shared with the group is offensive, avoid being defensive; instead approach the discussion as a valuable opportunity for us to grow and learn from one another. Alternatively, if you feel that something said in discussion or included in a piece of work is harmful, you are encouraged to speak with the instructor. (Source: voidLab by way of Stalgia Grigg)

Communication

During class, we will use our Miro board, a free and online, interactive whiteboard for collaborative activities and to share links and messages through the chat feature.

Outside of class:

  • You are expected to check your CUNY email frequently for course-related information, including but not limited to general announcements and updates. Please feel free to email me with any questions or concerns any time.
  • Student Hours will take place in Zoom. Sign up here
  • Expect to submit your assignments using a Google Form, and expect to receive assignment grades and feedback on a Google document shared only with you.
  • Our course site is hosted here on GitHub.

When in doubt, it’s ALWAYS better to contact me sooner rather than later about attendance, assignments, or anything else on your mind.

Support

I want you to succeed! If you’ve never learned to program before, then it might feel challenging at times, especially when it takes longer than expected to realize an idea that’s in your head on the screen or to fix a bug in your code.

Programming combines the planning and creative problem solving of making something new along with troubleshooting your program’s logic design and technical errors; all go hand-in-hand. Remember these words from Mimi Onuoha: “If you treat [both] like a puzzle it is pretty enjoyable. As a beginner you should try to get satisfaction with small steps while keeping in mind and writing down your big dreams.”

Ask for help

I encourage you to reach out to me outside of class to ask questions, share ideas/feedback, and discuss topics in detail. You are always welcome to email me and meet in Student Hours.

Part of learning how to program is learning how to ask questions about this material.

How to ask to for technical help:

  • Clearly describe what you want to happen, and what is happening instead.
  • Provide enough information in order for someone to recreate the problem.
  • Ideally, provide a link to the code itself.
  • In addition, here are some examples of code-related questions on our Resources and Inspiration page.

In general, be sure to consult our Resources and Inspiration page for additional programming resources.

If you ever feel that you are struggling with the material or falling behind, please do not hesitate to reach out so we can work together to provide you with the support that you need.

Equipment

You will need access to a computer running modern Internet browsers. All of the software that we will use is free, open source, and online.

Participation and Attendance

Participation

This class is highly participatory, and there are many ways to demonstrate your engagement with the course material and with your peers:

  • Ask and answer questions (be curious)
  • Try new things, take risks, and make mistakes (our class is safe place to learn this way)
  • Share your assignments for feedback (everyone is rooting for you)
  • Help your fellow classmates and provide feedback (they will help you in return)
  • Contribute to discussions and participate in group activities (we have so much to learn from one another)

Absences

Attendance is mandatory. If you think you will be absent, please contact me as soon as possible, at least 24 hours in advance if you can. CCNY policy allows two absences—excused or unexcused. At three absences, you will fail the course. An unexcused absence will lower your final grade by a half a grade. For example, two unexcused absences will lower an A to a B.

Lateness

You are expected to arrive to class on time and be ready to start at 9:00am ET. An unexcused lateness of 15 minutes or more is equivalent to 1/2 of one absence. Two unexcused late arrivals will count as one unexcused absence.

Assignments Overview

All assignments will be posted on Schedule and Assignments, and all are required. Unless otherwise stated, assignments are due the night before class on Mondays at 11:59pm, one (1) week after they are assigned. Assignments turned in late will receive partial credit as described in the Grading section below. If you anticipate any challenges meeting the assignment deadlines, please reach out to me so that we can consider your options together.

I recommend that you start the assignments as early in the week as possible, soon after each class meeting. Don’t wait until the night before it's due. Learning a programming language takes time to practice.

Weekly Homework

There are programming exercises and reading and/or video tutorials to complete each week.

Programming Exercises

  • In the first half of the course, there are weekly warm-up questions to practice newly-introduced programming concepts.
  • Throughout the semester, there are also open-ended, freestyle exercises to explore and apply the concepts in your own creative ways.
  • All exercises are expected to be submitted by the stated deadlines, and you should be prepared to show and talk about them in class.
  • Expect to submit your exercises using a Google Form. All submitted exercises will be available to the class so we can learn from one another. (There are always multiple creative solutions with code!)
  • As of this writing, there are ten (10) weekly homework assignments. Check the Schedule and Assignments for specific homework descriptions, due dates, and submission links.

Reading and Video Tutorials

  • Before class, read and/or watch the assigned tutorials about fundamental coding concepts and creative programming techniques to practice together and ask about when we meet in class.

Midsemester Exercise

The midsemester creative exercise is an opportunity to apply programming concepts from the first half of the course to create a self-defined project to share in class and practice using the vocabularly that you've acquired for describing technical work.

Final Project

The course culminates with the completion of a final project to be shared in class. You are expected to push your abilities to produce an open-ended creative project that builds off or is inspired by the concepts covered during the semester. As part of the final project, you are expected to present a project proposal, create a working prototype to share for peer feedback, and present a completed final project to our class.

There is no requirement to use a particular aspect of programming. Focus on an idea that excites you and choose the appropriate programming concepts and tools to help you realize it. You can take something you've already made and develop it further or create something entirely new. It’s okay to keep things simple and small in scope. If your project idea is a big one, consider documenting the larger idea but implementing just a small piece of it in code. Also consider making a final project for a small audience such as our class or for a single person like a family member, friend, or yourself as a way to focus your idea and design process.

Grading

Assignments will be evaluated according to the following criteria. You will never be penalized for submitting non-working code projects as long as you still submit what you have and document a solid degree of effort to problem solve. Such efforts might include trying different techniques after checking the p5 Reference, looking at examples, searching online, asking someone, and/or coming to Student Hours.

I will send your assignment grades and feedback on a Google document shared only with you.

Late assignments will be accepted until May 10, 2022 (Week 13). If you submit an assignment late, please let me know as I will not be automatically notified. (Updated)

Not submitting an assignment or not properly citing code sources are grounds for receiving a zero (0) on an assignment. For the latter, see the statement below on the Use of Free and Open Source Materials Including Code.

Programming Exercises and Projects

These are worth four (5) points, one (1) point for each of the following:

  • Compliance
    • Does the assignment address all the questions/prompts and follow the instructions?
  • Comprehension and effort
    • Does the assignment demonstrate understanding of the programming concepts and techniques introduced in class?
    • You are also welcome and encouraged to incorporate additional programming concepts not covered in class!
    • If the code doesn’t work, did you submit it anyway and document a solid degree of effort to understand the problem/s and your steps to troubleshoot when submitting the assignment? (It’s okay if you got stuck or struggled, just tell the story!)
  • Clarity and readability
    • Is your code easy to follow?
    • Is it properly indented and spaced?
    • Do variables and custom functions have meaningful names to someone else looking at the code?
    • Is it organized? Does it make sense where variables are declared and where code blocks are placed?
    • If applicable, it is well-commented with notes and are any code sources cited?
    • If you looked at the code in a month, would you understand what you did (or tried to do) and why?
    • Is there extra or unnecessary code? If so, is it clear that this code is not being used?
  • Content and concept exploration
    • (For the open-ended exercises and projects)
    • Is there evidence that you experimented or played with the possibilities of code to discover inventive outcomes?
    • Are the results distinct from the examples and other projects?
    • If applicable, does it extend your past work?
  • Timeliness
    • Was the assignment submitted on time?
  • Creative exercise: The creative exercise is worth five (5) points, and the evaluation will follow the above critera for the code.
  • Presentation: This is a four (4) minute presentation worth five (5) points, one (1) point for addressing each of the following:
    • What was your goal or inspiration?
    • What does your sketch do? Choose one feature or interaction to demo; which one is the most interesting to you and why? If it's interactive, deconstruct the interaction(s) to produce the effect(s).
    • Explain what you did in your code to produce that feature. Walk us through the related code, and practice any new vocabulary you’ve acquired for describing technical work. Talk about what programming concept(s) you are using, e.g. objects and arrays, nested for loops, toggle logic, custom functions, etc.
    • Describe one (1) thing you learned in making your sketch. For example, did something unexpected happen? Did you overcome a challenge?
    • What code-related questions came up for you? Or, what do you want to know more about or how to do?
  • Description: Final projects are a creative idea inspired by the concepts in this class and an opportunity to push your abilities to produce something that utilizes what you have learned. More information:
    • It is a three (3) week assignment to be completed in three (3) stages: Proposal (due Week 13), prototype to share in class for feedback (due Week 14), and a presentation of the completed project (due Week 15).
    • There is no requirement to use a particular aspect of programming. Focus on an idea that excites you and choose the best programming concepts and tools to help you realize it.
    • You can take something you've already made and develop it further or create something entirely new.
    • Final projects can be collaborations with anyone in any class.
    • Final projects can be one part of a larger project integrated with a different class.
    • Keeping things simple and small in scope is a plus. If your project idea is a big one, consider documenting the larger idea but implementing just a small piece of it.
    • Also think about making a final project for a small audience, even one single person like a family member or friend. . . or yourself. This can be a good way to focus your idea and design process. "Generalizing" the idea can come later (or maybe not at all).
    • Your project can also veer into a new direction that we haven't explored in class!
  • Proposal: This is a four (4) minute presentation worth five (5) points, one (1) point for addressing each of the following:
    1. Inspiration: Research your proposal and collect some notes. How did you become interested in this idea? Quotes, photographs, products, projects, people, music, political events, social ills? Do you have an drawings, images, videos, sounds, or text to help illustrate what's in your head? Do you have any of your own sketches and/or other people's sketches?
    2. Creative choices: What ideas you will explore to distinguish your piece and reflect your own point of view?
    3. Context: What is the story? 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?
    4. Plan: What steps do you need to take to bring your project to completion?
    5. Questions for your classmates: What are you unsure of, conceptually and technically? On what aspect(s) would you like feedback?
  • Prototype: A prototype of you project is worth five (5) points, and the evaluation will follow the above critera for the code.
  • Completed project: Your completed project is worth five (5) points, and the evaluation will follow the above critera for the code.
  • Presentation: This is a five (5) minute presentation worth five (5) points, one (1) point for addressing each of the following:
    1. Describe and demonstrate what your project does that emphasizes its computational aspects, e.g. is there animation, interaction, a computationally-generated color palette, etc.
    2. Walk us through the code related to the features that most interest you, and explain what you did in your code to produce those features. Practice any new vocabulary you’ve acquired for describing technical work. Talk about what programming concept(s) you are using, e.g. objects and arrays, nested for loops, toggle logic, custom functions, etc.
    3. What did you learn? What were some of the successes and challenges? If you struggled with your sketch and couldn't get things to work, you should feel free to put your energy into talking about what didn't work and vent any frustrations.
    4. Are there any next steps to further develop the project?
    5. How do you feel about WHY you might want to use code in your work (or not) now compared to the beginning of the semester?

Final Course Evaluation

Your final grade will be based on participation and attendance and the completion of all assignments, including the midsemester exercise and final project, according to this breakdown:

  • 20% Participation and attendance
  • 50% Weekly homework assignments (10 x 5% = 50%)
  • 10% Midsemester exercise (5% exercise, 5% presentation)
  • 20% Final project (5% proposal, 5% prototype, 5% project, and 5% presentation)

This class uses the standard A through F letter grading system, and grades will be determined according to this scale: A 100-94, A- 93.9-90, B+ 89.9-87, B 86.9-84, B- 83.9-80, C+ 79.9-77, C 76.9-74, C- 73.9-70, D+ 69.9-67, D 66.9-64, D- 63.9-60, and F 59.9 and below.

Last day to withdraw from course and earn a grade of 'W' on your transcript, which isn't counted towards your GPA and allows you to retake the course, is May 17th.

Statements

Academic Integrity

In keeping with CCNY’s statement on Academic Integrity, this course abides by the CUNY Policy on Academic Policy, which states that “plagiarism is the act of presenting another person’s ideas, research or writings as your own.” Here are some examples of plagiarism from the policy:

  • Copying another person’s actual words or images without the use of quotation marks and footnotes attributing the words to their source.
  • Presenting another person’s ideas or theories in your own words without acknowledging the source. Using information that is not common knowledge without acknowledging the source.
  • Failing to acknowledge collaborators on homework and laboratory assignments.
  • Internet plagiarism includes submitting downloaded term papers or parts of term papers, paraphrasing or copying information from the internet without citing the source, and “cutting and pasting” from various sources without proper attribution.

In our class, not citing the sources of any code, references, and/or inspirations you use, with the exception of examples specifically provided by the instructor or demonstrated in media assets for the course, is plagiarism.

Use of Free and Open Source Materials Including Code

Use of open source example code found on the internet is common to the practice of everyday programming and is encouraged in this class! Sharing and borrowing code is a normal part of programming. You will learn that you can find solutions to problems, examples, and techniques online. However, you should credit your sources in the code comments. With the exception of examples specifically provided by the instructor or demonstrated in the media assets for the course, code sources, references, and inspirations that are not clearly cited are grounds for receiving a 0 on an assignment.

  • Be careful. It sometimes happens that an artist places the entire source code for their sketch or artwork online as a resource from which others can learn. Assignments professors give in new media arts courses are often similar or you might also discover the work of a student, in another class or school, who has posted code for a project which responds to a similar assignment. You should probably avoid this code. At the very least, you should be careful about approaching such code for possible re-use. If it is necessary to do so, it is best to extract components that solve a specific technical problem, rather than those parts which operate to create a poetic experience. Your challenge, if and/or when you work with others' code, is to make it your own. It should be clear that downloading an artwork from someone's p5 account or GitHub and simply changing the colors would be disgracefully lazy. And doing so without proper citation would be outright plagiarism.
  • Also, by citing your code sources, others looking at your code can find the original references and learn, too. It’s the polite way to engage with the creative coding community.
  • This statement is adapted from Dan Shiffman’s Code! Course (Spring 2020) at New York University, Golan Levin’s Interactivity and Computation Course (Fall 2018) at Carnegie Mellon University, and Jasmine Soltani’s Programming for Artists Course (Spring 2020) at CCNY EDM.

Academic Accommodations

The AccessAbility Center/Student Disability Services ensures equal access and full participation to The City College of New York's programs, services, and activities by coordinating and implementing appropriate accommodations. If you are a student with a disability who requires accommodations and services, please visit the office in NAC 1/218, or contact AAC/SDS via email ([email protected]), or phone (212-650-5913 or TTY/TTD 212-650-8441).

Health and Wellness

In addition to the AccessAbility Center, CCNY also provides the following Health and Wellness Services, with contact information available from their website: Student Health Services, Counseling, Emergency Grants Program, and Gender Resources.

Benny's Pantry

Students who find themselves experiencing difficulties obtaining food every day or who lack a stable and safe place to live are urged to come to Benny’s Pantry for assistance. Benny’s Pantry is located on the ground floor of the North Academic Center (NAC) and is open to anyone within the CUNY community (students, staff, and faculty) in need of support. The pantry is open from 10am to 6pm and is self-serve. Additional emergency support for financial, health, and housing needs are also available through Benny’s. Please contact Dee Dee Mozeleski at [email protected] or Charles Ramirez at [email protected] for additional details.

Campus Safety

For nformation on emergency response and campus security, please visit the Office of Public Safety and Security at https://www.ccny.cuny.edu/safety.


Some of the language on this syllabus is drawn fom syllabi generously shared online. Thank you to Stalgia Grigg, Jasmine Soltani, Mimi Onuoha, Golan Levin, Dan Shiffman, and the many NYU ITP ICM professors!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.