HN Academy

Online courses recommended by Hacker News users. [about]

Introduction to Computer Science and Programming Using Python

edX · Massachusetts Institute of Technology · 10 HN points · 10 HN comments

An introduction to computer science as a tool to solve real-world analytical problems using Python 3.5.
HN Academy Rankings
Provider Info
This course is offered by Massachusetts Institute of Technology on the edX platform.
HN Academy may receive a referral commission when you make purchases on sites after clicking through links on this page. Most courses are available for free with the option to purchase a completion certificate.

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this course.
I’m thinking about this for my niece--topics, ideas, pedagogy.

First, I’d say data storage and retrieval. I created my first DB on a Macintosh and FileMaker. Super useful. I still use a DB I started 20 years ago filled with every book I read. Make a project for quickly designing a database and using it. Someday they'll find a use for the skill.

Second, flip the script. Instead of cool projects, teach them what computers are great at. I think algorithms and models/simulations are really on-point. Team that up with learning Jupiter Notebooks, wow.

Finally, maybe you could teach them strategies on how to learn, and mix some computing solutions into it. Audit some Coursera or Edx classes. I recommend Charles Severance [1] and the Guttag and Grimson [2]. The whole course may be over their head, but there are a few really accessible lessons that are super interesting.

Good luck. Whatever it takes.



Hey Totaldude,

I taught myself programming over the course of a couple of years, having started from pretty much zero. Now I am working part time as a developer for a startup, and run a business of my own - having built not just the website and app for my business, but also developed the hardware and firmware!

Below are the classes that I took to get started along with a bit of a storyline: - I started this a while ago and never finished because I got distracted. It's kind of bare bones, but will get your wheels spinning. - I started and got all the way through the last problem set. This course is EXCELLENT: wonderful lectures, challenging assignments, expansive community (facebook group,, stackoverflow, etc). If there was only one class to pick from this list, CS50 would be it.

After CS50, I wanted to get good at a specific language and decided to learn Python. It is a very flexible and powerful language. It's very clean syntactically making it easier to learn. You can use if for data science, for little scripts, for web development, for pretty much anything. - i started this late (not self paced like the CS50), and played catch-up a good amount of the time. A solid class, mostly did it because I wanted to get good at Python. I got most of the way though this course as well. - I started this class next because I wanted to use Python to crunch numbers, and eventually get into machine learning. I made it just a few weeks into this course before getting distracted with my own projects.

It's not just about learning a programming language, but learning to program. With two hours a day, you can churn through the CS50 course in a couple of months, during which you'll build a website & webapp. It'll definitely be a challenge (it took me a couple of tries to make it all the way through), but it's an amazing course - make sure to take advantage of the huge community.

Although it's not directly related to webdev, I highly, highly recommend the Coursera course Learning How to Learn as a starting point:

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: 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 second this as well

I would do CS50 and doing FreeCodeCamp in parallel. This way he builds a light web foundation, and have a solid CS foundational base to work through other courses.

Other good courses are found through udemy, like Colt Steel. Another good one I recommend is, for basic foundational programming principles

For starters check out:

MIT's Introduction to Computer Science and Programming Using Python.

It's free or you can pay $49 to get a certificate.

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.

For a first CompSci course, the edX Python course is better, IMO.

Thanks for your feedback. I could see your point about the course being broad. With 6.0.0 the whole focus is on Python and CS. Congrats on "Getting the Google job", at which many a might folk have failed;

Are you able to share the role that you got hired in to? Was it a SRE?


Also, I got rejected twice (!) at Microsoft and didn't even get an interview at Amazon, so I can sympathize with "GoogleyAsHeck." Clearly hiring is a very noisy process with a lot of randomness. A lot of it is beyond your control no matter how much preparation is done.
I'm trying to stay anonymous and am concerned I may have already revealed too much. Let's just say it is a technical role that involves coding and leave it at that.
perfectly understand your concerns. Thanks again and wish you well on your journey!!!
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.






Aug 30, 2017 · 1 points, 0 comments · submitted by happy-go-lucky
Aug 22, 2017 · 7 points, 0 comments · submitted by happy-go-lucky
Feb 16, 2017 · bootload on Algorithms
EdX as well,

- 6-00-1x (started)

- 6.00.2x (March)

All are good and are pitched at various levels of complexity. The Princeton course uses Java. Okay if you're into that sort of language/thinking. MIT is using Python. Found one using lisp, "Systematic Program Design" ~

MITx Introduction to Computer Science using Python:

Neovim: I want to dig deeper into a small subset of tools I use a lot and a text editor sees a lot of use. Especially as I learn programming. So good place to start!

I'm basically on the same boat as you (except that I am learning because I enjoy it), and with one other difference, I had no previous experience except for tinkering with things I didn't understand and didn't lead to any meaningful insights.

To get a good feel on how to write simple scripts in python, you can take the class on coursera: Programming for Everybody (Python). If you don't care about the grade, there is a class currently going. The people in the forums for that class are fantastic. There is another class starting on october 5.

A good follow up course which will get more in depth is Introduction to Computer Science and Programming Using Python over at edx. This class is a bit more demanding than the previous one that I mentioned.

The first time around I dropped out, it was too much for me. So I took a few other classes, including Introduction to Algebra at edx to give my brain some exercise.

If, you are interested in learning for the love of it, I would recommend Systematic Program Design (which is divided in three parts - the first part just finished last week but the materials will remain open for people to catch up)

This class will teach a design process that can be applied to any programming language, using a simple programming language to help teach the design process. The book can be found at:

There are a few other classes over at udacity that I'm planning on taking but can't recommend them yet as I haven't seen them.

Lastly, a few months ago a friend asked me about programming, so I wrote a quick and dirty blog post that has a little bit more information. Keep in mind that I'm a beginner as well - so take it with a grain of salt.

Note: There is a paragraph about a class called Intro to computer Science over at udacity. The class mentioned in this post at edx is a better class.

What do you want to learn? Programming or CS? CS is more than just programming, and CS theory is more than just Algorithms & Data Structures.

If you want to learn about Algorithms and Data Structures and you have a strong math background, then CLRS is the book to get:

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: (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:


This book was written to go along with John's edX course:


Oh and btw, there's also the Theory of Computation, which is a major part of CS theory. Here are a few MOOCs and recommended books on the subject:






Sipser's book is probably the best introduction to the theory of computation, and I believe its last chapter deals with Complexity theory as well.


I loved this book very much. It has a very informal and conversational style (don't let it fool you, the problem sets can be HARD).


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.

Sep 17, 2013 · 2 points, 0 comments · submitted by jermaink
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
HN Academy is an independent project and is not operated by Y Combinator, Coursera, edX, or any of the universities and other institutions providing courses.
~ [email protected]
;laksdfhjdhksalkfj more things ~ Privacy Policy ~