Data Structures for Interactive Media

narrative flow diagram for Bandersnatch

Interactive media is authored by artists, but the audience does not directly read what we write. By packaging our creative ideas into machine-interpretable code and data, audiences can experience many different unfoldings of those ideas. Often in these projects, a tiny amount of code operates on a moderate amount of data to produce a vast space of possible experiences including a multitude of fine-grained details subject to the artist’s shaping. Data structures are the building blocks that are authored by the artist and manipulated by the computer as the work emerges. While there are many general purpose data structures we might use, many projects involve creating custom structures that specifically support the authoring process.

In this course, students will design and implement data structures. They will use these to build and share interactive experiences. Student also will be introduced to analyzing data structure design choices according to both technical (time and space efficiency) and artistic (authoring burden) criteria.

This course is designed primarily for students intending to declare the Art & Design: Games & Playable Media (AGPM) major.

Readings: Students will respond to readings (book chapters, blog posts, talk videos, news articles, etc.) in brief quizzes (1-paragraph free-text answers or multiple-choice questions). Response assignments may require editing and running code to answer questions.

Programs: Students will develop and share interactive media on Glitch.com using the JavaScript and TypeScript languages. In addition to using HTML5 primitives for user interaction, students may make use of P5.js for generating graphics and Tone.js for generating sounds.

Labs: Students are required to participate in weekly lab session meetings. Lab sessions will introduce students to new programming languages and authoring tools (not always the same as those used in programming assignments).

Exams: Students will take two multiple-choice style exams at home, on Canvas. Students are expected to seek immediate help on individual exam questions (from course staff, peers, and near-peer mentors) where possible, although the exam will be designed to make extended collaboration impractical. Many exam questions will directly involve programming in order to answer the questions. Students should be prepared to run their own small experiments to verify the behavior of code snippets.

Time and Place

Lecture (attendance optional but strongly recommended) takes place M/W/F from 02:40PM-03:45PM in Kresge Classroom 321.

Lab sections (attendance required for participation credit) take place Fridays (at various times) in Jack Baskin Engineering building 109. You should attend the section in which you enrolled.

- Section A: eliminated!

- Section B: Fridays 10:40am-11:45am

- Section C: Fridays noon-1:05pm

Course Staff

Instructor

Adam Smith amsmith@ucsc.edu (please call me "Adam" or "Professor Smith")

Office hours:

Thursdays 10am-11am in E2-269.

Fridays 3:45pm-4:45pm (right after class) at the picnic tables near the lecture room.

Teaching assistants

Tiffany Thang tthang@ucsc.edu (please call me "Tiffany")

CANCELLED Tuesdays 12pm-1pm in E2-309

CANCELLED Thursdays 2pm-3pm in E2-309

Isaac Karth ikarth@ucsc.edu (please call me "Isaac")

Mondays 10am-12pm (Online)

Henry Zhou hzhou55@ucsc.edu (please call me "Henry")

