http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/
After that you'd probably want to learn some web stuff like html, css and javascript. You can pick these up by looking at the sources of other peoples' pages, and by using w3schools:
Good luck!
http://webcast.berkeley.edu/course_details.php?seriesid=1906978270
I listened to a few of them a while back, just to check them out. Not bad, if you can ignore the lecturer's occasional side-trip into politics (well, it IS Berkeley).
The turnaround on the DVD is a bit slow, though. Took me about three weeks to get mine (I don't mind, but you asked for "fastest" and that would slow you down).
The thing about programming/hacking is that it is not a fixed set of skills. Rather, first you think about what you want to achieve, then you start researching on how to do it. There is never an end to it, therefore just reading a book doesn't cut it. You might be a versatile Perl programmer, but suddenly you'll find that you want Ajax in your next web application, so you learn about that.
The Python website has a good list of tutorials for non-programmers (http://wiki.python.org/moin/BeginnersGuide/NonProgrammers) and for programmers (http://wiki.python.org/moin/BeginnersGuide/Programmers)
The book Learning Python from O'Reilly is really good.
How smart are you? How hard are you willing to learn? Try reading 'How To Become A Hacker' by Eric Raymond for a start ~ http://www.catb.org/~esr/faqs/hacker-howto.html
There are others but this is a good start.
1. Begin administering a message board and discover the need to learn HTML in order to avoid using the god-awful Microsoft Frontpage (awful in terms of generating unnecessary complexity).
2. Learn Java because I've always been interested in programming and it seems like a "hot" language.
3. Learn Javascript to make some elements of my webpages a little bit dynamic (on the client side, at least).
4. Begin a Computer Science major. The truth is that I really did not learn much from the class content itself, but from the projects we had to do, projects which involved a lot of independent work. So find some programming problem that seems interesting and program it in C/C++ (at least that's what I did :-).
5. Discover Lisp, code in Lisp, learn Lisp, vow to use nothing but Lisp (and maybe some Python) ever again.
6. Work for a company that uses nothing but a Unix environment (FreeBSD), and spend the summer upgrading to a new server. This involves looking at plenty of open source code in order to find out what's going on and why nothing is working right. Discover a loathing for PHP.
7. Install Linux at home. Learn Perl, and shell. Realize the amazing power of commands like find, xargs, and 'perl -e ...'. Note the convenience of having gcc and interpreters for Perl, Python, and Lisp at your fingertips.
8. Get started. The sooner you start programming, the sooner you will find yourself searching Google to figure out how to do x in language y. There is no easy road to hacking... you have to take the Nike approach. ("Just do it." Is that even their slogan anymore?)
Looking back, you could certainly avoid step 2. Step 4 is largely unnecessary as well, except that being forced to do projects is a good motivator to get you programming when you first start. If you can find your own motivation, then a CS major is not really much help. Step 5 is optional, but you should definitely learn something beyond the standard C/C++/Java that most people get stuck with. Step 6 was a great experience for me, coming from a strictly Windows environment, but skipping straight to Step 7 wouldn't hurt too much. I'm not trying to be a Linux zealot here, but open source, Unix-based platforms teach you a completely different way of thinking (problem-solution based) than the Windows mindset, and I think it's closer to the manner of thinking employed by your typical hacker.
Step 8 is the most important. Get started. Don't look for someone else to do your work for you. There is no substitute for hard work, so find something that interests you and start programming it in the language of your choice. If you only want to learn hacking in order to apply for YC, then you have already written yourself off as a non-hacker. Hacking is a means to an end in some ways, but not to that extent.
Lacking a time machine, I think open source is the best way to learn and get involved with something. Pick a real project that utilizes some of the technology you'd like to use, and try and dig in - fix bugs, add features, and so on.
1. (X)HTML and CSS 2. A tiny bit of Javascript 3. PHP 4. MySQL 5. learn stuff on linux and servers
6. After that i am on my own, I figure I will learn Ruby on Rails after that. Ive given myself until January 2008 to be pretty good at 1-5. Lets see how it goes.
As for hacking in general. The only way to learn is to create real programs. Books are a very small part of learning. I wouldn't recommend any.
Oh and don't tell the YC guys that you are hardly a hacker. They wont like that.
Ideas don't matter (except to show that you're thinking hard about solving a real problem for someone). You want to have a working demo to show them.
Still, I think that toying around with other's code in order to make it do something new is an excellent and fun way to learn a new language.
SwellJoe: Nice comment at the top of this page, most agreeable one here.
The definition of "hacker" is somewhat arbitrary but is nonetheless given inflated status by the majority of this community, it seems.
(I could be mistaken, of course.)
Of course, you need a product/idea to apply, but what will be the fastest way to acquire the necessary skill such that you can build a reasonably good product / to actualize your idea? Finding a hacker co-founder is a shortcut but it is not considered an answer here.
I want to have a full schedule, e.g. firstly read this book, finish all the exercise in it, then secondly you read a certain website, and so on, etc. Of course there will be no limit to learn, but I am asking for a minimum requirement. Something like a curriculum.