Skip to content
UdemyCPaid courseAll LevelsCertificate

Digital Signal Processing (DSP) From Ground Up™ in C (Udemy.com)

Practical DSP in C : FFT, Filter Design, Convolution, IIR, FIR, Hamming Window, Linear Systems, Chebyshev filters etc

Created by: Israel Gbati

Last updated February 2023

icon
What you will learn

  • Be able to develop the Convolution Kernel algorithm in C
  • Be able able to develop the Discrete Fourier Transform (DFT) algorithm in C
  • Be able to develop the Inverse Discrete Fourier Transform (IDFT) algorithm in C
  • Be able to develop the Fast Fourier Transform (FFT) algorithm in C
  • Be able to perform spectral analysis on ECG signals in C
  • Be able to design and develop Windowed-Sinc filters in C
  • Be able to design and develop Finite Impulse Response (FIR) filters in C
  • Be able to design and develop Infinite Impulse Response (IIR) filters in C
  • Be able to develop the FFT Convolution algorithm in C
  • Be able to develop the First Difference algorithm in C
  • Be able to develop the Running Sum algorithm in C
  • Be able to develop the Moving Average filter algorithm in C
  • Be able to develop the Recursive Moving Average filter algorithm in C

How it compares

Against the other 70 rated Udemy courses in C on CourseDuck:

  • Rating4.0 out of 5higher than 12% of them
  • Reviews887#22 of 71 by number of reviews
  • Length7.8 hoursshorter than 50% of them
  • Last updatedFebruary 2023more recently than 68% of them

icon
Course Description

With a programming based approach, this course is designed to give you a solid foundation in the most useful aspects of Digital Signal Processing (DSP) in an engaging and easy to follow way. The goal of this course is to present practical techniques while avoiding  obstacles of abstract mathematical theories. To achieve this goal, the DSP techniques are explained in plain language, not simply proven to be true through mathematical derivations.

Still keeping it simple, this course comes in different programming languages and hardware architectures so that students can put the techniques to practice using a programming language or hardware architecture  of their choice. This version of the course uses the C programming language.


By the end of this course you should be able develop the Convolution Kernel algorithm in C, develop the Discrete Fourier Transform (DFT) algorithm in C, develop the Inverse Discrete Fourier Transform (IDFT) algorithm in C, design and develop Finite Impulse Response (FIR) filters in C, design and develop Infinite Impulse Response (IIR) filters in C, develop Windowed-Sinc filters in C, build Modified Sallen-Key filters,  build Bessel, Chebyshev and Butterworth filters, develop the Fast Fourier Transform (FFT) algorithm in C , even give a lecture on DSP and so much more. Please take a look at the full course curriculum.

icon
Udemy Discount

The discount is applied through our link. Open the course from here and Udemy's current promotional price is applied at checkout on most courses, no code to type.

Some courses are excluded from Udemy's promotions. If the price does not drop, clear your browser cookies and use the button again.

icon
Instructor Details

Israel Gbati

Author of Bare-Metal Embedded C Programming: Develop High-Performance Embedded Systems with C for Arm Microcontrollers.

With extensive experience in embedded firmware development, I specialize in real-time systems, low-level programming, medical device architecture, embedded signal processing, and embedded AI. My professional journey has been centered around Arm Cortex-Microcontrollers, delivering robust solutions used in cutting-edge industries.

Passionate about simplifying complex concepts.

icon
More courses by Israel Gbati

$99.99

$10.99

$74.99

$69.99

Free

Free

icon
More C courses

$84.99

$149.99

$94.99

$10.99

Free

$64.99

icon
Reviews

4.0

887 ratings on Udemy

Select a bar to show only those reviews.Select the bar again to show every rating.

By Dmitry Tatarinov on 2/12/2024

The course is good for understanding the DSP. It explains the basics and refreshes my university knowledge that I've never had a chance to apply in real projects. However, it's not very well structured. For example, the coding done in section 7 is based on mathematics explained later in section 9. I think it would be better to do it the other way round.

