I have developed a series of four courses to educate my students about wireless systems, and enable them design new protocols, analze them, and implement them in programmable hardware. I teach three of these courses every year on a rotating basis.


Mobile and Wireless Systems:
This course introduces students to WiFi and cellular protocol stacks, and covers both below 6GHz (802.11 ac/ax, LTE/5G) and mmWave systems (802.11 ad/ay, 5G). The course covers fundamentals of PHY and MAC along with higher layer protocols for each of these two technologies.


Networks, Optimization, and Reinforcement Learning:
The objective of this course is help students gain a mathematical foundation for analysis of networked systems. The course covers topics from statistics (random processes, Markov Chains), optimization theory (linear/convex optimization, dual decomposition), and reinforcement learning with particular emphasis on their applications in analyzing networked systems. We also rely heavily on Python for our simulations.


Embedded Programming Lab:
The goal of this course is to introduce students to software defined radios that I frequently use in my research to prototype advanced wireless protocols. In paricular, we use Iris (a fully programmable software defined radio geared towards LTE) for cellular radio prototyping and WARP (anoyther SDR geared towards WiFi) for WiFi protocol implementation. The course covers related topics in embedded programming to instuct students implement wireless protocols in these FPGAs and conduct over-the-air tests and experiments.


Special Topics in Communication Networks:
This is a seminar based course in which we read and discuss recent papers in the area of networked systems. While there is a strong focus on communication systems, we will also cover other types of networked systems such as social networks, learning networks, transportation networks, as well as cloud and edge computing.