ECE 20875: Python for Data Science - Fall 2019 to Present (Purdue)

This course will introduce Python programming to students through data science problems. Students will learn Python concepts as well as introductory data science topics, and will use their knowledge of Python (and prior programming experience) to implement data analyses.
  • Typical enrollment: 100 undergraduate students in ECE.
  • Website: Click here for the current website.


ELE/APC 486: Transmission and Compression of Information - Spring 2019 (Princeton)

This course covers the fundamental algorithms and limits of data compression and transmission, detailing key components of information theory and coding theory such as entropy, source/channel codes, and information measures. It also draw connections between these theories and several techniques in supervised and unsupervised machine learning, including data clustering, principal component analysis and graphical models.


ELE/COS 381: Networks: Friends, Money, and Bytes - Fall 2017, Spring 2019 (Princeton)

This course is oriented around practical questions regarding the social (“friends”), economic (“money”), and technical (“bytes”) networks in our daily lives. Why is WiFi faster at home than at a hotspot? How does Netflix recommend movies for me to watch? Why doesn’t the Internet collapse under congestion? Why does each Gigabyte of mobile data cost $15? To formulate and answer these questions, we use techniques from data science, linear algebra, and optimization, and introduce the fundamental concepts of the networking industry.


ELE 206 / COS 306: Contemporary Logic Design - Fall 2018 (Princeton)

This course teaches the basic concepts in logic design that form the basis of computation and communication circuits. Topics covered include logic gates, memory elements, timing methodologies, finite state machines, controller architectures, programmable logic, and basic computer organization. The lab component covers coding and implementation using Verilog.


EGR 150: Foundations of Engineering - Summer 2018 (Princeton)

This course provides a hands-on introduction to the foundational principles of engineering. It gives a project-based introduction to engineering that mixes electronics, mechanical construction, and computational data analysis, while providing a firm theoretical foundation for the project in both math and physics. In lab, students have the opportunity to build, test, and iterate the design of a rocket.
  • Typical enrollment: 20 incoming freshman undergraduate students.
  • Syllabus: From Summer 2018.


ELE 206: Information Signals - Spring 2018 (Princeton)

This course teaches mathematical tools to analyze, manipulate, and preserve signals that carry information. A major focus of the course is transforms - in particular, the Fourier, Laplace, and z- transforms - which reveal the frequency spectrum of signals and can make them easier to manipulate. We also study sampling, the process of converting a signal from continuous to digital, and which transforms to use depending on the waveform. Additional topics covered include linear time-invariant systems, modulation, quantization, and stability.



Networks Illustrated: Principles Without Calculus (MOOC) - Launched Summer 2013

This course explains the fundamental principles that govern the social, economic, and technical networks in our daily lives. It is based on a textbook that I co-authored to appeal to a general audience, relying on anecdotes, analogies, and animations as pedagogical tools in lieu of detailed mathematics. It is offered as a Massive Open Online Course (MOOC) on Coursera.


Networks: Friends, Money, and Bytes (MOOC) - Launched Fall 2012

The MOOC version of Networks: Friends, Money, and Bytes is offered on Coursera.