Update 10/19: Added a new course, "How to Code - Simple Data"
New to programming? We picked out 25 MOOCs and courses you can take online to get you started. These are courses that are perennial favorites among our users and staff.
These courses are completely free. The only instance in which you would need to pay is if you decided you wanted an optional verified certificate.
More importantly, we've made sure the content and materials covered in these courses are up-to-date, so you can rest assured you're learning only what's relevant.
Why learn programming?
It's no secret: programming talent is in high demand. Job growth for software developers has outpaced the broader labor market for the past decade and is projected to do so for the next decade. Meanwhile, salaries remain high, with the median salary for a programmers at $102,280.
High demand for talent isn't the only driver for high pay. Programmers do important work that can contribute significantly to any organization's bottom line. Some build applications, while others manage systems or develop creative solutions to complex problems.
Increasingly, professionals in non-technical roles and functions are learning programming as well. Anyone, from analysts and data scientists to marketers and content creators, can benefit from learning a bit of programming to gain an edge in the competitive job market.
For example, just about every job has its set of repetitive and mundane tasks. A little programming knowledge can go a long way in automating away those tasks away so you can free up time to make a bigger impact elsewhere.
Which programming language?
This question comes up a lot and it's one I recall myself asking when I first started programming. We won't drill down into the nitty-gritty, but you can get an idea of what's popular from IEEE Spectrum and GitHub's respective rankings.
Most of the free online programming courses we'll look at teach primarily in either Python or Java, two of the most popular languages used in almost any organization. You can't go wrong with either. Additionally, we find it's easier to pick up a new language once you've gotten a solid grasp of one, so fret not about your choice of "first language".
How we organize the list
These appear in no particular order, but we did group them so you can narrow down your choices to the handful that suit your needs
#1-7 are comprehensive introductions are designed to give you the same foundation Computer Science students get in a university. There's a healthy mix of theory and practice. They're challenging for beginners, so you're best off taking these if you can set aside ~10-14 hours per each week to take them.
#8-15 give a broader introduction to programming, suited best if you want use programming as a tool without picking up too much theory. We also recommend these to anyone who wants to better understand what their technical peers in IT / Engineering do on the daily.
#16-22 teach programming in context of building applications for the web or for mobile devices. You might take these to build a dynamic and interactive web and mobile apps. Example technologies and languages taught here include HTML, CSS, JavaScript, Java (for Android), and Swift.
#23-26 teach you programming for specific use cases. Learn how to retrieve and organize data using SQL, generate business insights using code, or perform statistical analysis using a programmable statistical package like R.
The list itself - our picks
Without further ado, here are our choice picks for beginner programmers.
- Introduction to Computer Science and Programming Using Python from MIT
- Introduction to Computer Science from Harvard University
- Intro to Computer Science from Udacity
- Introduction to Java Programming – Part 1 from Hong Kong University of Science and Technology
- Introduction to Java Programming – Part 2 from Hong Kong University of Science and Technology
- AP Computer Science A: Java Programming from Purdue University
- How to Code: Simple Data from University of British Columbia
- Programming Foundations with Python from Udacity
- Learn to Program in Java from Microsoft
- Learn to Program: The Fundamentals from University of Toronto
- Introduction to Python: Absolute Beginner from Microsoft
- Introduction to Python: Fundamentals from Microsoft
- Object-oriented Programming in Python: Create Your Own Adventure Game from Raspberry Pi Foundation
- Begin Programming: Build Your First Mobile Game from University of Reading
- Logic and Computational Thinking from Microsoft
- Introduction to Web Development from University of California, Davis
- Intro to HTML and CSS from Udacity
- Full Stack Foundations from Udacity (Prerequisites: Take #8 and #23 first)
- Swift for Beginners from Udacity
- Intro to iOS App Development with Swift from Udacity
- Android for Beginners from Udacity
- Android Development for Beginners from Udacity
- Intro to Relational Databases from Udacity
- Data Analytics in Business from The Georgia Institute of Technology
- Introduction to R for Data Science from Microsoft
- Computing for Data Analysis from The Georgia Institute of Technology