By John W Dennis on 1/4/2024

A very good introduction to the essential elements of DSP. The methodical step-by-step realizations in C gave plenty of space and practical application to help digest the conceptual content. One or two of the sections seemed to be out-of-order but that was not a big problem. It also seemed to end prematurely, without a deeper dive into IIR filter design, although it's unclear if this was the presenter's original intent or not. Overall it solidified many concepts for me and was well worth the time and money.

By Gatis Kalniņš on 12/28/2023

I understand that this is not a C language course, but I have to say this. 1) It's OK that you show, how to write code, but don't show it again and again. I think we all understand the first time, how to create arrays, how to write them to a file, how to write function arguments and function prototypes. 2) &MyArray[0] is the same as MyArray 3) Align your code, be consistent so that we can read it easier (google coding style) 4) It's Gnuplot, not GnuAplot 5) Use notepad to save Gnuplot commands, then just edit/paste them, why we have to view this over and over again how you type in commands we all know from the first time, or at least - speed it up... 6) In some of your videos, I can hear a better audio quality, great job, just, next time, use High-Pass filter to filter low frequencies! What I would have liked are more real world examples. For example, using Audacity, can generate .wav files, would be great to use different filters on that, view FFT, save filtered .wav files. OK, not all is bad! As we know from PID loop, we need negative and positive feedback! :) 1) Open/Free tools used! Good choice, students can decide what OS to use. I really disagree with comments, where somebody complains about author using Windows, but they are using Linux, I was using Linux and had no problem what-so-ever following this course!!! 2) I really liked "first theory, then code". My math is poor, so, from viewing formulas I can't always understand how to proceed, seeing code made sense to me! 3) Good English, we all have accent but as a non-native English speaker - I understood everything! 4) Good video quality, I disagree with comments where they say that can't see braces. I see everything and I don't have 20/20 vision :) I think the problem for them was that they don't know C language syntax + poor vision, if you know C, you know where to put "{}" , "[]" and where "()"! Overall, I would be disappointed, if I had paid full price for this course, it's really basic and short (if you remove all the repeating stuff), but as I got it with discount, It's OK! And most important - I learned something!!! Thanks and take care!

By Arnaldo Laganaro Junior on 9/16/2022

O curso foi muito interessante e dentro do que eu esperava, que era rever e aplicar na prática processamento digital de sinais (DSP), utilizando C. Já estudei na teoria, mas ainda não havia aplicado na prática. O professor tem pleno conhecimento e uma boa didática. As introduções e as revisões dadas foram muito importantes no estudo e também para manusear as ferramentas utilizadas. Grato

By Matthew Maertz on 9/21/2021

This course seems to make a lot of assumptions. Sometimes a function or aspect of an algorithm is brushed over and are discussed at a level seemingly only to acknowledge its existence but not to explain the nuances as to how exactly it relates. Additionally in multiple videos there are mistakes in the videos that are corrected down in the comments. Examples down below. Some videos contain comments from 2 years ago discussing problems with the equations displayed in the video and the video has not been updated to address them. In others there are questions that have gone unanswered at the time of this review for 1 year but less than 2. The coding sections of the videos seem to be good and it is nice that all of the project files are included so that the student can compare any differences between their code and the instructors code. My opinion is that this would be a good review, or refresher if you have already learned DSP or if you have a decent background already. If you are coming into this without any knowledge of DSP It could be a good primer but it would be necessary to find other materials to go into more specific courses/lessons.

By Kevin Kuehler on 8/18/2021

