After learning the basics of Java, what should I be learning about to help me prepare for the rest of a Comp Sci degree? I am running Mac OS X, so I was thinking of learning my way around the terminal/bash, or something else Unix-based. My ultimate goal is software engineering, so I know that I will need to have an understanding of operating systems and the deep recesses of the software architecture. Also, I'd like to mess around with Linux (I think I've been saying that since the 90's), but would it be pointless to run Linux when I already have a Unix-based OS? I understand that any answer will be subjective, but I would appreciate any advice.