The Report by Class Central

Disclosure: Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Best Courses

10 Best Free Programming Courses to Take in 2022

Want to learn how to code without sacrificing your wallet? Here are the best free programming courses.

In this article, I’ve compiled the best free online courses to learn programming. I’ve ranked them according to a well-defined methodology that you can read about down below.

But if you’re in a hurry, here are my top picks. Click on one to skip to the course details:

Course Workload In Brief
1. Programming for Everybody (Michigan) 28 hours Best programming course for beginners
2. Computing in Python I (Georgia Tech) 50 hours Rigorous and well-rounded course for the dedicated
3. Programming Languages, Part A (Washington) 30–40 hours Excellent intermediate functional programming course
4. Computer Science: Programming with a Purpose (Princeton) 90–100 hours Awesome all-around introduction to Java programming
5. An Introduction to Interactive Programming in Python (Rice) 50 hours Project-based course for hands-on learners
6. Programming Fundamentals (Duke) 18 hours Introduction to programming —  algorithm focused
7. Introduction to Programming with MATLAB (Vanderbilt) 35 hours Introductory programming course for  engineers and scientists
8. Responsive Web Design (freeCodeCamp) 100–300 hours Learn to build beautiful site —  with free certificate
9. JavaScript Basics (UC Davis) 21 hours Bring websites to life after building them
10. Code Yourself! An Introduction to Programming (Edinburgh) 12 hours total Friendliest programming course for beginners in this ranking

What is Programming?

In essence, programming is the art of effectively telling a computer what to do. It is writing instructions for a computer to execute in order to accomplish a specific task. The simplest of things must be spelled out for the computer. Thanks to some clever mathematics and engineering, humans were able to make chips of sand understand the laws of logic.

Unfortunately, computers only understand the language of 0s and 1s, so us humans must communicate with them in a different way. People have invented many different languages that allow us to talk to the computer to get a result. These human-readable languages can be converted into the 0s and 1s that computers understand.

But different programmers try to achieve different tasks with computers. Some programmers want the computer to build websites (web developers), while others want to create useful tools (software engineers) or develop fun interactive media (game developers).

Since programming is so wide and diverse, there are many different industries and fields that one can specialize in, and some fields may pay more than others. Nonetheless, programmers are widely sought after as they keep the digital blood flowing.

According to the US Bureau of Labor Statistics, software development employment is expected to rise by 22% through 2030. And according to Glassdoor, the national average salary for a programmer is $74,013 in the United States.

Course Ranking Methodology

I built this ranking following the now tried-and-tested methodology I used in my previous rankings. It involves a three-step process:

First, let me introduce myself. I’m a content writer for Class Central, the leading search engine for online courses.

I (@elham) built this ranking in collaboration with my friend and colleague @manoel.

To build this ranking, we scoured through Class Central’s database of close to 60K online courses for the best courses by looking at things like ratings, reviews, and bookmarks. This data-driven process helped us come up with a bunch of the best courses out there.

Good courses get noticed by word of mouth — and the very best tend to gather a lot of attention. That said, reviews don’t always tell the whole story. In fact, some courses are so good at hugging the spotlight that other excellent resources can go unnoticed. So the next step was to bring our own knowledge of online education into the mix.

Second, we used our experience as online learners to evaluate each preliminary pick.

We both come from computer science backgrounds and are prolific online learners, having completed about 45 MOOCs between us. Additionally, Manoel has an online bachelor’s in computer science, while I am currently completing my foundation in computer science. So programming is a subject that we were both very familiar with.

We analyzed and sifted through the courses, ranking them one by one. We bounced ideas off each other and made iterative improvements to the rankings, until we were both satisfied with the end result: the ranking you’re reading right now.

Third, during our research, we came across courses that we felt were well-made but unfortunately weren’t well-known. If we adopted a purely data-centric approach, we would have to leave those courses out of the ranking, if only because they had fewer enrollments.

Instead, we favored a holistic approach. To spice up this ranking, we’ve added a wide range of courses of various programming languages to hopefully appeal to our reader’s preference.

After going through this process — combining Class Central data, our experience as lifelong learners, and a lot of editing — we arrived at our final ranking. So far, we’ve spent more than 10 hours building this ranking, and we intend to continue updating it in the future.

Course Ranking Statistics

