NYU | Tandon School of Engineering | Integrated Design & Media

DM-GY 6063 | Creative Coding
Fall 2023, Section D

Important Dates (for this course)


Course Description

This course is an introductory programming class, appropriate for students with no prior programming experience. Traditionally, introductory programming teaches algorithmic problem-solving, where a sequence of instructions describe the steps necessary to achieve a desired result. In this course, students are asked to go beyond this sequential thinking and to think concurrently, modularly and critically about the creative potential of software. By its end, students are empowered to write and read code for event-driven, object-oriented, graphical user interfaces like websites, interactive installations, games and others.

Prerequisites

None.

Course Objectives

Students in this course will:


An Outline of the Course

We will meet in person for class once a week. During this time we will cover new topics on different aspects of creative programming through presentations, examples and short coding exercises.

We will also devote class time to review homework assignments and discuss assigned readings.

Some of the other class activities are discussed in detail below.

Assignments

You will have weekly programming homework assignments to further practice and develop the concepts covered in class. These will be simple exercises at first, but will get more substancial as the semester progresses. They won’t necessarily get more difficult, but will gradually become less prescriptive and allow for greater creative flexibility and experimentation.

In addition to the code, these assignments will require a short writeup that includes: sketches of the initial idea, description of your strategy, experiments that didn’t work, experiments that worked, but were left out for other reasons, any notes on aspects of the project you would like to keep working on if given more time, technical and conceptual references, etc.

Assignment submissions will be made through Brightspace.

Readings

Each week you will also read and respond to a short text about programming, technology, and/or social issues invulving programming and technology.

The responses will be short, 200-word texts written to express your opinion and feelings about the text and the subject.

Class Participation

Each week we will review the homework assignment and the readings during class. You are expected to be actively engaged in these discussions, whether it’s presenting your work or receiving feedback from other students.

Projects

There will be two larger multi-week projects throughout the semester, the first around week 5 and the other around week 11.

The shape, form and content of these projects are largely up to you to define, but the projects should demonstrate significant mastery over the technical concepts discussed in class.

You will be responsible for keeping a blog that documents progress of the project, and for presenting the final version of your project in class.

Quizzes

We will have sporadic online take-home quizzes. These will cover technical concepts and will be used not only to test your knowledge, but mostly to give me information about how you’re progressing in the class.

Grading

The grade for this course will be determined according to the following:

Activity % of Final Grade
Weekly Programming Assignments 25%
Weekly Reading Responses 20%
Quizzes 5%
Midterm Project 20%
Final Project 30%

Letter grades for the entire course will be assigned as follows:

Letter Grade Points Overall Percent
A 4.00 90% - 100%
B+ 3.33 85% - 89.99%
B 3.00 80% - 84.99%
C+ 2.33 75% - 79.99%
C 2.00 70% - 74.99%
D+ 1.33 65% - 69.99%
D 1.00 60% - 64.99%
F 0.00 0% - 59.99%

Course Schedule (subject to change)

Week 01 (2023/09/06)

Week 02 (2023/09/13)

Week 03 (2023/09/20)

Week 04 (2023/09/27)

Week 05 (2023/10/04)

Week 06 (2023/10/11)

Week 07 (2023/10/18)

Week 08 (2023/10/25)

Week 09 (2023/11/01)

Week 10 (2023/11/08)

Week 11 (2023/11/15)

Week 12 (2023/11/29)

Week 13 (2023/12/06)

Week 14 (2023/12/13)

Week 15 (2023/12/20)


Expectations for Work Outside the Classroom

Students should expect to spend roughly 5 hours each week on supplemental work in this course. This may include reading assignments, homework assignments, writing assignments, research, studying, etc.

Office Hours

I will be available for 2 hours a week to answer questions, help with assignments, chat about creative code, etc. These will be in the IDM Grad Lab (Room 325A) on Mondays and Wednesdays from 10:00am to 12:00pm.

These are not mandatory. If you have questions or need help with some aspect of the material, but are unable to attend these, send me an email and we’ll find a time to meet.

Required Materials

Textbooks

There are no required books for class. Additional reading materials will be distributed throughout the semester.

Optional Textbooks

These books are excellent companions for the materials we’ll be covering:

Resources


Course Policies

Attendance

You are expected to attend all class sessions. Absences due to non-emergency situations will only be cleared if you let me know a week or more in advance, and even then only for compelling personal or professional reasons (e.g., attending an important conference, going to a wedding). If you’re unable to attend class due to contagious or incapacitating illness, please let me know by e-mail or slack before class begins.

Each unexcused absence will deduct 5% from your final grade. If you have three or more unexcused absences, you risk failing the course.

Lateness

Be on time to class. If you’re more than fifteen minutes late, or if you leave early without letting me know ahead of time, it will count as an unexcused absence.

Late Assignments

Late assignments will be penalized 10% of the total grade per day they are late. For example, the maximum grade possible for an assignment that is worth 100 points, would be 90 points if turned in the day after the due date, 80 points if turned in two days after the due date, etc…

