My advice for learning CS, from someone who is completely self-taught, learn ad hoc and strive to completely understand - trying to just understand stuff built on top of other things without understanding the bottom layer is not very good for learning.