I’ve presented some aggregate stats about the ranking:

  • In total, the course enrollment sums up to 4 million enrollments, with the largest course having close to 2.5 million enrollments.
  • Every course in this ranking is free or free-to-audit.
  • The courses in this ranking account for a total of 38,338 reviews on Class Central.
  • All the courses in this ranking are beginner friendly, except for Programming Languages, Part A.
  • Coursera is the most popular provider in this ranking.
  • Around 410k people are following Programming Courses on Class Central.

Enough statistics, let’s go through the top picks.

1. Programming for Everybody (University of Michigan) 

Charles Severance, aka Dr Chuck, the course instructor

The first course I’d recommend to anyone new to programming would be Programming for Everybody, offered by the University of Michigan on Coursera. With close to 2.5 million enrollments on Coursera, this course is the most popular Python course out there and one of the most popular online courses ever.

The course introduces you to the Python programming language. Python is easy to learn due to its elegant simplicity. It is the most-popular language according to the TIOBE index, and is incredibly versatile — capable of handling with ease tasks ranging from web development to machine learning. 

This course is designed for complete beginners. It will teach you the foundations of programming which will transfer over to many other programming languages. All you need to know prior to taking this course is some basic arithmetic.

What You’ll Learn

What is a computer? How does a computer run a program? Why is it easy for bugs to pop up in code? These are the questions the first part of the course seeks to answer. Do you know what the two fundamental skills of programming are? Knowing the programming language (duh!) and telling a story. Yes, programmers should be able to tell a descriptive story for the computer to follow and interpret. It’s a funny way of putting it, but that’s programming in a nutshell.

Then, you’ll install Python and choose a code editor (the course recommends Atom). You’re now ready to write your first line of code — print(“Hello World!”). 

You’ll start by studying the basic vocabulary and grammar of Python, to start constructing your own story. You’ll learn about variables and expressions which store and compute values. You’ll control the flow of your story by using conditionals like ‘if’ and ‘else’, as well as repeat parts of your story with loops and iterations like ‘while’ and ‘for’. Additionally, you’ll know how to pass arguments to functions which allows you to reuse your code. Bye bye copy and paste!

By the end of the course, you’ll write a program that accepts input from the user, computes a result, and returns output back to the user. It may not seem like much, but it is a huge step toward becoming a programmer.

How You’ll Learn

The course is 7 weeks long, with a total of 19 hours of learning material. It comes with a companion website where you’ll code and submit your assignments (only if you have paid for the certificate). The book that the course is based on is freely available on the website.

Institution University of Michigan
Provider Coursera
Instructor Charles Severance (aka Dr. Chuck)
Level Beginner
Workload 28 hours total
Enrollments 2.5M
Rating 4.8 / 5.0 (205K)
Certificate Paid

Fun Facts

  • This course is the first of five in the specialization Python for Everybody. If you’d like to round up your Python skills after finishing this course, here’s the next one in the series: Python Data Structures — which can also be audited for free.
  • Each week of the course contains a bonus video where Dr. Chuck interviews several notable programmers, one of them being Guido van Rossum, the creator of Python himself.
  • This course has over 124K bookmarks and 35K reviews on ClassCentral!
  • Dr. Chuck’s course is part of both our list of most popular courses of all time and best courses of all time. So yeah, this was an easy first pick!
  • The course instructor Dr. Chuck is a super popular instructor. If you like his teaching, be sure to check out his other courses on Django and Web Applications.

If you’re interested in this course, you can find more information about the course and how to enroll here.

2. Computing in Python I: Fundamentals and Procedural Programming (Georgia Institute of Technology)

David Joyner, the course instructor

My second pick for the best course on programming is Computing in Python I: Fundamentals and Procedural Programming by the Georgia Institute of Technology on edX.

Although the course uses Python as the instructional programming language, it also exposes you to several fundamental concepts in programming and computer science. Concepts that carry over to every other programming language out there. By the end of this course, you’ll understand how to write programs that carry out complex mathematical operations, like calculating the interest rate necessary to reach a savings goal.

The course is taught by Dr. David Joyner. My colleague Manoel has taken four of his courses in the context of his online master’s degree (and he has even met the guy!). He has only good things to say about David Joyner and his courses, which are always carefully thought out, in particular in terms of instructional design and teaching methods.