“Incomplete” Grade

Under certain dire and unforeseen circumstances, like a critical emergency, a student may request an Incomplete/I grade. Faculty does not have the ability to give a grade of Incomplete without prior approval from the Office of Student Advocacy.

It is therefore the student’s responsibility to contact the student advocate and describe their circumstance requesting an incomplete. If this is granted, the advocate will reach out to the faculty member, who will work with the student to develop a detailed plan for completion which includes a specific end date.

Tech Etiquette

You’re welcome to use laptops/devices in class to take notes, work on exercises and look up references, but be mindful of other students and close laptops/devices during presentations and discussions. For context: Why I Just Asked My Students To Put Their Laptops Away.

Social Etiquette

These Social Rules from The Recurse Center should be kept in mind during class discussions, presentations, critiques:

Also, these observations from a discussion about ethics in tech are a helpful reminder:

“There is a general rule for comedy and art: always punch up, never punch down. We let comedians and artists and miscellaneous jesters do outrageous things as long as they obey this rule. You can poke fun at yourself, you can make a joke at the expense of someone with higher social status than you, but if you mock someone with lower status, it’s not cool.”

“If you make a joke, and people get really offended, it’s almost certainly because you violated this rule. People don’t get offended randomly. Explaining that ‘it was just a joke’ doesn’t help; everyone knows what a joke is. The problem is that you used a joke as a means of being an asshole.”

Be sensitive to what your classmates might find offensive, triggering or violent and be graceful and listen carefully when your work gets called out for being offensive, triggering or violent.

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 our 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.

A Special Note on Open Source and “Found Code”

There’s an amount of sharing and re-using that will happen in this course due to the open source nature of the libraries, tools and learning materials we will be using. Plus a lot of assignments will be turned in using github, a platform for sharing code and other content.

Nonetheless, we have to be careful and conscious about the difference between using available tools that help with our learning experience and submitting other people’s work as our own. It’s not hard to find code online that will do things similar to, or exactly alike, the things you will developing for this class. It is NOT ok to use those as part of an assignment or project for this class.

On the other hand, it’s also not hard to find code/libraries/packages/examples that solve specific technical tasks that are part of a larger project or assignment. For example: a library that converts gifs into movies or code for working with different text encodings. These are specific tasks that we aren’t going to solve on our own, so using an open source solution is acceptable and expected.

You are expected to cite any tutorials, examples, libraries or inspiration that you use for our work. Sometimes the authors have a specific way they’d like their work cited (CC licenses), otherwise a name and a link is fine.

TL;DR: Copying assignment code from other sources, using any code from other sources with only slight modifications or using any code from other sources without a reference is plagiarism.

If there are questions about a specific situation, please ask.

A Special Note on LLMs and Large Diffusion Models

This is a class about creative uses of technology, and LLMs and interfaces like ChatGPT, Midjourney, etc definitely have their place in discussions about technology, society and creativity. Being in the environment we are in, it has become impossible to ignore these tools.

Having said that….

You may use AI interfaces to help generate ideas and images as it pertains to the brainstorming or ideation portions of a project and/or to generate images for presentations, as long as proper credit is given.

You may NOT submit any work generated by these interfaces as your own.

Given that this is an introductory course to programming, and we’re all starting fresh, I don’t believe there is any situation that will warrant the use of these tools for generating code. Save that for a future when you might have to write tedious software for parsing/flipping/transforming database entries. There should be an aura of fun to the code you are writing, and a sense of accomplishment in learning how to make computers do unexpected things, that doesn’t justify the use of tools that generate code.

Likewise, writing/response assignments will be short and personal, asking not only for your understanding of the material, but also your thoughts, interpretations, opinions and concerns about certain topics related to art, design, society and technology. Don’t sell yourself short! I want to hear your voice and words regarding these topics.

As always, if there are any questions about a specific situation, just ask.


Academic Accommodations

If you are a student with a disability who is requesting accommodations, please contact New York University’s Moses Center for Students with Disabilities at 212-998-4980 or mosescsd@nyu.edu. You must be registered with CSD to receive accommodations. Information about the Moses Center can be found at https://www.nyu.edu/csd. The Moses Center is located at 726 Broadway on the 2nd floor.

If you are experiencing an illness or any other situation that might affect your academic performance in a class, please email the Office of Advocacy, Compliance and Student Affairs: eng.studentadvocate@nyu.edu.

Inclusion

The NYU Tandon School values an inclusive and equitable environment for all our students. I hope to foster a sense of community in this class and consider it a place where individuals of all backgrounds, beliefs, ethnicities, national origins, gender identities, sexual orientations, religious and political affiliations, and abilities will be treated with respect. It is my intent that all students’ learning needs be addressed, and that the diversity that students bring to this class be viewed as a resource, strength and benefit. If this standard is not being upheld, please feel free to speak with me.


Credits

This syllabus has been inspired by previous versions of this course and includes words/ideas by: