Learning assembly is a waster of time to learn C-language..it isn't C-language and much harder to decipher any code you write past the most simple of intention. Assembly is also specific to the device family and mfg. of the mcu your are working with and is thus learning so much is learning nothing if it is not-portable to another device.
You shouldn't waste a dime paying for a C-course, there are many free C courses available online that are excellent, you can also learn a lot just from Youtube vids.
If you wanted to learn how to ride a bicycle, I wouldn't ask you to first take a course in designing bicycle chains.
Get a solderless breadboard and a DIP PICC chip, something like a PIC16876A or PIC16F886 in a DIP socket you can plug into a breadbroad. This chip doesn't require you to learn complicated code to turn on and off a pin, no LAT required, when you turn a port pin on it only requires one instruction.
These two chips are very popular and their is much code published in C on the web and much more even to be found on Microchips forum, and if you need help, it is easy to get help and learn from others on many forums regarding these two popular chips.
The best way teacher is experience, and when you write some code in C to do something, like even detect a switch, debounce it and toggle the light of a LED, you can study the C-language, write the code, then compile and burn it to your chip and then is it so easy to check to see if your code is correct on a solderless breadboard in seconds.
Direct feedback between theory and practice is the most enjoyable way to learn.