* Learn C. I have heard good things about _Learn C The Hard Way_, which is free, though I have never used it myself. Since you want to know more "CS," work through _Introduction to Algorithms_, a pretty standard (second-semester) university text, in C (NOT a language than manages memory for you!).
* Work through _The Elements of Computing Systems_ (aka "From NAND to Tetris"). The book is fun, and it introduces many topics that are more advanced than CRUD.
I have many other ideas, but I decided to stop here in order to emphasize those above. :)
I've seen quite a few of these and thought they were ok:
This one is newer though:
I guess I would check out both and see which professors I like the best :)
The moment I knew it was a good choice for me was after I completed a problem set that required us to write sorting algorithms.
My prior experience was with Ruby and JS, so .sort() => done, no idea how this mysterious .sort() was returning my ordered set. After the lecture and writing the algorithms, I didn't just have the code as you would following a tutorial. I had a better understanding behind "the magic". I understood how to evaluate the performance of these algorithms using Big O notation and why my Google killing search engine won't do much Google killing if I use bubble-sort.
Give it a try. You'll get a good introduction to CS and write some cool programs, including a program that can recover "deleted" images from a memory card.