The only thing you need prior to taking this course is basic arithmetic.

What You’ll Learn

The course starts with an introduction to computing and explains how computers work. As a programmer, you’ll work with computers a lot, so having a basic understanding of these machines is essential! You’ll then learn the jargon of computing and understand how code processing works.

After setting up your programming environment, you’ll be introduced to a couple of the basic principles of programming, like the difference between compiling and executing code and the write-run-debug cycle. You’ll know how to analyze the results of running your code and use those results to revise it.

Next, you’ll be introduced to the paradigm of procedural programming in Python. You’ll realize that a program is just sequences of lines of code that is executed to fulfill a purpose, and that programs can be chained to achieve more complex functionality.

Lastly, you’ll study what variables are and how to create them, the different data types (like integers, floats, and strings), as well as the reason we need variables in programming. You’ll be introduced to mathematical, relational, and Boolean operators and understand how to use them to express complex logical relationships in code and even make “decisions” such as running certain lines of code only if a predefined condition is met.

How You’ll Learn

The course consists of 5 weeks of material, with an expected 9–10 hours of work per week. The course comes with an online book. Each week is dedicated to a specific area of computer science and programming, so you may skip to areas you already know to make the best use of your time.

There are two kinds of assessments you’ll be able to complete if you audit the course for free: exercises and two practice tests. If you’re a verified learner, you’ll have access to chapter-level problem sets and complete a timed assessment at the end of the course.

Institution George Institute of Technology
Provider edX
Instructor David Joyner
Level Beginner
Workload 50 hours total
Enrollments 208K
Rating 4.8 / 5.0 (213)
Certificate Paid

Fun Facts

  • The course is part of the Introduction to Python Programming Professional Certificate, which closely matches Georgia Tech’s undergraduate introduction to computer science, providing you with the skills needed to explore more advanced concepts and prepare for the professional world.
  • The professional certificate this course is part of earned Bronze Award for Computing & IT at the 2020 Reimagine Education awards.
  • The course has 13.6K bookmarks and a whopping 4.8 stars out of 5.0 rating on Class Central, with several hundred reviews.
  • For all practical purposes, you’ll be completing the same course that students at undergrad Georgia Tech students take for credit.

If you’re interested in this course, you can find more information about the course and how to enroll here.

3. Programming Languages, Part A (University of Washington)

Dan Grossman, the course instructor

If you’re looking to be a well-rounded programmer, Programming Languages, Part A has your back. It’s my third pick for the best programming course. Offered by the University of Washington on Coursera, this course introduces you to the basic concepts of programming languages, with a focus on functional programming.

The course is designed to teach students the core ideas around which every programming language is built upon. The point of the course is not to teach you SML, Racket or Ruby

Instead, it aims to show you the fundamental concepts that can be found and expressed in almost all programming languages, using these three different languages as an example. This allows you to think more deeply about the underlying ideas, and about how these ideas fit together instead of being distracted by surface-level syntax. 

Why functional programming? Well, functional programming encourages you to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it.

This course is one of the most challenging MOOCs out there, but it is immensely rewarding. Not only will you learn new languages faster, but you will also become a better programmer even in languages you don’t use!

Programming Languages, Part A assumes you have some programming background or have taken one or two introductory programming courses. If you’re a complete beginner, you should check out the other courses in this ranking before tackling this course.

What You’ll Learn

Part A of the course covers the basics of SML programming, recursion, data types, pattern-matching, tail recursion, first-class functions, closures, type inference, and modules.

After installing and setting up Emacs and SML/NJ, you’ll get started with the basics of SML programming. You’ll start simple, by learning about variables, numbers, conditionals, and functions.  You’ll then wade through unfamiliar territory when you look at how pairs and lists are used as two complementary ways to build compound data. Furthermore, you’ll consider let expressions for local bindings, including nested functions, and the importance of bindings for efficiency. This will provide a more general perspective on the benefits of programming without mutation and the different aspects of a programming language. 

The next focus of the module will be on creating your own types: defining new types, building values of such types, and using those values. You’ll discuss the key distinction in how to think about compound types (types built out of smaller types). You’ll then use pattern matching to access the pieces of values built out of compound types, generalizing the idea to support nested patterns, as well as realize how SML uses pattern matching in every function binding and let expression, even when it does not seem like it. Finally, you’ll study tail recursion, which is the primary concept one needs to reason about the efficiency of SML programs, and in general any functional program using recursion.

