Teaching Philosophy

I really enjoy teaching! I'm a strong believer in "chalkboard'' lectures for undergraduate courses, rather than projected PowerPoint presentations. Over the past few years I've recorded all my lectures in the form of video capture of my computer desktop accompanied by my voiceover. These lectures include paper-and-pencil derivations captured by an attached document camera, real-time programming and examples, external researchers' programs running on test images, and web pages and videos from research groups and visual effects studios. I both provide these videos to the class and upload them to Youtube, where I have a personal channel of videos illustrating signal processing, image processing, and computer vision concepts. Please take a look at my annotated video lectures on Digital Signal Processing, Introduction to Image Processing, Engineering Probability, Computer Vision for Visual Effects, and Computational Creativity.

Another key component of my teaching style is the use of tools like Piazza and Gradescope, which make it easy to collect and grade homeworks and respond to student questions quickly.

In 2014 I won the Rensselaer School of Engineering Classroom Excellence Award, and in 2018 I won Rensselaer's Trustees' Outstanding Teacher Award.

ECSE 4964/6964: Computational Creativity

Fall 2023

Creative applications of generative artificial intelligence have exploded in the past years, including image generation tools like Stable Diffusion and DALLE-2 and text generation tools like Chat-GPT3. This course surveys the theoretical foundations of these tools, focusing on generative models and self-supervised learning, as well as explore the historical and ethical considerations involving the procedural generation of art. Students apply cutting-edge tools for generating creative content and critique each other's work. My video lectures for this course are available here, and you can find more information at the course website.

ECSE 4620/6620: Computer Vision for Visual Effects

Fall 2007, 2008, 2011, 2014, 2017, 2019, 2021; Spring 2015

This course emphasizes research topics that underlie the advanced visual effects that are becoming increasingly common in commercials, music videos and movies. Topics include classical computer vision algorithms used on a regular basis in Hollywood (such as blue-screen matting, structure from motion, optical flow, and feature tracking) and exciting recent developments that form the basis for future effects (such as natural image matting, multi-image compositing, image retargeting, and view synthesis). We also discuss the technologies behind motion capture and three-dimensional data acquisition. Analysis of behind-the-scenes videos and in-depth interviews with Hollywood visual effects artists tie the mathematical concepts to real-world filmmaking. My annotated video lectures for this course are available here. Videos of the best submissions from the most recent offerings are available here (2019) and here (2021).

ECSE 4540: Introduction to Image Processing

Spring 2007-2010, 2015-2023

An introduction to the field of image processing, covering both analytical and implementation aspects. Topics include the human visual system, cameras and image formation, image sampling and quantization, spatial- and frequency-domain image enhancement, filter design, image restoration, image coding and compression, morphological image processing, color image processing, image segmentation, and image reconstruction. Real-world examples and assignments drawn from consumer digital imaging, security and surveillance, and medical image processing. This course forms a good basis for our extensive graduate image processing and computer vision courses. My annotated video lectures for this course are available here.

ECSE 4530: Digital Signal Processing

Fall 2001, 2002, 2006, 2009, 2014, 2016

This course provides a comprehensive treatment of the theory, design, and implementation of digital signal processing algorithms. In the first half of the course, we emphasize frequency-domain and Z-transform analysis. In the second half of the course, we investigate advanced topics in signal processing, including multirate signal processing, filter design, adaptive filtering, quantizer design, and power spectrum estimation. The course is fairly application-independent, to provide a strong theoretical foundation for future study in communications, control, or image processing. This course was originally offered at the graduate level but retooled in 2009 to be senior-level. My annotated video lectures for this course are available here.

ECSE 2500: Engineering Probability

Fall 2011, 2013, 2018, 2020, 2022; Spring 2013

This course covers fundamental concepts including the axioms of probability, joint and conditional probability, random variables, probability density, mass, and distribution functions, functions of one and two random variables, sequences of independent random variables, the central limit theorem, and laws of large numbers. The course goals are to understand basic probability theory and statistical analysis and be able to apply them to modeling typical computer and electrical engineering problems such as noisy signals, decisions in the presence of uncertainty, pattern recognition, network traffic, and digital communications. My bite-sized video lectures for this course are available here.

ECSE 2410: Signals and Systems

Fall 2003-2005, 2011-2012, Spring 2012

This course covers the time and frequency-domain representation of continuous-and discrete-time signals, and the behavior of linear, time-invariant systems. In particular, we focus on the Fourier series and transform, the Laplace transform, and the z-transform. We will also discuss feedback systems and root-locus analysis and design, and applications involving communication and control systems. Signals and Systems is a prerequisite to many courses in the CSE curriculum. We are very serious about our responsibility to ensure that you understand this basic material before you take any advanced course in signal processing, communications, or control.

ECSE 4560: Signal Processing Design

Spring 2002-2006

This capstone design course requires students to integrate their understanding from several previous courses, working in teams to create signal processing algorithms that solve an open-ended problem. This is a highly student-driven course where the students propose their own signal processing projects; past course projects have included automatic techno music DJs, spoken-English accent identifiers, football play classifiers that operated on video-game screen captures, classical music counterpoint generators, tone-of-voice detectors, automatic pill sorters, and nail and screw identifiers. In addition to solving the technical problem at hand, a substantial percentage of the course grade is based on the students' ability to clearly express themselves in several professional written reports and a final oral report in front of the whole class. (Note: this course was discontinued in favor of ECSE 4900.)

If you're enrolled in any of my courses, you should be able to see the syllabus, assignments, and other materials on Piazza. While many people ask, I don't publicly distribute any additional course materials (e.g., code, datasets, homeworks, solutions) beyond the YouTube videos.