Online / 6 & 7 February 2021


PySDR: A Guide to SDR and DSP using Python

and lessons learned from teaching CS students DSP + SDR

I discuss the challenges of teaching Digital Signal Processing (DSP) and Software-Defined Radio (SDR) concepts to those without any background in the area. At the University of Maryland I created an elective for undergraduates in the CS dept. that introduced DSP and SDR in a hands-on manner, and have since taught the course twice. During this course, students learn basic wireless communications and DSP concepts, and how to implement the techniques onto SDRs. Additional course learning objectives include digital signals, filtering, frequency domain, digital modulation, noisey channels, cellular, and IoT. The course utilizes open-source SDR toolkit software including GNU Radio and Python libraries, allowing students more interesting and engaging assignments/exercises and more advanced concepts to be explored. Every student had a PlutoSDR to use during the semester. What is unique about this course is that this material is typically taught at the graduate level within ECE, spread across numerous individual courses. CS students, at least at our university, do not get exposed to any DSP or signals background which is normally required to learn about SDR using traditional methods/textbooks, so they must start from scratch, which is why this course has heavy use of graphics, animations, and examples. As such, this course does not dive as deep into the mathematics behind the theory as a normal graduate level ECE course would. There is much more emphasis on "learning by doing", and actually creating SDR applications.

In addition to the course I have created a free online textbook called PySDR, that is based on the material I taught in my course, which anyone can use to learn DSP and SDR using Python. My textbook does not use any custom libraries or code, it's essentially showing how to use straight Python (e.g. mostly numpy, scipy, and matplotlib) to actually do DSP and create SDR applications. Through feedback I've gotten from people using this online textbook, I have learned about what it takes to teach DSP and SDR to folks in a non-university setting. The source code used to generate the textbook (using Sphinx) is hosted on GitHub, so that readers can submit issues or even PRs, to date there has been several contributors. I'm hoping this presentation can show that you don't need to be a EE with a masters degree to dive into DSP and SDR.

Shameless plug:


Marc Lichtman