Moving on, you’ll study the importance of first-class functions and function closures — the coolest (and most important!) part of functional programming. Starting with the basics of passing and returning functions from other functions, you’ll learn about ‘map’ and ‘filter’ and understand the relationship between first-class functions and polymorphic types. You’ll then dig into lexical scope, the key aspect of the semantics of a function that uses variables defined outside the function itself. A couple of examples using first-class functions are provided to demonstrate their usefulness.

In the final section of the course, you’ll explore how SML does type inference, including inferring polymorphic types. You’ll learn how to perform mutual recursion, and about SML’s module system and how it ties in with the fundamental ideas of encapsulation and abstraction. The course ends with a substantial discussion of what it means for two functions to be equivalent and how functional programming, particularly the lack of mutation, allows for more constructs to be equivalent. If you have read this far, pat yourself on the back — you’ve come a long way!

How You’ll Learn

The course is 5 weeks long with 30 hours worth of material, although you may take up to 40 hours to complete the course due to its rigor. You’ll make use of both video lectures and the reading materials, both excellent resources to learn from.

There are three homework assignments that you’ll have to complete in order to get a grade. These assessments aim to challenge your understanding of the material, so be prepared to put some effort into it. You’ll also have an opportunity to share and learn from other learners’ code. You do not need to pay for the certificate in order to be graded.

Institution University of Washington
Provider Coursera
Instructor Dan Grossman
Level Intermediate
Workload 30–40 hours total
Enrollments 135K
Rating 4.9 / 5.0 (1.6K)
Certificate Paid

Fun Facts

  • Part A is the first of the Programming Languages series, followed by Part B, and Part C. You are recommended to complete the entire series to fully experience the elegance of functional programming.
  • The course has 26K bookmarks on Class Central.
  • Dan Grossman’s research has resulted in over 50 peer-reviewed publications covering the theory, design, and implementation of programming languages, as well as connections to computer architecture and software engineering.

If you’re interested in this course, you can find more information about the course and how to enroll here.

4. Computer Science: Programming with a Purpose (Princeton University)

Robert Sedgewick, the course co-instructor

Computer Science: Programming with a Purpose by Princeton University on Coursera is an extremely comprehensive introduction to programming in Java.

The intent of this course is to teach programming in a scientific context. It teaches basic skills for computational problem solving applicable in many modern computing environments. After taking this course not only will you be proficient in Java, but you will also understand several fundamental concepts found in other programming languages.

This course is suitable for first-year college students and even motivated high schoolers. It doesn’t require prior programming experience.

What You’ll Learn

The course starts off by addressing the question “Why program?” Then, it describes the anatomy of your first program and the process of developing a program in Java with some historical context. 

You’ll then move on to basic Java programming concepts like conditional statements and loops. Another feature you’ll learn is arrays. Computing with a large sequence of values of the same type is extremely common, and you’ll use arrays to shuffle a deck of cards and traverse a grid.

Afterwards you’ll learn how to interact with programs and present information to the outside world, known as input and output by programmers. You’ll see how Java can be used to create fractal drawings that model natural phenomena and create an animation of a ball bouncing around in the display window.

You’ll learn about functions and libraries, a fundamental mechanism that enables modular programming —  breaking a program into pieces that can be individually developed. This forms the backbone of recursion, a subject you’ll discuss through several classic examples, like the Tower of Hanoi. A scientific approach to measure and understand performance will then be used to describe the running time of a program.

You’ll move on to object-oriented programming in Java. You’ll create your own data types and use them in your programs as abstract representations of real-world concepts. This will culminate into coding a program that uses complex numbers to create visual representations of the famous Mandelbrot set.

The course concludes with an overview of important issues surrounding programming languages. You’ll be shown the important differences among these languages and address fundamental issues, such as garbage collection, type checking, object oriented programming, and functional programming with some brief historical context.

How You’ll Learn

The course is 10 weeks long, with 88 hours worth of material. You’ll watch and learn from a lot of video lectures. 

You’ll have access to all the programming exercises that you’ll have to complete to test your coding skills, after which you’ll be graded. No payment is required.

