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?

  • 4
    Is there any reason you can't just change your major now? – Buffy May 11 '20 at 13:37
  • There are many reasons that I can't make a change right now. Maybe I might do it after my bachelor's. Is there another track in which I could prepare myself for MSc/PhD? – Kurt Godel May 11 '20 at 14:34

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:


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.

Not the answer you're looking for? Browse other questions tagged or ask your own question.