How can I learn about CS? I am an Junior in college and I have come to the realization that my school didn't to that good of a job of actually teaching real CS to the students. On my own, I have become a fairly proficient programmer, but I know I would be a lot better If I was more confident in my ability  to swim on a lower level of the stack. I hardly know any C. (The syntax is easy, but I've never actually implemented anything in it besides some 100 level HW problems. I see this as a problem because so much is written in C.)

I want to be: 


better at discrete math
More versed in algorithms  
Have a more intimate understanding of how the higher level tools that I rely on actually work. 


Basically, I know how to use logic, but I have become dependent on high level tools and I don't like that. 

I also suck at math. I mean I understand it conceptually, and Im comfortable with set theory, so, Python's data structures are really all I need, but I want to be better at algorithms and math is necessary for that. 

Are there any websites or other resources that stress an approach like this.
Here are a few books I recommend:

Discrete math: Concrete Mathematics: A Foundation for Computer Science, Don Knuth. (http://www.amazon.com/Concrete-Mathematics-Foundation-Computer-Science/dp/0201558025). 

It's very complete and also pretty approachable for someone without much of a theoretical math background. 

Algorithms: Algorithms, Kevin Wayne and Bob Sedgwick. Again, very complete and presents all algorithms with motivation and extremely well-written Java code. There's also a really good website with a lot of the info available for free (http://algs4.cs.princeton.edu/home/). 

Systems: Computer Systems: A Programmer's Perspective, Bryant and O'Halloran. This one is a little more dense than the two above, but it's a great resource if you know what you want to learn about (e.g. processes, floating point arithmetic). (http://www.amazon.com/Computer-Systems-Programmers-Perspective-Edition/dp/0136108040)

I've had experience with all of these at the undergrad level, so they don't require an enormous amount of experience or higher-level coursework.