Institution Princeton University
Provider Coursera
Instructors Robert Sedgewick and Kevin Wayne
Level Beginner
Workload 90–100 hours total
Enrollments 148K
Rating 4.7 / 5.0 (600)
Certificate None

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

5. An Introduction to Interactive Programming in Python (Rice University)

Joe Warren, one of the course instructors

An Introduction to Interactive Programming in Python (Part 1) by Rice University on Coursera is my next pick.

The aim of this course is to help students with very little to no programming background learn the basics of building simple interactive applications in Python. It is heavily project-based, encouraging you to build and research things from scratch, an invaluable skill for developers in the real world.

While it’s a beginner course, it isn’t meant to be easy. The philosophy of the instructors is that the harder you work, the faster you learn. So, you’ll have to dedicate a significant amount of effort to complete the course.

To take this course, you’ll need some background in high school mathematics (like the Pythagorean theorem). Another thing to note is that this course uses Python 2 but is nonetheless still a good introduction to programming.

What You’ll Learn

The course begins by introducing Python as a calculator. You’ll learn how to express arithmetic expressions in Python and how to assign values to variables. Make sure to give your variables good names! 

Next, functions will be introduced through both a programmatic and a visual perspective. This will give you an understanding on how functions work and how errors may arise from them. The instructor also gives tips on how to debug your code based on the results it’s producing — debugging is part of the process when programming . You’ll learn logical and comparison operators, along with conditional statements, and use these concepts to build a rock-paper-scissors-lizard-Spock game

Moving on, you’ll be instructed on the basics of event-driven programming, which are essential to build games and applications. Then, you’ll learn what local and global variables are, which will culminate in you building a simple responsive graphical user interface for a number guessing game.

You’ll learn how to process strings given by the user and draw text and shapes on a canvas. You’ll use this concept to build a digital stopwatch that’ll keep track of time to the tenths of a second. 

At the end of the course, you’ll recreate the classic game Pong in Python. Along the way, you’ll learn how to work with lists, how to read keyboard input from the user, how to draw and simulate the movement of the ping pong ball in your application, and how to keep track of who won and who lost. This will serve as testament to your ability to create applications with lots of moving parts.

How You’ll Learn

The course is split into 5 weeks, with each week involving around seven to ten hours of material, including a weekly project. The course comes with a companion website called CodeSkulptor, where you’ll run and submit your Python scripts.

Each week has two auto-graded quizzes and a weekly project that is peer-graded.

Institution Rice University
Provider Coursera
Instructors John Greiner, Stephen Wong, Scott Rixner, Joe Warren
Level Beginner
Workload 50 hours total
Enrollments 195K
Rating 4.8 / 5.0 (3.1K)
Certificate Paid

Fun Facts

  • The course has 97.8K bookmarks and 3.3K reviews on Class Central.
  • Once you have completed this course, you should move on to the second part.
  • An Introduction to Interactive Programming in Python (Part 1) is the first of seven courses that make up the Fundamentals of Computing Specialization. Upon receiving the specialization certificate, you’ll have completed 20+ projects, including a capstone project.
  • Dr. Scott Rixner, one of the course instructors, has worked and developed Python interpreters for both embedded systems and web browsers. He knows his stuff!

If you’re interested in this course, you can find more information about the course and how to enroll here.

6. Programming Fundamentals (Duke University)

Anne Bracy, one of the course instructors

Duke University’s Programming Fundamentals is an excellent introduction to algorithms and programming. The language the course uses is C.

Programming is fundamentally about figuring out how to solve various classes of problems and write algorithms, a clear set of steps to solve any problem in its class. This course will introduce you to a powerful problem-solving process — the Seven Steps — which you can use to solve any programming problem. In this course, you will learn how to develop an algorithm, then move on to reading and understanding code, as well as comprehending how programming concepts relate to algorithms.

You do not need any programming experience prior to taking this course.

What You’ll Learn

The first module introduces a powerful process for solving any programming problem — the Seven Steps. You will learn how to approach a programming problem methodically, so that you can formulate an algorithm that is both precise and correct. At this point, you should have a basic grasp on the idea of developing simple algorithms.

