Fall 2018

I will be teaching the following two classes at Tufts this autumn. If you’re a student considering these classes, feel free to contact me with any questions or concerns you have.

EE 193 — Imaging systems: From photons to bits and back

Cameras and displays may seem straightforward, but it takes an amazing amount of engineering to go from light striking a camera lens to an image on a screen. We begin this journey by studying the fascinating abilities (and surprising inabilities) of the human visual system and the fundamentals of light and color. Then we enter the lens of a camera and travel down the image processing pipeline, discussing how pixels are created, processed, and compressed. Finally, we discuss systems for transmitting and displaying images on screens of all kinds. Based on this foundation, we conclude with a survey of cutting edge topics in imaging, including computational cameras, image forensics, and virtual reality.

EE 200 — A Machine-Centric Approach to Programming, Data Structures and Algorithms

Programming in C and C++ with coverage of data structures (linked lists, binary trees, hash tables, graphs), abstract data types (stacks, queues, maps, sets) and algorithms (sorting, graph search, minimal spanning tree). Efficiency of these structures and algorithms is compared via Big-O analysis. Brief coverage of concurrent (multi-threaded) programming. Object-oriented design: inheritance, templates and virtual methods. Embedded, high-performance and close-to-hardware applications. Defensive coding and use of standard UNIX development tools.

At Stanford

I helped to create and teach ENGR 40M, Stanford’s new introductory electrical engineering class primarily for non-majors. We broke from the traditional linear circuits pedagogy and arranged the course around a set of four lab projects where students get to build something fun and (maybe) useful: a solar-powered cell phone charger, an electromechanical “useless box”, an LED cube, and an electrocardiograph.