ECE 547: Introduction to Computer Communication Networks - Fall 2023 - Present (Purdue)

This course develops a fundamental understanding of computer networking, with an emphasis on design and protocols. Modeling techniques covered include queueing theory, layering, dimensioning, control, and optimization. Various network functions such as error-recovery algorithms, flow control, congestion control, routing, multi-access, and switching are also covered in detail.
  • Typical enrollment: 50 graduate/undergraduate students in ECE.
  • Website: On Brightspace.

ECE 301: Signals and Systems - Fall 2022 - Present (Purdue)

This course teaches mathematical tools to analyze, manipulate, and design signals and systems. A major focus of the course is representing the input-output relationships of linear time invariant systems in both continuous and discrete time. The Laplace, Fourier, and z-transforms are another point of emphasis as they reveal the frequency spectrum of signals and can make them easier to manipulate.

HON 399: Principles of Networks - Fall 2023 (Purdue)

This course teaches the fundamental principles of networks, both communication and social in nature, in a manner accessible to an interdisciplinary body of students. Concepts covered include feedback control, wisdom of crowds, fallacy of crowds, consensus formation, information cascades, modularization, and multiplexing.
  • Typical enrollment: 30 interdisciplinary undergraduate students.
  • Textbook: The Power of Networks.
  • Website: On Brightspace.

ECE 60022: Wireless Communication Networks - Spring 2022 (Purdue)

This course covers fundamental concepts in mobile wireless systems, such as channel modeling, cellular systems, resource allocation, and edge intelligence. Besides understanding the methodologies driving emerging and legacy wireless systems, the course introduces the engineering challenges to be considered in NextG systems.
  • Typical enrollment: 25 graduate students in ECE.
  • Website: On Brightspace.

ECE 20875: Python for Data Science - Fall 2019 to Fall 2021 (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: 300 undergraduate students in ECE.
  • Website: Click here for the most recent website I maintained.

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.