Creative Coding I

Prof. Dr. Lena Gieseke | l.gieseke@filmuniversitaet.de | Film University Babelsberg KONRAD WOLF


ad_mercedes
[Ads of the world]

Syllabus

The main goal of the course Creative Coding I: Design and Communication is for you to explore with text-based programming different forms of designs and communication, be it through visuals, audio, text or data. Applications focus on a creative context investigating aesthetics, human experiences and insight, rather than practicality. At the same time, you strengthen your skills to solve complex problems in a structured manner and to advance your programming techniques.

As one of our main means of communication is the web, we focus on web-based programming environments such as p5, three.js and JavaScript in general. This gives us the unique opportunity to share our work easily and potentially with the community of all web users.

This course is a requirement for ā€˜Creative Coding IIā€™, which is held in the summer term. Both courses must be attended in order.

Learning Objectives

With this course, you will

  • advance your ability to write code,
  • advance your ability to conceptualize and design,
  • acquire fundamental knowledge of web technologies,
  • use software development in a creative context, and
  • implement specific design goals.

Time and Place

  • Wednesdays and Thursdays, 10:00-13:30, room 6119
  • 9 sessions
  • 3 SWS, 4 ECTS (120h in total)
    • ~4h (36h in total) for each class
    • ~6h (36h in total) for each exercise
    • ~40h (= 5 working days) for the final project at the end of the semester

Topics

Session Topic Subtopics Tech Libraries / Tools
1 Emergence Motivation Ā  Ā 
Ā  Ā  Creative Coding Material management Git, GitHub
Ā  Ā  Setup Markdown Visual Studio Code
Ā  Ā  2D Design Ā  p5
2 Ā  Interaction Programming overview Ā 
3 Instructions Algorithmic Thinking Languages & Environments JavaScript
4 Connection The Web html, css, js Ā 
Ā  Ā  Going Online Local Webserver Ā 
Ā  Ā  Ā  Development workflow Ā 
5 Space 3D Ā  three.js
Ā  Ā  Ā  Local Package Installation Node, npm, vite
Ā  Ā  Model Loading Ā  Ā 
Ā  Ā  Gui Ā  Ā 
6 Asynchronism Higher Order Functions Function notations Ā 
7 Systems Software Deployment Vercel
Ā  Ā  UI Frontend React
8 Usefulness Portfolio Ā  React Three Fiber

Please note that schedule and topics are under constant development and subject to change!

Method of Instruction

This class is organized around open-ended tasks rather than formal programming problems, to accommodate different levels of programming experiences. For expanding your skills, it is up to you to take on new technical and creative challenges while completing each weekā€™s exercise. Even though the class covers a range of topics, for the majority of learnings, especially regarding text-based programming, it is up to you to find the relevant next steps to take.

The class is structured as follows:

  • Each session includes a topic (e.g. emergence, connection), some tech (e.g. p5, three.js, frontend, backend) and an open-ended programming task.
  • We discuss the topic and tech in class and there might be some additional content in a script, covering theory and giving contexts.
  • You are encouraged to further explore the topic and tech based on your individual motivation and prior knowledge.
  • Each week, you have to work on a programming assignment, which is related to the sessionā€™s topic and tech.
  • There might be some class time dedicated to working on the assignments and to reviewing your results.

The attendance of the lectures is not mandatory. However, not all lecture content is covered by the scripts and exercises.

Organization

  • Each class is an entity and refers to one topic.
  • Each week, one assignment (called session) is given out. The session covers two classes.
  • You have to work through all tasks of the sessions on your own time.
  • You need to upload the sessionā€™s results by the given deadline (usually Tuesday evening).
  • I allow a grace period for addressing issues on a case-by-case basis. However, for your submission to count, you have to have at least 50% of the points by the given deadline.
  • We take a look at your submissions and wrap up the session after the deadline, usually in the following class.

Sessions

Each week, you get an open-ended programming task, which always includes the following three components:

  1. Conceptualization
  2. Form & Design
  3. Implementation

Your submission does not necessarily need to be a completed project. This also means that, e.g., the concept for your assignment might be more complex than what you actually implement. Nonetheless, I highly recommend that you work on your ability to come up with a plan that you can actually implement.

Unless stated otherwise:

  • For each week, you have to submit something self-contained, as weekly sessions are not meant to be connected.
  • A session concludes with the question about your own personal learnings and how you challenged yourself in that session. Please take this task seriously (this question also receives points).
  • You are allowed to work in groups for the practical tasks, but each group member has to submit their own learnings.
  • You can submit session assignments until February 28th. For submissions started after the given session deadline, I reduce 15% of the total points of that session.

As assignments and tasks are flexible, you are equally responsible to get the best out of this lecture!

