My wife has never programmed before but is trying to learn. She's started taking the online CS50X course (https://www.edx.org/course/harvardx/harvardx-cs50x-introduction-computer-1022#.U_10LGSwJuM). I'm not huge fan of it as it isn't how I learned to program, particularly I think C makes learning basic things more complicated than needed. I'm curious what everyones favorite online classes are for people completely new to programming? Needs to be free (or near free), online, and probably self-directed.<p>Also a huge thanks to the people who make online courses available for free. Despite its shortcomings the Harvard CS50X course is infinitely better than what was available when I went to school.
'Newbie' covers many experience levels - from afraid to turn the computer on to moving beyond Excel pivot table macros. People need different degrees of handholding.<p>Not necessarily my favorite, Coursera's <i>Programming for Everybody</i> [1] moves forward very very slowly. Great for some people, drying paint for others. It is taught in Python.<p>A course I think is great is Coursera's <i>Introduction to Systematic Program Design</i> [2] based on Felleisen's <i>How to Design Programs</i> introductory text. It is possible to register for the last session, from a year ago, and complete the work on your own. It is taught in Racket.<p>Another course that takes a learn-by-making approach is Coursera's <i>Creative Programming for Digital Media & Mobile Apps</i> [3]. It is beginner friendly and really encourages "getting into it". It is taught in Processing, and in some ways I think Processing is the ideal language for an introductory course in Software Engineering - it is pared down like Racket's student languages, provides just a pinch of Java pain, facilitates the production of really interesting output, and the environment provides a fast edit-compile-run loop.<p>For a person who is more oriented toward scientific or mathematical problems, Coursera's <i>R Programming</i> [4] might by a good fit.<p>Among the various Python Courses, I would probably go with Udacity's <i>Design of Computer Programs: Programming Principles</i> [5] because it is taught by Peter Norvig.<p>All that said, a book may be better than an open-enrollment class for many people, and there's a lot more variation.<p>[1] <a href="https://www.coursera.org/course/pythonlearn" rel="nofollow">https://www.coursera.org/course/pythonlearn</a><p>[2] <a href="https://www.coursera.org/course/programdesign" rel="nofollow">https://www.coursera.org/course/programdesign</a><p>[3] <a href="https://www.coursera.org/course/digitalmedia" rel="nofollow">https://www.coursera.org/course/digitalmedia</a><p>[4] <a href="https://www.coursera.org/course/rprog" rel="nofollow">https://www.coursera.org/course/rprog</a><p>[5] <a href="https://www.udacity.com/course/cs212" rel="nofollow">https://www.udacity.com/course/cs212</a>
To me, Python is a great language to start with. Check out the following courses:
Udacity CS101 "Intro to CS" (it teaches Python from scratch) <a href="https://www.udacity.com/course/cs101" rel="nofollow">https://www.udacity.com/course/cs101</a>
In parallel with Udacity CS101 , you can advise your spouse to take Python track on Codecademy (it also teaches Python from scratch and it's great when combined with Udacity CS101) <a href="http://www.codecademy.com/en/tracks/python" rel="nofollow">http://www.codecademy.com/en/tracks/python</a>
After those 2 courses I'd suggest to take a super-short "Programming foundations with Python" course (it teaches Object-Oriented Programming basics) <a href="https://www.udacity.com/course/viewer#!/c-ud036" rel="nofollow">https://www.udacity.com/course/viewer#!/c-ud036</a>
If these are overwhelming, I'd point to Codecademy's HTML/CSS, jQuery, Make a Website and Make an Interactive Website tracks. After completing these classes one can move on to JavaScript or Python or Ruby classes.
To be short, try to stick with Codecademy and Udacity in the beginning. This is the way how I tought myself how to code and landed a job as a Python/Django developer.
I strongly believe starting with C is a good programming foundation. This website offers so many great courses <a href="https://www.coursera.org/courses" rel="nofollow">https://www.coursera.org/courses</a> But nothing beats the books for me.