Course Information

Course Description

In this course students will learn the fundamentals of computation, software design, and web technologies, through a series of creative projects. The course is intended to equip students with the skills to develop artistic and business projects that include a significant computational component. Topics such as variables, functions, components, and functional and reactive programming will be brought together to create interactive applications, generative art, and other domains. Within the framework of these creative projects students will develop a greater understanding of how computer programs operate, be exposed to various concepts used to create experiences and interactions, and become more familiar with some of the technologies that constitute the internet. This course is intended for students with no prior programming background.

Course Overview and Learning Outcomes

Students will learn computational thinking, program design, and debugging, within a creative context. They will learn elementary theory of color, sound, animation, sound, and text, in the course of writing programs that use these elements. Over the course of a series of individual and group projects, they will develop project development and project management skills and presentation skills. They will reflect on their workflows as an example of a process, on similarities between the process of developing a program and improving a workflow, and on other wider applications of computational thinking and systems thinking. They will learn some tools of coding, web development, and collaborative programming.

Learning Outcomes

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

  • Practice and produce the fundamentals of programming, focusing on:
    • variables, values, and variable mutation;
    • data types, operators, and expressions;
  • procedural statements — assignments, conditionals, and iterations (loops);
  • functions;
    • use side effects, and
    • pure functions that return values;
  • Recognize data formats and data structures, and employ data organization and management for efficient access, modification and/or visualization, utilizing:
    • arrays;
    • objects;
    • JavaScript Objects; and
    • JavaScript Object Notation (JSON);
  • Demonstrate Object-Oriented Programming (OOP) and integrate the concept into practical applications by:
    • utilizing predefined classes;
    • designing and implementing classes; and
    • developing and manipulating arrays (lists) of objects;
  • Discuss and apply the concept of modularity and reusability, utilizing the programming concepts and techniques mentioned above;
  • Practice and display troubleshooting skills and debugging strategies, including:
    • ability to use online reference materials and example codes; and
    • uses of the developer console for debugging;
  • Combine fundamentals of web development with visual programming techniques to produce creative web pages, exploring;
    • basic uses of HTML DOM and CSS; and
    • the relationship between JavaScript (JS), p5.js, a web page, and a browser;
  • Produce an generative/interactive web project by utilizing a combination of concepts and techniques discussed and demonstrated throughout the course; and
  • Recognize the contexts of generative art, algorithmic animation, data visualization and human-computer interaction, and discuss how creative coding would change the future digital arts.