I am currently 15, studying in 10th grade in India. I have been experimenting with Semantic Web technologies since like the past 8 months or so. I want to improve my core skills and would be great if could get some recommendations for some good books. I am planning to read Don Knuth's TAOCP, is that the right way to go or should I start with another book?
Actually I am versed with computer programming , but the thing is I am not well versed with computer architecture and related stuff, so what are the best resources I should follow to get well versed with computer architecture?
The first is list of free online books, the second programming related blogs.
Fair warning, programming is a life long learning job. I am not trying to discourage you, but you need to understand that you will need to LIKE learning to be good at programming. Good Luck!
TAOCP is awesome. If I had been advised to read it when I was 15, I probably would have either studied it as hard as I could, or given up after the first few pages. It's pretty intense material for a beginner, in my opinion. But only you can judge for yourself. Take a look at a copy of it, if you can, before you buy it. TAOCP focuses on algorithms and other microscopic aspects of programming; it may not offer much insight into building whole software applications.
Also, you might consider looking at Don Knuth's book Concrete Mathematics, which is a somewhat more casual coverage of the math chapter in the first volume of TAOCP.
You mention in a comment that you want to learn software architecture. I really like this book:
Either way, don't give up on TAOCP. Whether if you're ready for it now, or if you want to wait a few years, it's great that you're interested in reading it, and I would encourage you to study it as much as you can, if you discover that you are indeed intrigued by the topics it covers.
Thanks, and which language should I focus on the most? Currently I know PHP and lately have started playing around with python too. Should I stick with pyhton or try out C or C++ before too as I have really less experience with C.
I suggest Python. PHP is okay enough for web applications, but suboptimal for just about anything else. C is certainly worth learning, but can be challenging to use. Python is a pretty good language to learn with, and is perfectly usable for real projects.
What are the best books for pyhton, I have started reading How to Think Like a Computer Scientist, is it good enough or should I start with some other book?
P.S. I know pyhton, but want to further improve my skills in it.
I think Knuths work might be too Mathematical in nature for you. If you wish to work on sematic web its better you start with Collective Intelligence its a good book to start with . However it uses Python for its examples.
As far as Computer Architecture is concerned do you imply Software architecture or Computer Architecture
Thanks for your advice. So what is the best stage to read Knuth's work? With computer architecture i basically imply software architecture, but I want to know the basics of computer architecture too.
For low level software architecture, at the level of the firmware that drives processors (plus the electronics that are below that), as NonEUCitizen recommended MIT's 6.004 is a good bet (http://ocw.mit.edu/courses/electrical-engineering-and-comput...).
For the medium level, assembly language and on up a fair bit (at least to C), CMU's got what looks like a great course and book: http://www.cs.cmu.edu/~213/ There's enough meat on the web page for the course that it should give you an idea if you want to get the book.
Me and a lot of other people learned the basics from it, and while it's certainly dated, it has the advantage of being lucid and complete while not being too big or overwhelming, and of course nowadays if you want to go so far as running a Version 6 UNIX there are PDP-11 simulators that you can use for the purpose. I.e. it's a good foundation, like SICP is for languages and TAOCP is for algorithms (although there are less detailed and difficult books to get you started on algorithms that you might want to try first).
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html
You can get a lot out of SICP, if you take the time.