I'm taking a course on data structures and algorithms and it follows the book Introduction to Algorithms, 3rd Edition (ISBN-10: 9780262033848) by Charles E. Leiserson, Clifford Stein, Ronald Rivest, and Thomas H. Cormen. Judging by the way the first few weeks of class have gone, I will be teaching myself directly from the book with very little lecturing/instruction. Does anyone know of any resources, especially free, online courses that they could recommend to help me get through this class? I am struggling.
The key to learning this, or much of anything, is reinforcement and feedback. Reinforcement comes from doing exercises and solving problems in a course like this and the book has plenty of mid chapter and end chapter exercises and problems. You can do a lot of these. All of them may be asking too much, but you want to be able to answer any of them. Getting more explanation may help or not, but only if it helps you solve those problems.
Feedback, however, may be the bigger problem. Where you can properly seek it may or may not be a problem. If the rules in your place permit study together then you can work with one or two other students in a study group. Each of you solves some set of problems on your own. Then you meet and discuss your solutions. I'm not suggesting you collaborate on formal assignments as that may be treated as cheating (or not, depending on the prof), but all of the "other" exercises are, to me, fair game for collaboration. Doing them gives the reinforcement. Discussing them gives the feedback. Look for insights from each exercise that go beyond that exercise.
In universities such as yours, you often will have access to a TA. That person should also be able (and willing) to give you feedback on what you do. If they are wise and you seek hints from them, you will only get minimal hints, not solutions. Seek the insights, not just the solutions. Go to them for feedback, not hints, primarily. Likewise in a study group. And if your professor doesn't get angry when you spend too much time in their office, then spend a lot of time in their office.
Others may be able to supply online course resources, but I'll warn you that such things may make it harder if they divert you in any way from the main task: reinforcement and feedback.
Try to space out your study so that cramming for exams isn't necessary. It will be counterproductive for almost everyone and almost every situation.
Other hints: Take notes on index cards. Carry those cards and review them frequently. Carry blank cards so you can make notes as you get insight or have questions that need to be answered later.
Sleep and get enough exercise. i.e. rest your mind and energize your body. The overworked mind is inefficient. The insufficiently oxygenated body is also inefficient.
For anyone with a similar question who reads this in the future, I found this very helpful series of YouTube videos concerning algorithms.
I liked it because the series covers topics in a similar order to the book. There is no assumption of what you do or don't know, material is covered from the ground up. Each video provides multiple examples of problems.