A thread of resources
There's no rules to this thread. Although this OP is dedicated to free resources, there is no reason to not expand this thread to paid resources. The goal is to list the resources that are useful to a) learn to be a good programmer and b) be not good, but great at whatever project you choose to persue.
OCWs:
I think the best place to begin for a rote beginner is the OCW's. OCW is short for "Open Courseware," which are free classes offered by various universities. To be included on this list, the schools must offer lectures, homework, and/or free textbooks. In other words, this is not an exhaustive list. There are many more schools who offer free classes, but they are missing homework.
Also note that each school offers many more classes than what I have here.
So, with no further ado:
===========================================
MIT (Main CS page):
MIT is the grand poobah of the opencourse movement. They offer 2000 courses and many of these classses have lectures, free textbooks, lecture notes, online tutors, homework, tests, and a facebook page dedicated to class discussions.
6.00 Introduction to Computer Science and Programming
6.00 Introduction to Computer Science an...
MIT chose to introduce computer programming by using Python, and I think this was a wise move. Python is a powerful and popular language with easy syntax so you don't have to spend a week trying to figure out "Hello World" and other toy programs. The course is pretty fast paced. By the end, you'll be able to write OOP, simulations, basic AI, and understand things like BigO. The stated goal of this course is to teach you to confidently create and understand 'simple' programs. To do so, this course offers video lectures from awesome lecturers, a free textbook, a series of problem sets, and exams.
6.001 Structure and Interpretation of Computer Programs
6.001 Structure and Interpretation of Co...
This class introduces you to creating large, complex programs using the Scheme dialect of Lisp. This course offers video lectures, an online tutor, a free textbook, and homework problems. If you go through all of these resources, you'll easily write over 100 programs.
The video lectures were shot in 1985, and they have a certain charm to them. Gerald Sussman, the creator of Scheme, is one of the lecturers. The lecture notes are full transcriptions of the class as it was taught in 1996. The tutor has audio recording of Prof. Grimsom (lecturer from 6.00) reading the transcripts. The more modern transcripts haven't changed much since 1985, but they do cover many things that became popular since 1985, so I would suggest reading the transcripts instead of watching the lectures. Suffice to say, with the book and transcripts, you'll be doing a lot of reading in this course.
Other courses offered includes Probabilistic Systems Analysis and Applied Probability, Mathematics for Computer Scientists, Introduction to Algorithms, a primer on Multi-core programming using the PS3 and taught in conjunction with IBM. To say the least, you're education would be fairly complete by the time you finish this series of courses.
=====================
Standford Engineering Everywhere
This course introduces you to programming concepts using the Java language and a plug-in called Kerel. The Kerel program is some walking box that goes through mazes and puzzles, and offers a good visualization to programming concepts.
I did not take this course, but I did watch the first 5 or so lectures. I was put off by the course because I just wanted to learn to program from the ground-up instead of using plug-ins and other odd props, but after looking back, I think this course would have been great to learn from. This course does offer video lectures, how-to's, and homework assignments.
This course is a continuation of Programming Methodology. I think they use "Stanford-specific" plug-ins. I'm not sure if you have access to them or not.
============================
Harvard
The Harvard OCW's are interesting because, unlike MIT, they constantly update the video lectures. At the time of this thread, the Intro to Computer Science Course is taught from the fall of 2010. Harvard also does not demand that you buy books or offer text, but rather they tell you how to find the information on the web, demanding research.
Intro to programming
Taught in the C programming language. I'm haven't taken this course, so I don't have much to say on it.
Building Dynamic Websites
This course got some good reviews in another thread. The course is very fast-paced, touching on everything you need to create dynamic websites, including javascript, SQL, PHP, and XML. What I've seen of the lectures focus more on design principles and thinking about how to approach the building of the mock sites. This is the only place I've seen that teaches how to sanitize your code.
=====================
Getting to specifics:
iPhone Application Programming
Courses offered by Stanford and free to watch in iTunes. It doesn't make the OCW section because there is no homework, but I think it deserves a place here since people sort of like their iPhones. These videos are highly rated by the watchers.
I pulled this from the Android Development thread. Apparently, it completed someone. :p
===============================
Docs for ( ) language:
Google it.
============================================
Free Books
Google books offers tons of books to read. All of the books you can read are listed as 'preview' or 'cached.' Mind that 'preview' does not mean you can only read the first 15 pages. With many of these books, you are getting 75% or more of the book. There's many from O'Reilly and other major publishers. Cached books can be read in completion.
====================================
Websites
stackoverflow.com
Great resource for finding all sorts of questions. Generally, my google searces start up with 'xxxxxx stack overflow.'
stackexchange.com
Talks about other stuff program-specific and not program-specific. Lots of interesting threads in there about programming life and stuff.
================================
Blogs
www.codinghorror.com
JeffAtwood, creator (?) of stackoverflow, blogs here. Lots of interesting reads.
http://www.paulgraham.com/articles.html
Lisp extraordinaire-turned-investor has some interesting thoughts on all sorts of stuff.
================================
Text-editors and IDE's:
Many programming languages come packaged with some sort of language-specific IDE. In Python you get IDLE, Scheme gives you Edwin, Java gives you... command line? Simple truth is that these built-in IDE's suck, and you probably dont want to use command line to program.
Everyone is addicted to this program, and I can't blame them. It's a simple text-editor with highlighting. It's great if you are doing things like HTML and javascript, but if you are going to try something more complicated, you need something more advanced.
I'm only going to list the three big ones, since they are either extensible to (almost) whatever language you want to work with or they offer plug-ins.
Vim
The official Unix text-editor.
GNU means GNU: Not Unix. I'll spare the flame-wars.
Eclipse is the only full-blown pre-set IDE on this list. There are plug-ins for Python, PHP, JavaScript, Java, etc etc etc.