In the second module, you’ll learn to read code. This means you will be able to execute a piece of code by hand, and clearly illustrate what each statement does and what the state of the program is. Understanding how to read code is the only way to be sure you aren’t blindly writing code! By the end of this module, you will be able to read and understand code with functions, conditional statements, iteration, and other fundamental techniques.

In the third module, you’ll learn about types beyond integers, both their conceptual representations, and their hardware representations in binary. Everything is a number to a computer, but types determine the size and interpretation of numbers. You’ll study the basic data types, ‘non-number’ types, and complex, custom types, as well as some important caveats, so that you’ll avoid type-related programming mistakes.

The fourth and final module will entail developing and testing your own algorithm for sorting data. This will help reinforce the importance of being specific when you write an algorithm and provide an opportunity to perform a very common computational task: sorting.

How You’ll Learn

The course is 4 weeks long, with 18 hours worth of material. You’ll primarily learn through video lectures along with some supplementary reading materials. 

There are multiple quizzes that you’ll complete throughout the course, and each module ends with a graded quiz to test your understanding. You’ll need to have paid for the certificate to complete the graded quiz, though.

Institution Duke University
Provider Coursera
Instructors Andrew D. Hilton, Genevieve M. Lipp and Anne Bracy
Level Beginner
Workload 18 hours total
Enrollments 168K
Rating 4.7 / 5.0 (6K)
Certificate Paid

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

7. Introduction to Programming with MATLAB (Vanderbilt University)

Akos Ledeczi and Michael Fitzpatrick, the course instructors

Are you an engineer or a scientist with little to no coding experience who wants to learn programming to boost your marketable skills? Introduction to Programming with MATLAB might be the perfect course for you.

You’ve most likely heard of MATLAB before, as it is heavily used in industry and academia, from the natural sciences, through all disciplines of engineering, finance and beyond. This is because MATLAB is easy to learn, versatile and very useful for scientific computing. The design of the language makes it possible to write powerful programs that solve complex tasks in just a few lines, compared to other programming languages like C++ or Java.

Hence, a solid background in MATLAB is an excellent skill if you’re interested in scientific computing.

Nevertheless, this course is not a MATLAB tutorial. It is an introductory programming course that uses MATLAB to illustrate general concepts in computer science and programming. Upon completion, you’ll understand the general concepts of computer science and programming, and gain a solid foundation in the use of MATLAB.

Students taking the course will get a MATLAB Online license free of charge for the duration of the course.

What You’ll Learn

The course begins with an introduction to the MATLAB environment and user interface, where you’ll learn how to use MATLAB as a sophisticated calculator and how to create plots.

Then, you’ll learn how to work with basic unit of MATLAB — the matrix. We solve problems by manipulating matrices, and operators are the primary means by which we manipulate them. You’ll learn how to define matrices, extract parts of them and combine them to form new matrices, and become familiar with the operators and the orders of operations in MATLAB. Afterwards, you’ll learn how to create and use functions to break down problems into smaller, more manageable and reusable parts. 

The next section of the course deals with the many built-in functions in MATLAB. You’ll learn about polymorphism, the MATLAB random number generator, how to get input and print to the Command Window, how to plot graphs in a Figure window, and how to use MATLAB’s debugger.

Moving on, you’ll learn about basic MATLAB programming like selections and loops.

You’ll learn how to use the if-statement, which is the most important method of selection, along with the for-loop and the while-loop.

MATLAB has 15 fundamental data types, and you will study them in this section of the course. The course describes the ten types of numbers and how to convert one type into another. You’ll learn much more about strings, how to produce heterogeneous collections of data via structs and cells, and lastly, how to store points in time and time durations.

In the final part of the course, you’ll be introduced to MATLAB’s most important methods for reading and writing files — like MAT-files, Excel files, text files, and binary files — and how to navigate through folders with MATLAB commands. You now have a comprehensive understanding of MATLAB programming and programming in general!

How You’ll Learn

The course is 9 weeks long, with 35 hours worth of material. You’ll learn primarily from video lectures, although there are a few supplemental resources.

The best part about this course is the many programming assignments (20+) that the course provides for you to test your MATLAB coding skills, along with quizzes that’ll test your conceptual understanding. Unfortunately, you can only receive a grade if you are paying for the certificate.

Institution Vanderbilt University
Provider Coursera
Instructors Akos Ledeczi, Michael Fitzpatrick and Robert Tairas
Level Beginner
Workload 35 hours total
Enrollments 428K
Rating 4.8 / 5.0 (16K)
Certificate Paid

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