The course covers good content, but sometimes the instructor makes it clear he has no idea how to program. I'm about halfway through the course and have several examples... In one of the early lectures he iterates over a loop on an equation that accesses the [i-1]th element. The problem is he starts iterating i at 0 so -1 is accessed. It only works on his computer by sheer luck, and many students will simply segmentation fault. This is targeted at beginners, and that is not something they will be able to interpret. On the Inverse DFT lectures he does all the computations first, then prints. The problem is, he does a pass during the IDFT and stores the values of ReXBar and ImXBar in the ReX and ImX arrays respectively. So when he plots the ReX and ImX, he is printing the the wrong values! Since it reflects over the axis he doesn't notice the error. This is why we have const pointers. On the rectangular to polar lecture, he mentions a case to avoid division by zero where he uses 10^-20. Doesn't explain any of that, just says it is a "research-defined value". No intuition, almost like he has no idea what's going on. Then he mistakenly nests the computation for the Phase in that loop and doesn't notice the graphs are totally wrong. During the windowed-sinc coding, he creates an array of SIG_LENGTH - KERNEL_LENGTH, then iterates from KERNEL_LENGTH to SIGNAL_LENGTH. He writes way out of bounds of memory. On some computers it will actually modify the results of the filter kernel. Once again, sheer luck that this worked on your computer. Never notices or fixes this error. These are some general nitpicks about the programming. Sometimes the teacher uses global variables inside of function, sometimes he passes those parameters manually. I don't really care which one you do, but choose a style and stick with it. Don't confuse beginners. The teacher also passes &arr[0] instead of just passing arr to functions. Not clear why this adds any value. Overall I still give this course 3 stars because it does give programmer's a framework for DSPs. The code examples are tweakable and the graphs are good for understanding. My suggestions? (1) Focus on the programming that actually matters. The author spends a ton of time during the coding sections bungling file management and repetitively plotting in gnuplot. (2) Provide a script for doing those 4x4 plots that takes the 4 files and it no joke could shave an hour off the course. (3) Before releasing code to the world, compile it with a leak sanitizer and an address sanitizer. These memory errors are why the code examples DO NOT work on the machines of some of the other reviews.

By Mark Harvey on 2/9/2021

I come from the pro-audio/recording world, and currently work as a software developer and I've always wanted to get into DSP programming and this course was a very good introduction to many of the interesting topics in the world of DSP. Most of the lecture videos are brief and to the point, and to really get the most out of them it's worth doing a little extra reading outside of the videos. On that point - some of the examples used in the videos appear to come from "The Scientist and Engineer's Guide to Digital Signal Processing" which is a wonderful, (and free) resource found online. Not saying this to out anyone here, just that I personally found reading the section in the book was a good compliment to watching the video here on the same topic. The coding videos were great as well. Very cool to learn how to write a convolution algorithm, low pass filter etc. These lessons were much appreciated. I was disappointed though that many of the algorithms promised in the "What you'll learn" section of the course are simply not there. For instance, it clearly states you will "Be able to develop the Fast Fourier Transform (FFT) algorithm in C", but there is no coding lesson for an FFT. There are several other examples. I wonder if they just haven't been added yet?

By Brian C Peterson on 11/7/2019

This was a very informative course and does apply to what Im coding. After watching this course Im am inspired and encouraged to practice my math a little bit more, even though its not as necessary, it does give good background to the coding scheme.

By Belmin Alic on 3/18/2019

Very nicely made and useful course to quickly review the basic concepts of DSP and then later on continue with the more advanced topics. I personally like the concept of the lecturer. He does a short theoretical overview of the topic, explains the practical use of it and then shows it practically in C. I removed the half star because I saw quite a lot of unanswered questions and because of very few misplaced lectures/missing materials and similar problems. However, this does not influence the understanding of the course. All in all, I can recommend this course.

By Slavoj on 8/22/2018

Very easy to follow course. This course has really shed light on some of the dsp topics I have always had problems with. I did not know convolution was actually this simple. This course has demystified a lot of concepts and theory and I am looking for to the rest of the course.

Showing all 10 reviews on CourseDuck

Read all 887 reviews on Udemy

icon
Quality Score

No CourseDuck member has rated this course yet. Taken it? Give each part a thumbs up or down.

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 80 / 100