The vast majority of the courses listed here on HN.Academy are available
from their providers for free. Many courses offer a completion
certification for a fee. A few courses and specializations require an
enrollment fee. HN.Academy receives a referral commission when you visit
course pages through links on this site and then purchase courses and
completion certificates. If you decide to purchase a certificate or course
the commission does not increase the cost of the course and helps support the
continued existence of HN.Academy which is much appreciated.

Hacker News Comments about Introduction to Computer Science and Programming Using Python

All the comments and stories posted to
Hacker News that reference this
course.

For the computer side of things, I highly recommend Harvard's CS50, which is completely free, for an introduction to computer science [0]. It has a great subreddit [1] and is a fantastic resource. MIT also offers a great pair of free introductory classes on edx. [2]

FreeCodeCamp is an interactive online program that does that exact progression (HTML/CSS => Javascript => React). Here's a link to the curriculum:
https://learn.freecodecamp.org/
. It also has a wide support system (chats, subreddit, etc), and it's also completely free. I never finished the last few projects, but the rest of it taught me a tremendous amount.

There are
so
many variables and
so
much luck involved that there is no guaranteed path, but these are two great resources to get started. These were some of the resources I used to transition from no-CS (disclaimer: with a physics degree but zero programming experience) to a programming job at a startup. I've since continued learning through online and in-person classes and joined a large tech company.

Happy to answer any questions about these resources. Given how many variables there are, I hesitate to use my own experience as an example, but I'm happy to give back and pass on any knowledge I can.

I'm actually not a fan of CS50. I never took the course, but I went through the online material did the first few weeks of assignments. It is very broad and very shallow. It is also very hard and discouraging without some guided assistance. The students who take it for credit get a lot of help.

There is a good, free book on Python[1] that teaches practical skills for automating tasks. I sometimes recommend it to people, because it's immediately practical.

After that, you could try Flask[2] or Django[3] (Python web frameworks) and gradually introduce HTML, CSS, and JS.

JavaScript frontend development has more moving parts, so I think it's harder to pick up as a first technology. You have to explain asynchronous code earlier than with Python, and that's one more mental concept to juggle.

There are also a couple of online courses[4][5] that might be useful. I've only watched part of the first one -- it was good.

An undergraduate CS curriculum will mostly cover the parts I-VI of the book (that's around 768 pages) plus a few chapters from the "Selected Topics Chapter" (we covered Linear Programming and String Matching).
Mind you, this book is very theoretical, and all algorithms are given in pseudocode, so if you don't know any programming language, you might have to go with a an algorithms textbook that is more practical.
In my DS course we had to implement a Red-Black tree and a binomial heap in Java, and in my Algorithms course we only wrote pseudocode.

Maybe Sedgewick's (Knuth was his PhD advisor!) "Algorithms (4th ed)" will be a better choice for a beginner, as it shows you algorithm implementations in Java:
http://www.amazon.com/Algorithms-4th-Edition-Robert-Sedgewic...
(If you decide to go this route, you might as well take his two Algorithms courses on Coursera, they will really help).

There are also a bunch of Python-based introductions to computer science which have a broader focus than just teaching specific data structures and algorithms. Some of them emphasize proper program design, debugging and problem solving. I haven't read any of them, so I can't vouch for them, but here are a few of the more popular ones:

Once you are familiar with some computation models, its time to study computational complexity and this is one of the best books on the subjects. It is used both for graduate and undergraduate courses.