Teaching
Courses taught at NYU Interactive Telecommunications Program & Interactive Media Arts Programs.
Courses I've developed
Web Tools for Creative Work
Software tools make our creative workflows possible. They allow us to create and edit media, design and sketch new ideas, build interactive experiences and more. Good tools expand our abilities. The best tools feel like an extension of ourselves, allowing us to work quickly and joyfully without considering the underlying interface. This course asks students to identify creative needs, scope, design and develop web-based software tools, with readings and reflections on the software tools which enable our creative workflows.
3D in the Browser
Course on spatial design and 3D web development with a focus on bringing meaningful content together in space, developing a personal aesthetic sensibility and learning to work creatively within constraints.
Machine Learning & 3D
We are living during a Cambrian explosion of new tools and techniques for capturing, creating, and experiencing 3D media, driven by recent research in machine learning and artificial intelligence. This class will provide students with a framework for navigating these emerging techniques as well as accessible entrypoints for incorporating them into their own creative processes.
Additional Courses I Teach (Dept. Syllabi)
Communications Lab: Hypercinema
- NYU ITP
- Fall 2021 · Fall 2022 · Fall 2023 · Fall 2024 (2×) · Fall 2025 (2×) · Fall 2026 (2×)
- 4 Credits / 14 Weeks
- Syllabus
Storytelling is a powerful method of communicating messages and engaging an audience. Whether you are building an expressive narrative world, documenting existing work, or pitching a new project, a carefully crafted story is a meaningful way to connect with others. This course examines new forms of communication and storytelling through an investigation of time-based media, media theory and collaborative storytelling through a series of weekly assignments and labs.
Communications Lab: Video & Sound
- NYU ITP
- Fall 2020
- 2 Credits / 7 Weeks
This course explores the fundamentals of sound and video as part of a storytelling practice. Students will learn the basics of both audio and video recording using audio field recorders and a variety of cameras as well as editing and exporting in Adobe Premiere & Adobe Audition. Students are encouraged to focus on collaboration and on developing constructive critique.
Dynamic Web Development
- NYU ITP
- Fall 2025
- 2 Credits / 7 Weeks
This course provides a framework for learning how to develop and program web applications with servers using JavaScript, Node.js with the Express framework, and a database. Additional topics will include login and session management, web services and APIs, and will lightly touch on front-end web development. The course will be a mixture of lecture and in-class collaborative coding, with weekly programming and reading homework.
Live Web
Streaming media, audio and video conferencing and real-time text and data messaging give us the ability to create new forms of live interactive experiences for participants. This course asks students to focus on the types of content and interactions that can be supported through live web technologies as well as explore new concepts around participation and collaboration. Specifically, we’ll look at new and emerging platforms on the web such as HTML5, WebSockets and WebRTC using p5.js, JavaScript and Node.js.
Shared Resources
Machine Learning GPU Server
- NYU ITP
- 2024 – Present
- Website (NYU Network only)
Creating accessible entrypoints for the department’s GPU resources in support of projects engaging with 3D, machine learning & AI. Supporting multiple courses and individual student research projects.
three.js WebRTC
- Open Source Template
- Code Repository
Simple starting point for building multiplayer 3D websites with integrated real-time audio/video chat.
SimpleMediasoupPeer
- Open Source Library
- Code Repository
High-level Javascript wrapper library for the powerful, low-level Mediasoup 'selective forwarding unit' media router library library, using the socket.io websocket library for signaling.