Top 10 FREE Websites to Learn Programming

Published: January 2, 2015

The demand for technical computer skills is increasing at an exponentially faster rate than the supply of computer science students. You can easily differentiate yourself to potential employers by learning the art of programming. There are numerous success stories about high school students getting full time offers at large tech companies, drop-outs making their multi-million dollars into reality, and even former homeless people creating money-making apps. Whether your story is as dramatic as theirs, if you commit to taking the first step and learn a bit of computer programming, you could greatly improve the way you tackle problems. Sharpen your technical skills with the websites below! 

A great beginning programming language is Python or JavaScript. To start your career in web development, try Ruby, JavaScript, and HTML/ CSS. To work with databases, learn SQL or MongoDB. For the more advanced learners out there, check out the different frameworks you could learn below!

A final tip - whenever you encounter lecture videos that are putting you to sleep, try playing them a 1.5x or 2x speed. YouTube has this speed feature built in, so most of the lectures on the below sites can be sped up, since they host their videos on YouTube.

  1. Udacity

    The first site, and my personal favorite, is Udacity. Don't be bothered by the pricing for nanodegrees and certifications. You can access all of the course content and rich forum community for free. I recommend the Intro to Programming class, where you can learn Python. After picking up the basics, you can dive into the Artificial Intelligence course, taught by Stanford professor Sebastian Thrun. Currently, I'm taking the D3.js Data Visualization course, which sharpens both technical and design skills.

    Better yet, there's no installation required. You can just run your code straight in the browser, just like pretty much every site I list here below!

    Programming Languages: Python, JavaScript, HTML, CSS, Objective C, R, Java, Swift

    Technical Frameworks, Tools, and APIs: D3.js, Google AppEngine, Hadoop, MapReduce, MongoDB, jQuery, AJAX, Git, WebGL, Android API

    Difficulties: Beginner, Intermediate, Advanced

  2. Codeschool

    The next site, Codeschool, has really great free tutorials on everything from the statistical programming language R to the web framework Ruby on Rails. The quicker tutorials, like Git and R, can really help you get up and running quickly for a specific purpose: Git for publishing your code online, and R for programming super-powerful, math-heavy statistical models. They don't have lecture videos so you can cut out a huge chunk of necessary time to watch them, but they walk you through interactive exercises to help you pick up the syntax fast and naturally. Again, no installation, because you can run the code directly in your browser. However, if you wanted to learn intermediate level web programming, you'll have to install a framework on your computer.   

    Programming Languages: R, Ruby, JavaScript, HTML, CSS, Objective C, CoffeeScript 

    Technical Frameworks, Tools, and APIs: Ruby on Rails, Angular.js, jQuery, Git, Google Maps API

    Difficulties: Beginner, Intermediate

  3. Codeacademy

    Codeacademy is really great because it has a very structured learning model. They have numerous tutorials that they organize into 3 main categories: Web Developer Skills, Language Skills, and APIs. 

    This is a good time to introduce exactly how these skills are used together. Web Developer Skills include the framework Ruby on Rails and various models of web programming. Language Skills help you learn the syntax of specific languages and technologies. These languages are the basic building blocks that web development, app development, and algorithms research are really built off of. The APIs, or Application Programming Interfaces, extend these languages by adding new functions to a library that you, the programmer, can use in an application (whether it be web, desktop, or mobile). 

    Programming Languages: Python, JavaScript, HTML, CSS, Objective C, Ruby, PHP

    Technical Frameworks, Tools, and APIs: jQuery, Box API, Deezer API, WePay API, YouTube API, Gilt API, Firebase API, Sunlight API

    Difficulties: Beginner, Intermediate

  4. Coursera

    Coursera is more of a formal online education platform, because it releases content from universities - including lecture videos, real assignments, midterms, and finals. It can be dry sometimes, but is nevertheless great for picking up advanced skills. You can even certify your skills by taking a proctored test and getting the university credit that comes with it. The key to surviving these online courses without snoozing on all the lectures is playing them at 2x speed!

    Programming Languages: Python, JavaScript, HTML, CSS, Objective C, R, Java, Swift, Perl, Lisp

    Technical Frameworks, Tools, and APIs: D3.js, Google AppEngine, Hadoop, MapReduce, MongoDB, jQuery, AJAX, Git, WebGL, Android API

    Difficulties: Intermediate, Advanced

  5. EdX

    What goes for Coursera also goes for EdX. They have very advanced, specific topics. Elite universities (Harvard, MIT, etc.) have released course content on this platform for all to try. Be ready to really commit though!

    Programming Languages: Python, JavaScript, HTML, CSS, Objective C, R, Java, Swift

    Technical Frameworks, Tools, and APIs: D3.js, Google AppEngine, Hadoop, MapReduce, MongoDB, jQuery, AJAX, Git, WebGL, Android API

    Difficulties: Intermediate, Advanced

  6. Khan Academy

    Khan Academy takes a more formal/ lecture approach, while still limiting the topics to useful technologies and concepts.

    They recognized the prominence of repetitive content out there and tried to differentiate themselves in that manner. Therefore, you'll still see the beginner content on there, but the real gold is the formal algorithms/ math approach, along with lessons on how to use unique, powerful technologies like ProcessingJs and Bitcoin. It's a favorite of mine for the more advanced topics!

    Programming Languages: SQL, JavaScript, HTML, CSS

    Technical Frameworksand APIs: Bitcoin, ProcessingJs

    Difficulties: Beginner, Intermediate, Advanced

  7. Code.org

    The pioneer of the "Hour of Code" is Code.org. They brought programming into the limelight, and even featured President Obama writing his first line of code. This is worth mentioning for the younger students and people who have limited technical experience. It's more of a first step than a true technical training platform, but it can open the gateway for interested students.

    Programming Languages: N/A

    Technical Frameworks, Tools, and APIs: N/A

    Difficulties: Beginner

  8. Sebastian Lague (YouTube Channel)

    I threw this YouTube channel on the list for the aspiring game developers out there. Previously, I've been talking about app development and web development, but if you want to create a rich gaming experience, the way to go is by using a powerful game engine. Many game development companies use proprietary game engines developed by their own engineers, but some games actually use existing engines. Think of a game engine as a framework to build your world off of. The main one for beginner indie developers is Unity3D. It's very powerful, complete with an advanced physics engine, and better yet, it has a free version, so anyone can develop their own games. Sebastian has the best tutorials around, and don't skimp on the explanations of good programming practice. Unfortunately, you'll have to install the software yourself, but at least you'll be able to have a working game by the end of his tutorials. 

    Programming Languages: C#

    Technical Frameworks, Tools, and APIs: Unity3D, Blender

    Difficulties: Beginner, Intermediate

  9. Learn X in Y Minutes

    This is more of a programming reference, but it can help you learn syntax and common functional aspects of the language really quickly. Helpful for learning at all ranges: beginner syntax, intermediate functionality, and advanced recipes for doing specific tasks. The benefits are that this is great for a reference and for more advanced programmers to quickly pick something up in minutes. It's also very comprehensive. It is, however, hard for beginners to understand what's going on and how to actually use this to program. 

    Programming Languages: C, C#, C++, Clojure, CoffeeScript, Lisp, CSS, F#, Go, Groovy, Haskell, JavaScript, Lua, Markdown, MatLab, Objective C, OCaml, Perl, PHP, Python, R, Ruby, Standard ML, Visual Basic, XML, Yaml

    Technical Frameworks, Tools, and APIs: Git, JSON, Bash

    Difficulties: Intermediate, Advanced

     

     

  10. Learn Code the Hard Way

    It's not actually hard! Some people are disoriented by the title of this website, but it's a very to-the-point but sarcastic kind of tutorial. The meaning of the title kind of reinforces their belief in learning good programming practices from the start. They believe in rigorous learning by straight-up doing. It's focused learning instead of passive learning. It's an admirable approach, but may be intimidating at first. 

    Programming Languages: Python, Ruby, C, SQL

    Technical Frameworks and APIs:  N/A

    Difficulties: Beginner, Intermediate

The best beginner resource for picking up programming quickly: Codeschool.

The best comprehensive resource that'll teach you a language and what you can do with it: Udacity

The best reference: Learn X in Y Minutes

The best game dev resource: Sebastian Lague's YouTube Channel

The best formal learning site: EdX

The best site to let your school-age child try: Code.org / Codeschool

Never forget that if you find one of the resources don't fit your learning mindset, model, or goals, you can always give another resource a try. Many students I've found have recommended very varied beginner languages, tutorials, and websites. This is due to the large variation in students' most preferred and effective learning models. Don't be discouraged if something doesn't resonate with you, because it's likely another site can be more engaging for your learning style in particular. Good luck and happy learning!