ECE 4625/5625 Communication Systems 1

Catalog Course Description
Introduction to principles of modern communication theory and signal processing: AM, FM, PAM, PCM, and delta modulation. Noise analysis, filtering, threshold effects, phase-locked loops, and introduction to digital modulation. Prer., ECE 3205. Meets with ECE 4625.
Prerequisite: ECE 3205 or equivalent
Offered: Spring (S)
News for 5-18-2026
Grading status:
- As of 9 pm grades have been posted.
- A short time ago I finished the homework paper grading. I have been grading papers during some time of each of the past 12 days!
- The two missing histograms will allow me to finally fill out the grading form. I will be doing this after I ponder where to properly place the grading decision boundaries. I expect to post late afternoon to early evening frame. It has been a long haul.
- Histogram of the current status from last Friday, before I started grading the 100+ homework papers.
Getting Tools Setup
- Create a new Python virtual environment using miniconda or miniforge3 as of February 09, 2026 09:01:05. I suggest this to get going quickly. This will give you a full scientific Python environment good for the entire semester. You will have scientific Python with scikit-dsp-comm running in Jupyter Lab with pyaudio for real-time DSP. Python scripts with debugging and Jupyter notebooks with debugging will also work in vs code with extensions.
- Create a second Python virtual environment for Marimo notebooks as of February 03, 2026 07:42:32. Marimo notebooks offer some very nice capabilities for reactive notebooks. This is being developed at Stanford University. Since posting this document I have come to realize that installing
jupyterlabin this environment alongsidemarimooffers some interoperability features with Jupyter. Keeping the virtual environmentdsp-comm313is still a good plan. - Install Julia, Python, Jupyter Lab, Pyaudio as of October 12, 2024 09:54:08. For both Python users and Julia users, the document also provides details on how Markdown files exports from Jupyter Lab can be used to produce PDF pages that can be merged with handwritten homework pages. The approach is to edit Markdown in vs code for producing PDFs from Jupyter Lab documents to include in your solved homework.
- C++ development with MSYS2, gcc/g++, and then configure vs code extensions for building, debugging, and running code.
- Get motivated for digital comm in the Jupyter notebook by reading some Scipy Conference papers I published using pyaudio_helper. As an application consider a 3D audio simulator that makes use of pyaudio_helper.
- Course Materials
- Lecture Videos
- Problem Sets with Hints
- Jupyter Tutorial Notebooks
- Python Projects
- Sample Exams with Solutions
- Preparing Homework in Typst
Course Materials
Course Syllabus as of January 05, 2026 10:18:00.
Intro Lecture (Chapter 1) as of January 11, 2026 03:48:59.
Lecture Notes
Updates will be coming to the lecture notes as needed.
- PDF file of Chapter 2 as of January 19, 2026 08:38:49.
- PDF file of Chapter 3 as of February 24, 2026 09:11:45.
- PDF file of Chapter 4 as of March 24, 2026 09:10:10.
- PDF file of Chapter 5 as of October 04, 2024 03:26:11.
- PDF file of Appendix A as of October 04, 2024 03:26:19.
Other Course Materials
- Python Basics a tutorial written in Jupyter Notebook. ZIP.
- Read-the-Docs for scikit-dsp-comm
- Formulas Sheet
- Final Review Study Sheet (2020)
- Plot PN Autocorrelation Function (the PSD is a homework problem)
- Ziemer text errata
Lecture videos from Spring 2020 are on YouTube via the links below. I have a YouTube channel with playlists for each of the courses posted in this course Web Site. The lecture format is two 75min lectures per week, hence they are denoted as ‘a’ and ‘b’ in the list below. The impact of Covid hit mid semester, when the lecture recording process moved from the classroom to teaching from home over the internet.
In some cases 2019 or 2018 videos are substituted. This is because technical issues may have resulted in recording failure or an exam was given. In Spring 2026 the lecture format changed from twice a week to once a week.
- Lecture 1a (sp20), Lecture 1 (sp26)
- Lecture 1b (sp20)
- Lecture 2a (sp20), Lecture 2 (sp26)
- Lecture 2b (sp20)
- Lecture 3a (sp20), Lecture 3 (sp26)
- Lecture 3b (sp20)
- Lecture 4a (sp20), Lecture 4 (sp26)
- Lecture 4b (sp20)
- Lecture 5a (sp19), Lecture 5 (sp26)
- Lecture 5b (sp20)
- Lecture 6a (sp20), Lecture 6 (sp26)
- Lecture 6b (sp20)
- Lecture 7a (sp20), Lecture 7 (sp26)
- Lecture 7b (sp20)
- Lecture 8a (sp20), Lecture 8 (sp26) short due to Exam 1
- Lecture 8b (sp18) issue with sp19 & sp20 captures
- Lecture 9a (sp20), Lecture 9 (sp26)
- Lecture 9b (sp20)
- Lecture 10a (sp20), Lecture 10 (sp26)
- Lecture 10b (sp20)
- Lecture 11a (sp20), Lecture 11 (sp26)
- Lecture 11b (sp20)
- Lecture 12a (sp20), Lecture 12 (sp26)
- Lecture 12b (sp20)
- Lecture 13a (sp20), Lecture 13-14 Overview (sp26)
- Lecture 13b (sp20)
- Lecture 14a (sp18) issue with sp19 & sp20 captures
- Lecture 14b (sp20)
- Lecture 15a (sp20) On travel watch older videos (sp26)
- Lecture 15b (sp20)
- Lecture 16a (sp20), Lecture 16 (sp26)
Problem Sets with Hints
All of the below will be updated. Assignment 1 is now placed. Hints pages will follow.
Set Histograms as of March 02, 2026 09:42:37
Set 1 as of January 29, 2026 08:11:06. Hints as of January 29, 2026 08:11:06. Solutions as of February 04, 2026 07:16:58.
Set 2 as of February 04, 2026 08:16:38. Hints as of February 05, 2026 09:30:26. Solutions as of February 14, 2026 08:40:36.
Set 3 as of February 16, 2026 12:36:43. Hints as of February 20, 2026 10:20:30. Solutions as of .
Set 4 as of February 21, 2026 10:56:00. Hints as of February 25, 2026 08:25:25. Solutions as of February 28, 2026 07:21:29.
Set 5 as of March 07, 2026 09:23:10. Hints as of March 10, 2026 06:21:16. Solutions as of March 14, 2026 08:26:21.
Set 6 as of March 15, 2026 01:47:20. Hints as of March 17, 2026 07:57:23. Solutions as of March 21, 2026 07:56:32
Set 7 as of April 04, 2026 03:56:01. Hints as of April 04, 2026 03:55:10. Solutions as of April 13, 2026 07:13:21.
Set 8 as of April 04, 2026 03:55:09. Hints as of April 04, 2026 03:55:09. Solutions as of April 17, 2026 03:47:46.
Set 9 as of April 04, 2026 03:55:09. Hints as of April 04, 2026 03:55:09. Solutions as of May 06, 2026 09:08:12.
Set 10 as of April 04, 2026 05:54:44. Hints as of April 04, 2026 05:54:44. Solutions as of May 09, 2026 12:04:24.
A Collection of Jupyter Notebooks
These notebooks will be updated, and Julia version will be made available as time permits and/or the need arises. As 3/27 the Chapter 4 notebook is about to be updated.
- Chapter 2 as of February 19, 2026 09:47:35. PDF rendering of the notebook as of February 19, 2026 09:47:15. Note to obtain the PDF rendering here I first exported the notebook to
htmlthen I opened the html in a browser (chrome, edge, safari) and printed it to PDF. The GUI slider widgets do not print without more work. - Chapter 3 as of February 23, 2026 09:52:28. PDF rendering of the notebook as of February 23, 2026 07:17:27.
- Chapter 4 as of April 17, 2026 04:32:58. PDF rendering of the notebook as of March 27, 2026 10:02:47.
Python Projects Spring 2026
Project 1: Reader as of April 14, 2026 08:54:20. Sample Jupyter notebook as of April 08, 2026 10:03:57.
Project 2: Reader as of May 08, 2026 07:57:19. Sample Jupyter notebook as of April 15, 2026 10:24:58. PDF rendered sample notebook as of April 15, 2026 10:24:57.
Python Projects Spring 2020
- Project 1 as of October 05, 2024 09:56:56 and the Project ZIP file including a sample IPYNB and audio files as of October 26, 2024 08:36:06.
- Project2/Final Project as of October 05, 2024 09:56:58 and the project Project ZIP including a sample IPYNB file as of October 26, 2024 08:36:06.
Sample Exams with Solutions
Exam 1 Related
- Sample quizzes (no solutions) for Exam 1 study from 2020
- Exam 1 with solutions Spring 2019
- Exam 1 with solutions Spring 2020
- Exam 1 with solutions Spring 2026
Exam 2 Related
- Sample quizzes 2 (no solutions) for Exam 2 and Final study from 2020
- Exam 2 will rely heavily on Exam 1 (2020 & 2019) content for Chapter 3
- Exam 2 with Solutions Spring 2019
- Exam 2 with Solutions Spring 2020
- Exam 2 with Solutions Spring 2026 as of May 08, 2026 10:36:02.
- A typst project zip export ready to load into your Typst account
- The pdf from the sample project, which includes useful problem solutions for problem similar to Set 1; note this sample project was written for Modern DSP, ECE 4650/5650, so Set 1 problems are of a different type
In the *.typ file of this ZIP package the header imports the Callisto package. Some of the earlier graphics are now abandoned in favor of importing notebook content directly. The three cell types rendered are (1) Python code cells, (2) Markdown cells that include equations, (3) plots created in code cells. The header area at the top of the *.typ file now includes the line:import "@preview/callisto:0.2.4"
There is also a *.ipynb file in the main directory which is brought into the Typst document using the line:
#let (render, result) = callisto.config(nb: json(“Typst_demo_python.ipynb”))
Individual cells from the notebook are brought into the *.typ file using Typst lines of the form:#render(1)
where the number is the cell number. You need to load the notebook into your local Jupyter session to get a better sense of the content in the notebook. All of the notebook content is added under the Problem 2.29 part of the example. Overall the results are very nice and you see what the #render() statements are doing via the real-time preview!
Fall Related 2026
Modern DSP, ECE 4650/5650 and hopefully Digital Communications, ECE 4630/5630.
Learning Python and Getting Acquainted with Julia
There are many resources for learning Python. For our purposes we are interested in learning Python with an emphasis on the so-called scipy stack which includes the well-known packages numpy, scipy, and matplotlib.
- Scientific-python.org
- Python Basics a tutorial written in Jupyter Notebook. A ZIP of the complete Jupyter notebook with all graphics.
- An IDE I recommend is VS Code with many nice extensions for Python, Julia, and Jupyter, C++, just to name a few.
- Cheatsheet for MATLAB/Python/Julia.
- NumPy2MATLAB and IPython reference card.
- Julia Tools ZIP package.