

Ask HN: Best online programming class for newbies? - bredman

My wife has never programmed before but is trying to learn. She&#x27;s started taking the online CS50X course (https:&#x2F;&#x2F;www.edx.org&#x2F;course&#x2F;harvardx&#x2F;harvardx-cs50x-introduction-computer-1022#.U_10LGSwJuM). I&#x27;m not huge fan of it as it isn&#x27;t how I learned to program, particularly I think C makes learning basic things more complicated than needed. I&#x27;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.
======
brudgers
'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.

Not necessarily my favorite, Coursera's _Programming for Everybody_ [1] moves
forward very very slowly. Great for some people, drying paint for others. It
is taught in Python.

A course I think is great is Coursera's _Introduction to Systematic Program
Design_ [2] based on Felleisen's _How to Design Programs_ 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.

Another course that takes a learn-by-making approach is Coursera's _Creative
Programming for Digital Media & Mobile Apps_ [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.

For a person who is more oriented toward scientific or mathematical problems,
Coursera's _R Programming_ [4] might by a good fit.

Among the various Python Courses, I would probably go with Udacity's _Design
of Computer Programs: Programming Principles_ [5] because it is taught by
Peter Norvig.

All that said, a book may be better than an open-enrollment class for many
people, and there's a lot more variation.

[1]
[https://www.coursera.org/course/pythonlearn](https://www.coursera.org/course/pythonlearn)

[2]
[https://www.coursera.org/course/programdesign](https://www.coursera.org/course/programdesign)

[3]
[https://www.coursera.org/course/digitalmedia](https://www.coursera.org/course/digitalmedia)

[4]
[https://www.coursera.org/course/rprog](https://www.coursera.org/course/rprog)

[5]
[https://www.udacity.com/course/cs212](https://www.udacity.com/course/cs212)

~~~
bredman
Thanks! Reminding myself of her feedback I think that pacing might be a
significant issue which is something I hadn't considered too much (oddly).

She's someone that has lots of computer experience but the closest she's
gotten to programming before is simple Excel functions (think SUM). I think
she'll be much more excited by one where she's working on "real world" stuff
so I'm leaving a bit towards _Creative Programming for Digital Media & Mobile
Apps_ and hope that it spurs her to learn even more.

------
jumasheff
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)
[https://www.udacity.com/course/cs101](https://www.udacity.com/course/cs101)
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)
[http://www.codecademy.com/en/tracks/python](http://www.codecademy.com/en/tracks/python)
After those 2 courses I'd suggest to take a super-short "Programming
foundations with Python" course (it teaches Object-Oriented Programming
basics)
[https://www.udacity.com/course/viewer#!/c-ud036](https://www.udacity.com/course/viewer#!/c-ud036)
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.

~~~
bredman
Thanks, I haven't looked at Udacity much so I'll give that look. I like using
Python as it's a bit practical.

To clarify her goal isn't to land a job, just to learn a new skill and be able
to relate to her coworkers that are doing more coding better.

------
NoomHead
I strongly believe starting with C is a good programming foundation. This
website offers so many great courses
[https://www.coursera.org/courses](https://www.coursera.org/courses) But
nothing beats the books for me.

------
vishalzone2002
I find [http://www.cprogramming.com/](http://www.cprogramming.com/) to be a
really thoughtful tutorial.

