I'm a high school senior planning on majoring in computer engineering. In my spare time I would like to get a head start on programming. What language should I learn that would best prepare me for what I might be exposed to? My guess is C++ or Java, but I'm not sure. I'm also looking for book recommendations and a free compiler. Thank you!