Final Exercise

  • The last exercise is mandatory to pass the class.
  • You are required to work on the final exercise for about 40 h, meaning roughly five days of work.
  • The project should refer to one of the lecture topics. You must come up with your own task.
  • You can also base your project on a tutorial from the internet. The result of the tutorial is not enough though, you have to develop the project somehow further and make it your own.
  • The (hard) deadline for the final exercise is February 28th.
  • The official work period for the final assignment is Feb. 1st - Feb. 28th.
    • The deadline for the final project is strict and for a late submission, I reduce 15% of the total points of the final exercise.
    • If you are sick within the official work period, you can get a deadline extension based on a doctorā€™s note (ā€œAttestā€).

Evaluation

The requirements to pass the course are

  • more than 50% of all assignment points,
  • less than two exercises with 0 points, and
  • the final exercise, which is an individually chosen task.

There will be a grade.

Grading

The grade is computed from the assignment points (50%) and the final exercise (50%).

Criteria

As the exercises are mainly open-ended problems, the grading criteria are based on

  • your personal learnings,
  • conceptual mastery and idea,
  • the (e.g. visual) quality / the design,
  • engineering effort, code organization, code quality, and
  • the amount of work put in.

Some tasks might have specific grading criteria, which are then indicated per task.

Materials

  • All materials are handled through the GitHub repository lecture_ws2425_creative_coding_1 and you also hand in your results through GitHub.
  • I usually give clear instructions on where to save your files and how to name them. Please follow these instructions. Having everything neat and well-structured greatly improves my peace of mind.
  • Usually all session materials are published the morning before the session. Some materials might be updated after the session. I let you know of any relevant updates.

Structure

Materials are structured as follows:

  • In Sessions you find a folder with an index for each week (session = week).
    • The README.md in each session folder gives you an overview of all the readings, assignments, practical exercises, etc. that you have to do for that week - it is your todo list! I recommend starting your work with going through that file.
  • In Scripts you find all scripts.
    • Scripts are organized by topic. This means that I might continuously add content to an existing script, e.g. the setup script, across multiple sessions.
  • In Slides you find all slides.
    • Please keep in mind that I am always updating the slides before the scripts. This means that on some occasions the script might not be in line with the slides and might contain content from the previous years.
  • In Submissions you submit your work each week to the folder with your last name and a folder with the session index. You will submit all assignments to the same folder (the one with your last name).
    • Please do not submit files larger than 25 MB. Upload large files, e.g., in an Owncloud folder. Follow the same folder naming scheme as in Github.

Policies

  • Plagiarism: in programming and in times of AI-tools, the concept of plagiarism is relatively elusive. We are working with open-source tools and libraries, building upon the work of a multitude of people. You are encouraged and expected to tap into resources available online, copy-paste and tweak code you may not fully understand. However, it is categorically forbidden to outsource work to people outside the course (e.g. your friend from CS) or copy & paste, meaning plagiarize, assignments as a whole from others.
  • Tools and utilities: In general, you are allowed to use any tools you want, also AI-tools, but you are required to list and briefly describe the usage of such tools in your submission. However, in this class, I recommend that you follow my guidance on when to employ the help of an AI-tool and when not. Please, always make sure to utilize such tools for supporting your learning!
  • Absences: you are responsible for what happens in class whether you are here or not. I do not repeat content for you that you have missed because you were not in class.
  • Participation: you are invited, encouraged, and expected to engage actively in discussion, reflection and activities. Also, you can exist for a few hours without chatting, texting or emailing on your computer and cellphone. I notice it and perceive it as rude if you donā€™t pay attention, and I prefer that you only come to class if you are actually participating.
  • Recording: There are no recordings of the classes. No student may record any classroom activity without consent from me. If you have a disability such that you think you need to record classroom activities, get in touch with me.

[Adapted from P. Pedercini with permission.]

Inclusivity Statement

It is my intent that students from all diverse backgrounds and perspectives are served by this course, and that the diversity that students bring to this class is viewed as a resource, strength and benefit.

It is my intent to present activities that accommodate and value a diversity of gender, sexuality, disability, age, socioeconomic status, ethnicity, race, and culture. I gladly honor your request to address you by your preferred name and gender pronoun. I commit to make individual arrangements to address disabilities or religious needs (e.g. religious events in conflict with class meetings and deadlines). Please advise me of these preferences and needs early in the semester so that I may make appropriate changes to my plans and records.

Debate and free exchange of ideas is encouraged, but I do not tolerate harassment, i.e. a pattern of behavior directed against a particular individual with the intent of humiliating or intimidating.

[Adapted from P. Pedercini with permission.]

Stress Culture

This class is demanding as I want you to further your skills, thinking and views of the world. This is hard. Also, as we are an interdisciplinary group, there is probably for each topic someone who you think is doing a much better job than you. Please focus on your own journey and trust the process.

Nevertheless, take care of yourself. All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available at Filmuni, and an important part of the university experience is learning how to ask for help. If you or anyone you know experiences any unbearable academic stress, difficult life events, or feelings like anxiety or depression, I strongly encourage you to seek support. The Filmuni offers different services and counseling for you.

[Adapted from P. Pedercini with permission.]

Last But Not Least

Next to all the super important learnings, also donā€™t forget to have fun with this class! šŸ¤©