CANCELLED Tuesdays 1pm-3pm in E2-258 (right after Tiffany's, but in a different location)

Scoring and Grading

The course will be scored as following:

10% Lab activities (about 10 1-hour, in-lab activities)

50% Programming exercises (about 8 technical homework assignments)

20% Reading responses (about 25 online quizzes)

5% Midterm Exam (take-home)

15% Final Exam (take-home)

The mapping from numerical scores to letter grades will depend only on scores, and it will be decided during a discussion of the course staff after all scores have been finalized.

Incompletes: Students with score below a certain threshold in certain categories may be given the option to take an I grade instead of the normal letter grade and complete or re-attempt some of the assigned work during the next quarter.

Late work policy: Readings and Programs may be submitted/completed late for fractional credit up until 8am on Monday of finals week. No late Reading and Programs past this point will be considered. Missed labs can be made up in TA office hours by permission of the TA (not all activities can be made up). The late penalty is 20% regardless of how late the work is (automatically applied by Canvas).

Course Policies

Attendance: Attendance of lecture will not directly impact your score in the class. If you cannot reasonably attend a given lecture or your attendance would be distracting for your classmates, please instead review the webcast video recording for that lecture later on your own time.

Discussion Participation: Participation in in-class discussions is not necessary to earn points, however your contributions are valuable part of this course design. Your unique perspective can add to your peers' experiences in a way that the course staff alone cannot. As you decide how to participate, keep the UCSC Principles of Community in mind.

Laptop/mobile use in lecture: Your devices will likely play a major role in your ability to participate in (unscored) collaborative programming activities -- please bring them. Please only operate them when they are relevant to your activity in the class and consider that one distracting flash from a screen can derail the concentration of many other students. If you have an urgent need to communicate with others outside of class, please do it outside or leave the lecture (and watch the missed part of the lecture on the webcast system).

Collaboration: As hybrid artist-engineers / designer-programmers in training, you are expected to be able to productively work with others. Although reading and programming assignments are possible to complete individually, we expect you to talk with your peers, show them your screens, and make liberal use of copy-paste within your ad-hoc collaborative team before submitting your work. In deciding what and how to communicate with your peers, you should try to optimize how much others can learn from you and how much you can learn by teaching others. You can discuss solutions to assigned problems in Piazza, but the course may delete postings that do not respect the spirit of the collaboration policy. Note the attribution policy below.

Attribution: By default, we will assume any work you submit is artistically and technically entirely your own creation. Where this is not the case for your work, give credit to your collaborators and outside resources you used in your work using comments on your Canvas submissions.

Academic honesty: The Baskin School of Engineering has a zero tolerance policy for any incident of academic dishonesty. If cheating occurs, consequences may range from getting zero on a particular assignment to failing the course. In addition every case of academic dishonesty is referred to the students’ college Provost, who sets in motion an official disciplinary process. Cheating in any part of the course may lead to failing the course, suspension or dismissal from the Baskin School of Engineering, or from UCSC. The course staff is intent on setting up the course with many opportunities for you to learn from your peers and to not create unnecessary situations that might trap you into academic dishonesty.

Guests: Friends, family, and other faculty are welcome to join the lecture meetings (and even participate) with prior approval from the course instructor. That said, asking in-person just before lecture starts would be enough.

Alternate interpretations of readings: Many reading assignments require interpretation that goes beyond the contents of the assigned texts. If you miss points for picking an answer that you truly believe is the best available answer in your interpretation, you can discuss this interpretation with Adam in office hours with the possibility of adjusting your score (about 50% of sought adjustments are approved). Most often, this happens when a key phrase means something specifically different for you that it does not mean for others because of your individual background. Alternate interpretations based on incomplete readings of the source document or response questions (such as not noticing the key word "not" in a sentence) do not qualify here. The easiest way to check your interpretation before submitting your response is to talk it over with a classmate. Please do this.

Program revisions: Any student can earn all the way up to 100% points on a programming assignment by revising their program. If points were missed for not matching requirements, showing the revised project to the course staff (in person via office hours or consensual unscheduled live chat) can regain up to all of the missing points. Revisions will not make the program count as late. Late programs that otherwise satisfied all requirements can also be revised for up to full credit by making in-person improvements to the weakest aspect of the project.

Student Resources

Disability Resource Center: UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me privately during my office hours or by appointment, preferably within the first two weeks of the quarter. At this time, I would also like us to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact DRC by phone at 831-459-2089, or by email at drc@ucsc.edu.

CARE: Title IX prohibits gender discrimination, including sexual harassment, domestic and dating violence, sexual assault, and stalking. If you have experienced sexual harassment or sexual violence, you can receive confidential support and advocacy at the Campus Advocacy Resources & Education (CARE) Office by calling (831) 502-2273. In addition, Counseling & Psychological Services (CAPS) can provide confidential, counseling support, (831) 459-2628. You can also report gender discrimination directly to the University’s Title IX Office, (831) 459-2462. Reports to law enforcement can be made to UCPD, (831) 459-2231 ext. 1. For emergencies call 911.

CAPS: The Counseling and Psychological Services (CAPS) office provides a variety of counseling services to undergraduate and graduate students including individual counseling, groups and workshops, couple counseling, crisis services, on-campus psychiatry, the Let's Talk program, ADHD assessment, referrals to off-campus therapy, on-line self-help tools such as WellTrack, as well as a wide range of links to self-help resources on topics ranging from academic success, to depression, to general life issues.

Lecture Notes

Webcast videos of each lecture will be available here: https://webcast.ucsc.edu/ (username: cmpm-35-1 password: structure). Adam's Google Slides for each lecture will be posted below usually just before the beginning of each day's meeting. Videos will be posted on the webcast system within a few hours of the ending of each class meeting.

M 1/6 L01: Course Introduction
W 1/8 L02: Glitch Crash Course
F 1/10 L03: Collaborative Authoring

M 1/13 L04: Structuring Data in JavaScript
W 1/15 L05: Arrays, Objects, and JSON in P1
F 1/17 L06: Quest Generation with JSON

M 1/20 (no class; MLKjr Day)
W 1/22 L07: First Program Post-Mortem
F1/24 L08:  World Modeling with YAML

M 1/27 L09: Graphs in P2 (Adam was away at an anti-bias training event)
W 1/29 L10: References, Links, and Addresses
F 1/31 L11: Data Authoring Languages

M 2/3 L12: Storylets in P3
W 2/5 L13: Authoring Stateful Worlds
F 2/7 L14: Midterm Exam Preparation

M 2/10 (no class, use this time to take the midterm exam at home)
W 2/12 L15: Midterm Exam Discussion
F 2/14 L16: Additional P3 Guidance

M 2/17 (no class; Presidents' Day)
W 2/19 (no class; Academic Senate meeting)
F 2/21 L17: Programming Marble Machine

M 2/24 L18: Data Structures vs Abstract Data Types
W 2/26 L19: Analyzing a Stack Implementation
F 2/28 L20: Performing Music is (sometimes like) Executing Code

M 3/2 (no class)
W 3/4 L21: BDSI Results
F 3/6 L22: Developing without Glitch

M 3/9 (no lecture slides; we had some announcements and discussion on Zoom)
W 3/11 L23: Course Recap
F 3/13 L24: Final Exam Prep

Tuesday 3/17 noon-3pm: Final exam time (take the exam at home on your own schedule)

Course Summary:

Date Details Due