8. Responsive Web Design (freeCodeCamp)

freeCodeCamp’s in-browser code editor

If you’re a complete newbie with no programming experience who wants to learn how to build websites, you should start with this course.

Responsive Web Design teaches you the languages that developers use to build webpages: HTML (Hypertext Markup Language) for content, and CSS (Cascading Style Sheets) for design. The course guides you through the basics of HTML and CSS by building many different bite-sized projects and five big ones!

What You’ll Learn

In the first part of the course, you’ll learn the most common HTML tags to give structure to your website by building your own cat photo app. You’ll add color and change the fonts to a webpage with CSS by designing a cafe menu. Then, you’ll build a set of colored markers; teaching you the different ways of setting and pairing color values with each other to improve the aesthetic appearance of a webpage. Afterwards, you’ll learn HTML forms by building a signup page. The first certification project results in you making a survey form to collect data from your user

The second part of the course introduces you to the CSS box model by creating a Rothko-style rectangular art piece. You’ll also need to ensure that your webpage looks good on any screen size by building a photo gallery with CSS flexbox. Then, you’ll study typography by making a nutrition label, and accessibility (an often skimmed over topic!) by creating a quiz webpage. The second certification project requires you to create a tribute page for a subject of your choosing, fictional or real.

Moving on to the third part of the course, you’ll make webpages respond to mouse hovers by making a balance sheet using pseudo selectors. You’ll then dive deeper into the intermediate techniques of CSS by building a Picasso painting. Coding a piano will teach you more about responsive design. Your third certification project will be building a technical documentation page to serve as instruction or reference for a topic.

In part four of the course, you’ll build a city skyline and see how CSS variables help you organize your styles and reuse them whenever you want. You’ll want to have control over the grid rows and grid columns of your webpage by using CSS grid to build a magazine article. Marketing a product of your choice with a product landing page will be the fourth certification project you’ll have to complete.

The last chapter of the course will teach you how to make your websites look lively and professional. You’ll create a background and use positioning and resizing to animate a penguin with CSS transforms and use CSS animation to make specific sections of your web page more engaging by building a moving ferris wheel. The fifth and final certification project involves showing everything you’ve learned in the course by building your own personal portfolio page. You’ve built a lot of projects, congratulations!

How You’ll Learn

The course is split into 5 sections, with each section ending with a project you’ll need to complete to earn a certificate. You’ll learn primarily by doing the hundreds of short exercises in each section.

You’ll also gain experience in building a web page from the ground up. A valuable skill for any developer!

Institution freeCodeCamp
Level Beginner
Workload 100–300 hours total
Rating 4.6 / 5.0 (60)
Certificate Free

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

9. JavaScript Basics (University of California, Davis)

William Mead, the course instructor

If you have done the previous course, or you have tried building a nice-looking website with HTML/CSS but don’t know where to go from there, pick this course from the University of California, Davis.

JavaScript is the programming language used by over 97% of websites. It is used to manipulate the HTML and CSS of a webpage, after it has loaded from the server. In a way, it brings life to a static HTML/CSS website.

JavaScript Basics — well, introduces you to the basics of JavaScript. You’ll learn the reason JavaScript was developed in the first place, and how this impacts the way JavaScript is currently written and in future releases. By the end of the course, you’ll have the necessary skills needed to build a simple vacation destination list web application.

You’ll need some background in HTML and CSS in order to take this course. Other than that, no programming experience is required.

What You’ll Learn

The course starts with an introduction to JavaScript and what it can do. You’ll learn the history of JavaScript and explore JavaScript syntax. After a brief assessment of your understanding of HTML and CSS, you’ll write simple JavaScript statements in the web browser console and be able to create variables and arrays. You’ll start by assigning values to these variables and arrays and reading values from them.

Once you have written your first line of JavaScript code, you’ll then choose a code editor to write code and manage your files. With that out of the way, you’ll be given an introduction to the three logical flow control structures: sequence, selection, and loop. You’ll identify, write, and troubleshoot scripts using these basic control structures, and then put them all together to create basic JavaScript programs that can be tested. Finally, you’ll combine sets of programming instructions into named functions and create custom functions that can be called to execute the instructions they contain.

