CMPM 290A, Fall 2017    
This course explores contemporary techniques for visualizing the ubiquitous complex, dynamic systems— biological, socioeconomic, environmental, political, interpersonal, etc— that govern, or perhaps define, our lives. Through creating interactive visualizations that effectively model these systems, that facilitate explorations of the ways in which these systems interact with other, and that expose or emphasize salient aspects of their operations, we can begin to think more deeply about how to make sense of them and how to predict their behaviors. The course will be programming intensive. Students will be introduced to D3.js for data visualization and Three.js for real-time graphics rendering, and will use these JavaScript libraries to complete a series of short assignments as well as a more in-depth final project. Weekly readings will include seminal and recent articles on information visualization, immersive analytics, and network science.
CS 523, Spring 2017    
This course explores the creative application of new media technologies, including graphics, visualization, audio, machine learning, and interaction technologies. We will focus especially on the use of generative models with which to simulate, accentuate, and ponder the complex systems in our lives. New media artists have traditionally been involved in exploring the creative, cybernetic potentials of new technologies and their cultural ramifications, using creative outputs to question how our awareness and thinking change when we introduce technology into our lives. We are currently in the midst of an explosion of new ideas related to automatic and interactive information processing. Advances in data mining and machine learning are rapidly finding their way into all corners of our lives. In addition to better understanding the nature of these advances (and learning how to make use of them), we will explore how to think critically about their transformative power. We specifically will focus on a class of machine learning algorithms that learn generative models. Students will become familiar with the TensorFlow library for machine intelligence, as well as any other software tools and languages that will help express and document projects (i.e., video software, Matlab, javascript frameworks, etc). In addition to the completion of weekly readings and assignments, students will be responsible for a series of projects that involve the creation, demonstration, and documentation of a series of three projects. Coursework will be organized around the development of these projects, to be completed individually or in small groups.
CS 424, Fall 2016    
Data visualization facilitates reasoning effectively about information, allowing users to formulate and test hypotheses, to find patterns and meaning in data, and to easily explore the contours of a data collection from different perspectives and at varying scales. This course will introduce students to the theory and practice of both information visualization (representations of abstract data sets) and visual analytics (analytical reasoning supported by visual interfaces). We will explore fundamental and contemporary topics in visualization, including: the use of visual modalities to represent different types of data; emphasizing salient data through the design and implementation of effective visual metaphors; how to create compelling narratives from data; how perception informs information design; handling uncertainty and ambiguity; and the representation of spatiotemporal data. In particular, we will focus on exploring interaction techniques to filter, sort, query, navigate, arrange, and analyze data. Students will work with real-world data sets, both static and streaming, and will learn to use contemporary programming frameworks for information visualization. We will read widely from both seminal work in the field of visualization as well as from recent papers from top-tier conferences (VIS, EuroVis, CHI) and journals (Transactions on Visualization and Computer Graphics, Computer Graphics Forum). In addition to the completion of weekly assignments, students will be responsible for a series of projects that involve the creation, demonstration, and documentation of novel interactive visualization techniques.
CS 491/DES 400, Spring 2016    
Creative Coding 1 investigates how contemporary technologies can inspire novel forms of art-making. Media artists and designers have been utilizing computers for innovative creative expression since the late 1960s; the recent proliferation of low-cost consumer grade devices with advanced sensing, display, and computing capabilities, such as smart phones, AR and VR headsets, IoT-enabled devices, drones, 3D printers, and microcontroller kits, makes possible a new era of creative exploration. The field of “creative coding” emphasizes the goal of expression, rather than function (although these goals are often intertwined) and creative coders combine computational skill with creative acumen. Students will learn current techniques for creating interactive multimedia software; by the end of the course students will have a better understanding of the challenges and opportunities that emerge when using new technologies for expressive purposes. The course will capitalize on the diverse backgrounds of the students in the class (design + computer science) and three required projects will be collaboratively developed in small teams. Each of these projects provides an introduction to creative coding programming paradigms for the web, for audio composition, and for virtual reality platforms (using Javascript, Max, and Unity3D, respectively). To contextualize these projects, we will read chapters of seminal texts in multimedia and recent articles from media arts conference proceedings.
CS 526, Fall 2015    
This course investigates advanced topics in contemporary computer graphics, with an emphasis on the creation of computational aesthetics projects. We will investigate current hardware-accelerated programming techniques using OpenGL and GLSL, as well as a range of tools that facilitate creating interactive graphics applications (such as WebGL, Three.js, and Unity3D). We will read widely from both seminal work in the fields of graphics and visualization as well as from recent papers from top-tier conferences and journals (TOG, SIGGRAPH, CG&A, TVCG, CHI, etc) and curated editions (GPU Pro, GPU Gems, ShaderX). In addition to the completion of weekly programming and writing assignments, students will be responsible for two projects that involve the creation, demonstration, and documentation of novel interactive graphics techniques. A particular focus of the course is on computational aesthetics, broadly defined to include novel image processing techniques, special effects for games and films, new media arts projects, and investigations into creative visual explorations of current computational topics, such as data mining, signal processing, machine learning, and natural language processing, among others.
CS 524, Spring 2015    
This graduate seminar is a forum for exploring advanced topics in information visualization and visual analytics. A primary goal of data visualization is to help people reason effectively about information, allowing them to formulate and test hypotheses, to find patterns and meaning in the data, and to easily explore the contours of data sets from different perspectives and at varying scales. This course will introduce students to the theory and practice of both information visualization (representations of abstract data sets) and scientific visualization (representations of empirically-gathered scientific data sets). We will explore fundamental and contemporary topics in visualization, including: the use of visual modalities to represent different types of data; emphasizing salient data through the design and implementation of effective visual metaphors; how to create compelling narratives from data; how perception informs information design; handling uncertainty and ambiguity; and the representation of temporal and spatial data. We will read widely from both seminal work in the field of visualization as well as from recent papers from top-tier conferences and journals (VIS, TVCG, CHI, SIGGRAPH, etc). In addition to the completion of weekly writing assignments, students will be responsible for three projects that involve the creation, demonstration, and documentation of novel interactive visualization techniques.
CS 488, Fall 2014    
This course provides students with an introduction to the theory and practice of modern real-time graphics programming. Emphasis will be placed both on OpenGL programming (especially including GLSL shader programming) and foundational concepts related to a variety of computer graphics topics, including: 3D transformations, curves and surfaces, space partitioning, lighting, interpolation, and texturing, among others. In addition to completing shorter assignments throughout the semester, students will be responsible for a final project that involves the creation, demonstration, and documentation of a novel real-time graphics technique. This course is co-convened: Upper-level undergraduates and graduate students are encouraged to enroll. Graduate students will be expected to complete more substantial projects and will be given more in-depth reading assignments.