Course Syllabus
Introduction
This course introduces the students to fundamental methods of Generative Arts and Design. The first half of the course focus on both constructive and search-based approaches and the second half focus on data-driven approaches, mainly using Neural Network techniques. Every week we will discuss a new method, including how to apply them to generate artifacts in domains such as visual arts, music, architecture, video games, etc. Methods will be implemented with Javascript and P5.js (Processing).
Prerequisites
CMPS12B: Introduction to Data Structure.
I expect that you are comfortable programming in one programming language and that you know basic data structures as well as the classic algorithms associated to them. Knowing Javascript is not expected in this course, but I assume you can quickly learn it as we discuss the methods.
Teaching Staff
- Instructor
Lucas N. Ferreira (lferreira@ucsc.edu)
Office Hours: E2-280, 1:00-3:00pm Mondays (or by appointment).
- Teaching Assistant
Max Kreminski (mkremins@ucsc.edu)
Office Hours: E2 393, 10am-12pm Fridays (or by appointment.)
Textbooks
- The Nature of Code: Simulating Natural Systems with Processing. Links to an external site.
- Generative Design: Visualize, Program, and Create with JavaScript in P5.js.
- Generative Art: A Practical Guide Using Processing.
- Procedural Generation in Game Design.
- Procedural Content Generation in Games: A Textbook and an Overview of Current Research. Links to an external site.
- Algorithmic Composition: Paradigms of Automated Music Generation.
- Eloquent JavaScript. Links to an external site.
Lectures
Days & Times: TuTh 01:00PM-04:30PM
Location: Soc Sci 2 179
- Week 1
-
Lecture 1: Introduction (Tu 06/25)
Links to an external site.
-
Lecture 2: Javascript, Processing and p5.js (Th 06/27)
Links to an external site.
Assignment 1: Music Visualization with Particle Systems
- Week 2
Assignment 2: Terrain Generation with Perlin Noise
- Week 3
-
Lecture 4: Cellular Automata (Tu 07/09)
Links to an external site.
-
Lecture 5: Generative Grammars (Th 07/11)
Links to an external site.
Assignment 3: Interactive Artist NPC with Generative Grammars
- Week 4
-
Lecture 6: Search (Tu 07/16)
Links to an external site.
-
Lecture 7: Evolutionary Algorithms (Th 07/18)
Links to an external site.
- Week 5
-
Lecture 8: Markov Models (Tu 07/23)
Links to an external site.
-
Lecture 9: Neural Networks - Perceptron (Th 07/25)
Links to an external site.
Assignment 5: Music with Markov Chains
- Week 6
-
Lecture 10: Neural Networks - Multilayer Perceptron (Tu 07/30)
Links to an external site.
-
Lecture 11: TensorFlow.js (Th 08/01)
Links to an external site.
- Readings:
- Week 7
-
Lecture 12: Recurrent Neural Networks (Tu 08/06)
Links to an external site.
-
Lecture 13: Autoencoders (Th 08/08)
Links to an external site.
- Week 8
-
Lecture 15: GANs (Tu 08/13)
Links to an external site.
-
Lecture 16: Project Presentation (Th 08/15)
Links to an external site.
- Readings:
Grading
Your grade is broken down as follows:
- Class Participation (in-class exercises): 10%
- Programming Assignments: 50%
- Final Project: 40%
The mapping from Letter grade to score is the following:
- A+ = 100-97%
- A = 97-93%
- A- = 93-90%
- B+ = 90-87%
- B = 87-83%
- B- = 83-80%
- C+ = 80-77%
- C = 77-70%
- D = 70-60%
- F = 60-0%
Assignments
There will be 5 programming assignments in Javascript/p5.js due weekly on Thursday at 12:30pm.
- Submissions
Assignments will be submitted on Canvas as zipped project folders containing all of the necessary HTML/Javascript code.
- Late Policy
Late submissions of assignments will be penalized 25% off and will be accepted no more than 1 week late.
Final Project
The final project is intended for you to create an expressive and interactive experience with all the concepts learned during the course.