Isn't Java, .NET, etc.for web development? I was hoping more to apply programming knowledge to engineering domains for example finite element analysis, the market for web development seems oversaturated for me. I graduate in 2 years time, being a very accelerated course with holidays being too short for me to get a stint as an intern at any SME and so i was hoping to just gratify my intellectual curiosity by exploring more theoretical avenues and keep my interest level/motivation high instead of making myself learn "practical" stuff like Java and .NET.
Anyhow, i checked out both of your book recommendations and Introduction to Algorithms looked more interesting of the two, i will take a look, thanks

SICP textbook might have been abit more than i could handle, all the exercises are extremely difficult and require some mathematical background, though the video lectures seem easier to follow.
First I would like to point out your misconception about programming languages. There is no such thing as Web development programming language. No doubt Java is brought into light in years where the Web is striving, however, its predecessor know as Oak, is design ground up for embedded system and hence very much related to your engineering purpose. As much as C or C++ are used extensively in engineering projects, no one is stopping one from using Python, Perl, Ruby, Java, Javascript for any kind of computing feat. It's all limited by your thoughts.
All these programming languages passed the turing test and hence they are just good enough for any development work of any nature. What set aside certain programming language as being fore web development are the following reasons:
1) Perception, because one sees certain languages more popular and prominently used in certain use cases, they tend to be biased and affix a purpose to them.
2) Libraries, projects and modules. Some programming languages with Enterprise and open community support get to have alot of libraries written for certain use cases. These libraries make the programming language easier to accomplish certain task and hence makes more people using it. The cause and effect is mutual.
No one stop you from using Java to write games, robotics programming like LeJOS in Lego mindstorm. No one is stopping you from developing genetics programming for solving the human genome using Java, nor is stopping you from running a JVM in the airplane or navigating a rocket in NASA. For as far as I am aware, Java has stretches to so many industries and you will not be surprise to find libraries doing all sorts of industrial stuffs developed.
Look at Python, though it is also a web development language (as you called it), it is used in stock market analysis in some works uding SciPy and Numpy library. Ruby is used in Google sketchup as a plugin library to perform 3D works. I just wrote one recently for fun and also for my friend.
What is so practical about web development ? There are so much science and mathematical concepts applied in the very core platform globally used today. For example security frameworks and algorithms. Where do you think its more utilized ? Banks ? Government ? Or the commercial industry ? I can almost be sure you will find much of today's security frameworks are built to such robustness because of the Internet. How about network ? Where do you think today's network core is found ? Telecommunication or the Internet ? Now we have cloud computing where resources are cheaply available for anyone to start large scale architecture for a few hours of computing, where do you think the skill set of large scale design grows ? Large scale like hundreds to thousands of servers ? Don't underestimate the complexity of web development and the methodologies that grows out of the needs in it. Everyday humans are challenged in the Internet from each other across the globe. I can quote you more theory than you can anticipate just from the Internet alone. You will find algorithms and data structures fully exercised in the web development arena. We are dealing with so much data every day that database methodologies changes form year to year. First we have high performance database, then comes clustered database and now multi master databases that slack down on consistency to achieve better efficient and more scalable design.
If you are interested in functional aspect of programming languages, you will find new languages such as Scala, a programming language running ontop of Java virtual machine, but meant for functional design. Some companies have tried on Scala, finding a fit for in in the projects they do.
What I would like to introduce to you is not what programming languages you chose or what you do. It's how you think, and how you keep your mind open. Only with an open-mind and always challenging yourself intellectually, learning new stuffs whether it is obvious or complicated, that makes you learn as much as possible.
If I were like you thinking practical is not the way to go, why do you think now I can discuss with you such vast knowledge into different areas of computing, ranging from programming languages, system design, network paradigm, security and cloud computing ? Give a good thought about it and see if I'm misleading you
