The first seven weeks of the course will be structured labs based on fundamental digital signal processing (DSP) concepts from ECE 310 . The next two weeks will be on the implementation and simulation of a fundamental DSP algorithm of a student's choosing from a set of seminal DSP papers (such as adaptive filtering, pitch detection, edge-aware filtering, motion tracking, pattern recognition, etc). The remaining six weeks in the course will revolve around the development, testing, and documentation of a DSP project of the student's choice (subject to instructor approval).
Students will learn to prototype, implement, and analyze real-time mobile DSP systems. Students will both broaden and deepen their understanding of basic DSP theory and techniques and learn to relate this understanding to real-world observations and applications. Students will learn industrially-relevant skills such as rapid design prototyping in Python, and Android development of DSP applications in C++/Java for computationally-constrained mobile devices. Other significant educational experiences include open-ended design, oral, and written communication, and team projects.
Lend-lease Tablet: Please read the following link carefully and request a tablet per student. An Android device is required for this course. If you are willing to use your own Android device, then you do not need to request. Please keep all packaging for the return shipment! https://ece.illinois.edu/academics/ugrad/lab-kits
Location: ECEB 3015
Time: Monday, 2:00-2:50 PM
Location: ECEB 5072
Time
AB1: Tuesday, 2:30-4:20 PM
AB2: Wednesday, 2:00-3:50 PM
AB3: Wednesday, 9:00-10:50 AM
AB4: Friday, 3:00-4:50 PM
The lecture topics are subject to change.
| Week of | Topic | Lab | Due(in lab) |
|---|---|---|---|
| 08/24 | Lec 1 - Course Overview, slide | Lab 1 - Build your first Android App | Mock Quiz (extra credit) |
| 08/31 | Lec 2 - Audio Processing, | Lab 2 - Real-time Audio Filtering | Prelab 2, Demo(lab1) and Quiz 1 |
| 09/07 | No Lecture (Labor day) | No Labs | N/A |
| 09/14 | Lec 3 - Short-time Spectral Analysis, | Lab 3 - Spectrogram | Prelab 3, Demo(lab2) and Quiz 2 |
| 09/21 | Lec 4 -Correlation Analysis, | Lab 4 - Pitch Detection | Prelab 4, Demo(lab3), Quiz 3 |
| 09/28 | Lec 5 -Pitch Modification, | Lab 5 - Pitch Synthesis | Prelab 5, Demo(lab4) and Quiz 4 |
| 10/05 | Lec 6 -Overview of 2D Image Processing, | Lab 6 - Image Processing | Prelab 6, Demo(lab5) and Quiz 5 |
| 10/12 | Lec 7 -Video tracking, KCF, | Lab 7 - Video Processing | Prelab 7, Demo(lab6), Quiz 6 |
| 10/19 | Project Preview | Prototype | Demo(lab7), Quiz 7, Prototype Plan due |
| 10/26 | Lec 8 -Handwritten digit recognition: Part 1, | Prototype | N/A |
| 11/02 | Lec 9 -Handwritten digit recognition: Part 2, | Prototype demo and presentation | Presentation File, Prototype Code due |
| 11/09 | Demo Schedule, | Final Project | Final project Plan due |
| 11/16 | Special topic | Final Project | Milestone 1 |
| 11/23 | No Lecture (TG break) | N/A | N/A |
| 11/30 | Demo Schedule, | Final Project | Milestone 2 |
| 12/07 | No Lecture | Final demo and presentation | Final Project Report, Presentation File and Source Code due |
There are seven 15-minute quizzes (plus one mock quiz) throughout the semester. They are open-book individual assessments taken at PrairieTest. Each quiz starts at the beginning of each lab section and ends after 15 minutes (e.g. AB1 quiz opens 2:30-2:45, every Tuesday). Students MUST take the quiz at their registered lab section. There is no makeup for missed quizzes. An absence letter from the Dean of Students is required to waive a missed quiz due to acute medical condition. Discussion of the quiz is NOT allowed until all sections have completed the quiz. The grading will be published every Friday evening. You will earn extra credit for the mock quiz (make-up for lost points in the quizzes).
Students will be working in groups to complete all labs and final project. Typically, groups of two are strongly preferred, group of more or less is allowed only on rare occasions.
For structured labs (lab 1 ~ lab 7), groups will be formed randomly and differently for each lab, so that students could have the chance to work with different partners.
Attendance is required for all structured labs. Students must attend their registered lab section. We do not accommodate lab absences or requests to attend a different lab section, and missed labs cannot be made up.
Although structured labs are completed in groups, lab credit is awarded only to students who are present and actively participate in the lab. If a group member is absent, that student will receive no credit for the lab, even if the other group member(s) complete the lab, submit the work, or demonstrate the results. A group member may not complete or demonstrate the lab on behalf of an absent student.
All pre-lab, lab work, and project-related documents must be submitted via Gradescope. Grades will also be published on Gradescope once they are ready.
Gradescope Entry code: RVGPVK
G = Group work, I = Individual work
Structured Labs: 40%
Prelabs (I): 10%
Labs (G): 20%
Lab quizzes (I): 10%
Extra-credit lab 8 (I): 2% = prelab 1% + lab 1%
Prototype: 19%
Prototype plan (G): 4%
Prototype demo/presentation (G): 15%
Final project: 36%
Final project plan (G): 4%
Milestone 1 & 2 (G): 2.5% + 2.5%
Final demo/presentation (G): 24%
Final report (G): 3%
Lecture participation (I): 5%
The structured laboratory segment will count for 40% (10% for prelab, 10% for quiz, and 20% for lab) of the total grade, based on completion of, and oral examination over, the weekly laboratory assignments, including the underlying theory, details of the implementation and code, and the observed behavior of the system. We emphasize that your grade is based heavily on your understanding and demonstration of the course material, not just on submitting working code.
The prototype (based on the student's chosen DSP paper) will account for 19% of the total grade, with 4% on the prototype plan, 15% on the demo and oral presentation.
The final project will count for 36% of the total grade, with 4% on the project plan, 5% for demonstrations of 2 project milestones, 24% for the final demo and oral presentation, and 3% on the final report.
The final 5% of the total course grade comes from lecture participation.
It is expected that each student will attend and participate in scheduled class and laboratory meetings. The final grade may be penalized if this does not occur.
A late penalty of 50% will be assessed for assignments less than a week late; assignments more than a week late will receive no credit. However, all graded assignments must be submitted to receive a passing grade in the course.
Refer to the Prototype, and Final Project pages.
Prof. Thomas Moon: After lecture or by appointment
TA Dimitrios Gotsis (Wed sections): 1-2 pm Wednesday
TA Ethan Zhou (Tue/Fri sections): 2-3 pm Friday
Prof. Thomas Moon: tmoon@
TA Dimitrios Gotsis: gotsis2@
TA Ethan Zhou: yz69@
Printed and online sources are allowed with proper citation. Please direct your question to Google or the course staff before you ask your classmates. Given the range of the material for this course, we allow you to refer to any online source, but do not directly copy and paste.
We do not allow inter-group cooperation for the final project. If there is a sign of cooperation between groups, those groups will be treated as a big group, and the grade will be divided accordingly.
More information: Student Code.
This course emphasizes individual understanding, hands-on implementation, and direct engagement with communication systems using Python and Android tablet. To preserve the learning objectives, the use of generative AI tools is limited.
Students may use generative AI tools only for basic Python/C++/Java syntax assistance or hardware/software setup and installation tasks or improving English sentence grammar or wording without changing technical content , such as:
Understanding Python/C++/Java language syntax or library function usage
Clarifying error messages (e.g., Python/C++/Java exceptions, error/warning messages)
Learning general programming constructs (loops, list comprehensions, function definitions)
Python/Jupyter Notebook/Android Studio installation and environment management
Package installation and dependency issues (e.g., NumPy, SciPy, Matplotlib, OpenCV)
Android tablet related environment installation
English grammar, spelling, and clarity in project plans and reports
This use must be generic and non–course-specific.
Copying or pasting any part of the lab document, lab instructions, or provided starter code into an AI tool
Using AI to:
Generate full or partial lab solutions
Modify, refactor, or complete provided code templates
Rename variables, functions, or files from the provided code to produce a “new” solution
Submitting AI-generated code or text that you cannot fully explain
Using AI to interpret lab results, generate plots, or write analysis sections of lab reports
Generate technical content for plans or reports
Write or rewrite:
Introduction
Design descriptions
Algorithm explanations
Performance analysis
Results, discussion, or conclusions
Interpret experimental data, plots, or timing measurements
Summarize lab findings or justify design decisions
Inability to explain submitted work or inconsistencies between submitted code and demonstrated understanding may trigger an academic integrity review.
Violations may result in penalties ranging from letter grade reduction on the assignment to further disciplinary action, consistent with university policy.
“Show me examples of Python array slicing.”
“What does this Python error mean: ValueError: operands could not be broadcast together?”
“How do I plot multiple lines using Matplotlib?”
“What is the difference between a Python list and a NumPy array?”
“How do I write a for-loop over array indices in C++?”
“What is the correct syntax for defining a Java function with default arguments?”
“How do I install NumPy and Matplotlib in a Conda environment?”
“How do I setup Gradle in Android Studio?”
"Show me examples of plotting a line graph in Java for Android app"
"Revise this paragraph to improve grammar without changing meaning"
“Is this sentence grammatically correct?”
These prompts directly or indirectly ask the AI to complete, modify, or interpret course assignments, which is not allowed.
“Complete the following code for up/downsampling.”
“Implement FIR filtering for this lab.”
“Generate the C++ code for TDPSOLA.”
"Implement Eigen-face algorithm in Python for the prototype project"
"Draft the introduction section for the final plan"
"Propose ideas for Android projects"
"Summarize the following papers"
“Modify this provided code so that it performs Laplacian sharpening image filter.”
“Rename variables and rewrite this code so it looks original.”
“Explain what this lab code is doing and suggest how to complete the assignments.”
“Analyze the results from the code and compare the two methods.”
Refer to the more course policy page here.