Electrical Engineering freshman want to pursue PhD in Theoretical Computer Science I'm a freshman in electrical engineering and have always interested in mathematics and researching. But I came to realize by the time I learn EE that it doesn't involve much math as I expected (something abstract like algebra or topology, not the same computational kind as calculus). I feel that EE is not motivated enough to commit my life to. I enjoyed learning Computer Science in my free time and found that Theoretical Computer Science fit me perfectly. Therefore I want to pursue higher education in this field. I intend to minor in Computer Science.

What can I do to prepare myself for this path? Which courses should I take and which books should I read to go ahead in this field? Is there any field in EE that have a close relation to Theoretical Computer Science (or abstract mathematics)? And should I get a MSc in Math or Computer Science after BSc in EE?
As Buffy commented, I would consider changing majors.

With that in my mind I can offer the following:

IMO the best place to start with theoretical computer science is with understanding the theory of computation and complexity. 

Sipser has a wonderful book which is available online for free:

http://fuuu.be/polytech/INFOF408/Introduction-To-The-Theory-Of-Computation-Michael-Sipser.pdf

I would also recommend reading a book about discrete mathematics - specifically one that deals with graph theory. For an interesting, more modern connection between mathematics and computer science you can take a look at Expander graphs, which have applications in networking, and see whether the flavour of these notions is appealing to you.