Alright, let’s get to the fun part: building an interactive website. This is where you’ll start using built-in JavaScript methods for accessing and manipulating Document Object Model (DOM) elements — representation of the page’s structure, style, and content. We can capture user events with JavaScript and use those events to trigger changes to the DOM, but take note of scopes. You’ll learn best practices for working with variables in JavaScript so that scope does not become a problem. And to top it all off, you’ll put together a simple slideshow on a web page.

The course culminates in building a simple vacation destination list application — your first web application! You’ll design a website and furnish it with an advanced distance converter. 

How You’ll Learn

JavaScript Basics is 4 weeks long, with 21 hours worth of material. You’ll mainly learn through video lectures, with additional resources available for you to take a look at.

The course provides 30 challenges with the answers for you to test your JavaScript skills. There are 4 graded weekly quizzes to complete if you’re paying for the certification.

Institution University of California, Davis
Provider Coursera
Instructor William Mead
Level Beginner
Workload 21 hours total
Enrollments 22K
Rating 4.7 / 5.0 (350)
Certificate Paid

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

10. Code Yourself! An Introduction to Programming (University of Edinburgh)

Areti Manataki and Inés Friss de Kereki, the course instructors

If you have looked through all the courses in this list and felt intimidated by their difficulty and strangeness, this last pick is for you.

A collaboration between the University of Edinburgh and Universidad ORT Uruguay, this course will teach you how to program in Scratch. More importantly, it will introduce you to the fundamental principles of computing, helping you think like a software engineer.

Scratch is an easy-to-use drag-and-drop visual programming language. It is an educational tool for programming, so many of the programming concepts in other languages are represented easily here.

What You’ll Learn

Starting with the first unit, you’ll create your very first computer program! You’ll familiarize yourself with the Scratch interface and its friendly features. Then you’ll be introduced to basic programming concepts like algorithms and sequences, the incremental development of programs and simple software testing. The course will teach you about ‘if-then’ statements and infinite loops.

In Unit 2: Code Gone Loopy, you’ll keep working with control structures like count-controlled loops, decision-controlled loops, and the if-then-else selection. You’ll find out how to use events in your programs and how to incorporate visual and sound effects in Scratch. You’ll learn about computational thinking concepts like abstraction (ignoring the unimportant details) and decomposition (breaking down a problem into smaller parts).

In Unit 3: Remixing Games, you’ll have a go at modifying and extending existing games to create new versions. To accomplish this, you’ll learn about variables, complex conditions, nested loops, and a lot of designing! You’ll also learn about software engineering practices for testing and documenting your programs. This will help you better maintain your programs.

Unit 4: Reusing Your Code introduces you to procedures and cloning in Scratch, and you’ll apply the ideas of modularity, flexibility to make your code much neater.

In the fifth and final unit, you’ll think like a software engineer by following all the steps of software development to create (and publish!) your own fun computer game. You’ll learn about software development approaches like the waterfall model, iterative and incremental, prototyping. You’ll also learn a few important coding concepts, like coordinating parts of your code with each other with concurrency and message broadcasting, as well as understanding computational complexity. Congratulations, you are now ready to tackle other programming languages like Python!

How You’ll Learn

The course is 5 weeks long, with 12 hours worth of material. Each week’s material will be delivered as short videos supported by slides and code examples, as well as an optional in-video quiz. 

To help you reflect on the topics covered in each week, the course has included additional interview videos with computer experts and professionals in other fields.

Apart from the quizzes, there will be two programming projects, which will be peer graded. You do not need to pay for a certificate to receive a grade!

Institution University of Edinburgh and Universidad ORT Uruguay
Provider Coursera
Instructors Areti Manataki and Inés Friss de Kereki
Level Beginner
Workload 12 hours
Enrollments 240K
Rating 4.7 / 5.0 (2.7K)
Certificate Paid

Fun Facts

If you’re interested in this course, you can find more information about the course and how to enroll here.

Elham Nazif Profile Image

Elham Nazif

Part-time content writer, full-time computer science student.

Comments 0

Leave a reply

Your email address will not be published. All comments go through moderation, so your comment won't display immediately.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Browse our catalog

Discover thousands of free online courses from top universities around the world like MIT, Stanford, and Harvard.

Browse all subjects