Year-End Discount: 10% OFF 1-year and 20% OFF 2-year subscriptions!

Home/Blog/Learn to code: 15 FREE courses to learn coding from scratch

Learn to code: 15 FREE courses to learn coding from scratch

Oct 20, 2021 - 18 min read
Cameron Wilson

Note: This post was originally published in 2019 has been updated as of Oct. 20, 2021

If you’re thinking about learning to code, figuring out where to start can be one of the hardest parts. Many early developers have started looking at coding bootcamps and online coding courses instead of getting a computer science degree — and for good reason! Coding classes at top universities can be expensive, so to help with that cost barrier, I’ve listed out 15 absolutely FREE courses to help you get your journey started. There is something here for not only beginner devs but senior devs too.

These courses are all part of’s “From Scratch” series, which provides high-quality text-based courses and tutorials for beginning software developers. Our online learning platform features in-browser coding environments, meaning there’s no setup required. They’re complete with quizzes, algorithms, coding tutorials, and challenges to build best coding practices.

1. Learn Python from Scratch


Python is one of the most popular coding languages in the world, in part due to its ability to satisfy multiple use cases. It can be used for web development, data analysis, machine learning, and software development. By learning Python, you’ll open many doors to careers ranging from non-profit work to top tech companies such as Apple.

Learn Python from Scratch begins by exploring the basic building blocks like data types and variables, conditional statements, and data structures. You’ll then move on to more higher-level concepts such as functions and loops. Throughout each section will be quizzes and coding challenges to accompany you along the way and help enforce all the concepts covered in the course.

This course is geared towards learners who have no prior experience programming in Python. It’s also a good refresher course for those of you who haven’t touched Python in a while and would like to get back into it. There’s even a detailed learning path after you finish this course so you’re not left with asking, “What should I learn next as a software engineer?”.

2. Learn Web Development from Scratch: Go Beyond the Syntax


When you start learning about web development, the number of resources that are available on the web can make the task challenging. Should you watch videos on HTML5 and CSS? Which online coding class provides the best content? Do you use Javascript or jQuery? Getting a handle on the number of concepts and jargon surrounding developing applications for the web can be a full-time job in and of itself.

Learn Web Development from Scratch: Go Beyond the Syntax was designed to cover the basics of web design, from semantically marking up your page with HTML to stylizing your content with CSS. Then it introduces you to programming fundamentals with Javascript, and by the end, you’ll be comfortable enough to develop fully-functional web modules using Javascript, including an image carousel and a to-do list application.

Instead of watching endless videos and wondering how to translate those videos into real code, you’ll be practicing what you learn through interactive, text-based exercises. The best part? It’s all at your own pace.

3. Learn Java from Scratch


The need for Java developers is growing every day, and those that specialize in Java enjoy long and very successful careers in software development, game development, and more. There is still a lot of life in Java as it’s currently supporting around 3 billion devices and used at top tech companies like Microsoft, Google, and Apple. One key reason why Java code is special to many programmers is the fact that you only have to write it once and it will run on any operating system in the world without necessitating any modifications. Interested in getting started? Look no further.

Learn Java from Scratch introduces you to fundamental programming concepts in Java. It begins with a simple “Hello World” program and proceeds on to cover common concepts such as Conditional Statements, Loop Statements, Simple Math, and Logic.

Finally, it dives deeper in order to teach about advanced concepts such as Classes & Inheritance, Generics and ArrayLists. By the time you’re done, you’ll be an intermediate level Java developer, ready to take on your own projects.

This course is designed for those with no prior knowledge of programming in Java. With 97 coding lessons, 11 quizzes, and 32 challenges, you’ll quickly level up your coding skills and gain the confidence to explore more challenging concepts.

4. Learn Scala from Scratch


Scala i.e. Scalable Language is by no means a new language but it has seen a resurgence due to its expressiveness, interoperability with Java, and its multiple paradigms. This allows you to work in a variety of styles, freely intermixing constructs giving you a larger number of tools to solve a wider range of problems.

Scala was designed to be a “better” Java, and while that’s open to interpretation, there are many reasons why Java developers prefer Scala. Scala is often seen in an enterprise setting (it’s being used at companies like Twitter and LinkedIn) which is why the starting salary for Scala developers is so high. See What software technologies will earn you the highest pay. Ready to learn Scala?

Learn Scala from Scratch introduces you to fundamental programming concepts in Scala, where it begins with an overview of common concepts such as: variables and types, operators, and how to work with strings.

You’ll then cover some more advanced topics like control structures, functions, higher-order functions, and finally classes and objects. By the end of this course, you’ll have a sound understanding of both functional and object-oriented programming which are crucial paradigms that you need to learn. This course is designed for those who have never programmed in Scala. To get started with this programming course, it will help to have basic knowledge of computer fundamentals. This course is not recommended for individuals who have zero prior knowledge of computer programming. On that note, while it’s not required for you to know Java (the course will assume that you don’t), it might help you pick up concepts and syntax faster if you are familiar with it.

5. Learn C++ from Scratch


C++ notoriously has a steep learning curve, but taking the time to learn this language will do wonders for your career and will set you apart from other developers. You’ll have an easier time picking up new languages, you’ll form real problem-solving skills, and build a solid foundation on the fundamentals of programming.

C++ will help you instill good programming habits (i.e. clear and consistent coding style, comment the code as you write it, and limit the visibility of class internals to the outside world), and because there’s hardly any abstraction, you’re required to define just about every attribute to make your code work; this will force you to really understand what it is you’re doing and how your program will affect the system. Ready to learn?

Learn C++ from Scratch introduces you to the fundamental programming concepts in C++. You’ll begin the course with a simple “Hello World” program and proceed to cover common concepts step-by-step such as conditional statements, loop statements, and functions in C++.

It then reflects upon the idea of pointers and arrays, as well as the power they give to the programmer to write better code. Finally, it dives deeper in order to teach about advanced concepts such as classes, inheritance, and templates in C++ through interactive challenges and exercises.

This course was designed for beginners, and while there is a substantial learning curve, this course condenses what you need to know to get started and it’s all in one place. There is also a dedicated learning path that will guide you on what to learn next, so you’re not left with the question, “Where do I go from here?”.

6. Learn C from Scratch


Look at the nearest gadget to you right now. It’s most likely powered by C. Your operating system is most certainly written — at least in part — in C. So are the drivers.

As the “Internet of Things” (IoT) continues to take prevalence in the world, a lot of it is powered by C. Anything that handles huge amounts of data or requires optimal performance is usually written in C, due to its remarkably small runtime. The world’s most popular databases, like Oracle, MySQL, MS SQL Server, and PostgreSQL, are coded in C. Popular distributed repositories like Git are also written primarily in C.

The incredibly efficient and powerful C language forms the basis for many other languages like C++, Java, and Python. It allows you to interact directly with memory and low-level computer operations, thereby enhancing your programming skills and deepening your understanding.

C is considered a middle-level programming language. For most people, it’s the closest you’ll get to writing machine code. You can program a system, then turn around and design an application that runs on that system. This sandwiches C in between assembly language, and more high-level languages like Java.

Learn C from Scratch will introduce you to all the basic and advanced programming concepts of the C language. It outlines data types, control flow, functions, input/output, memory, compilation, debugging and other advanced topics like parallel programming in a comprehensive and concise manner.

This course is for beginners or mid-level developers. Even if you don’t want to specialize in C, the pros for learning this language far outweigh the cons. By learning C, you’ll pick up other languages more easily, deepen your understanding of concepts like memory management, and clearly understand how what you program affects the system.

7. Learn Dart: First Step to Flutter


Want to develop apps in Android and/or iOS? You should look into Dart and Flutter. Learn Dart: First Step to Flutter is designed for programmers who have never programmed in Dart and want to get started with Flutter.

Dart is a clean, simple, class-based object-oriented language that has more structure than JavaScript, the programming language it is heavily based on. Developed by Google, Dart is great for developers that are interested in having a structure in their programming language so that they can easily do refactoring and build large web applications.

However, you can’t have a conversation about Dart without mentioning Flutter.

Flutter is Google’s mobile UI framework used for crafting high-quality native interfaces on iOS and Android. Flutter applications are written using the Dart programming language, which has helped make Dart a beloved language by the developer community. Before you can start fluttering out mobile apps using Flutter, you need to learn Dart.

You’ll learn Dart from the ground up; going over everything you need to know to write a basic program assuming you have no prior knowledge of the language. Topics include: Data types and variables, operators, collections, control flow statements, functions, and classes. By the end of this course you’ll be ready to take on Flutter to create stunning UIs. This course is for beginners and professionals alike. It’s ideal for those who want to develop applications in iOS or Android.

8. Learn Rust from Scratch


The word is out: developers love Rust. It’s quickly becoming one of the most popular languages among systems and embedded programmers, and the demand for Rust coders is growing considerably. It’s a very powerful language in terms of performance, reliability, and productivity, especially when compared to C++. C++ developers have also enjoyed learning Rust because of its “simplicity” when designing concurrent and multithreaded applications which is exceptionally difficult to do in C++. If you’re a system developer looking for a new language to learn, then Rust is a great place to look next.

With Learn Rust from Scratch you’ll be able to learn Rust while getting your hands dirty along the way. It begins with a simple “Hello world” program and proceeds to cover common concepts such as Arrays, Strings, Vectors, Enums, Structures, Traits, Generic, Functions, and Logic. Finally, it dives deeper into more advanced concepts like Lifetime and memory management.

This course is for beginners and mid-level developers who are looking to specialize in system and embedded programming.

9. Learn Perl from Scratch


Perl is one of the most popular text processing languages in the world. It allows you to create extremely efficient text parsers for all sorts of applications. Because of the powerful text parsing capabilities, it’s often used as a tool for data scientists, but the fact that it’s a general-purpose language makes it perfectly suitable for web development, network programming, and GUI development.

Learn Perl from Scratch will help you get up to speed on Perl, starting off with basic concepts like loops, strings, and arrays. You’ll build your way up to more complex topics like: data structures, packages, subroutines, and conditional statements.

No background knowledge is needed for this course.

10. Learn R from Scratch


The digital world we live in has given companies and people access to staggering amounts of data, and anyone that can make use of that to drive valuable insights stands to benefit. The ability to work with large amounts of data is becoming a standard requirement for countless jobs across multiple industries.

Enter R, probably the most well-known language for data science. It’s been used for years due to its robust statistical functionality, outstanding graphing ability, and extensibility through packages.

Learn R from Scratch will get you up to speed and assumes no prior knowledge of R. You’ll be given an intro with the very basics and work your way up to advanced concepts like exception handling. By the time you’re done, you’ll be able to write detailed, useful code in R to work with large amounts of data.

This course is particularly designed for programmers or statisticians who have never programmed in R before yet want to build their skills in R. This course will not only teach basic syntax in R, but also present basic problems that you can solve hands-on.

11. Learn PHP from Scratch


PHP is a widely-used, open source, general-purpose scripting language that is especially suited for web development. Basically, anything that you want to do on a web server, you can do with PHP. That includes: making a blog, creating a full fledged software-as-a-service application, and writing scripts for data processing.

The best thing about using PHP is that it is extremely simple for a newcomer, but offers many advanced features for a professional programmer.

Learn PHP from Scratch introduces you to the fundamental programming concepts in PHP. It begins with a simple Hello world program and proceeds on to cover common concepts such as Conditional Statements, Loop Statements, and Logic in PHP.

It then reflects upon the idea of Functions and Arrays, as well as the power they give to the programmer to write better code.

Finally, it dives deeper in order to teach about advanced concepts such as Classes, Inheritance and Exception Handling in PHP. By the time you’re done, you’ll have a good grip on the basics of PHP, and will be ready to study advanced concepts.

12. Learn Ruby from Scratch


Do you want to be an interpreted language geek? Are you tired of getting entangled in the dense syntaxes? Does it irritate you to compile your code to machine language first? Are you looking for an easy-to-use scripting language? Well, Ruby is the best pick for you then.

Ruby is a smart, easy-to-use, functional, Object-Oriented programming language, which comes as a wondrous mix of Perl’s scripting power, Pythonic capabilities and much more. As Matsumoto, creator of Ruby, implies: “I hope to see Ruby help every programmer in the world to be productive, and to enjoy programming, and to be happy. That is the primary purpose of the Ruby language.”

Learn Ruby from Scratch will be providing you with hands-on practice with the basics as well as advanced concepts. Topics include: variables, built-in classes, objects, methods, blocks, conditionals, and much more. There are 30 challenges to help you practice and solidify what you’ve learned, and all coding exercises can be completed in-browser without the need for a development environment.

Of course, it’s hard to mention Ruby without talking a little about Ruby on Rails. In fact, you’ve probably used applications built with Ruby on Rails such as GitHub, Shopify, Hulu, Airbnb, and Square. If you’re looking to apply for any companies listed above, you’ll find this course a helpful start to reaching your goals.

13. Learn HTML, CSS, and JavaScript from Scratch


As one of our most popular courses, Learn HTML, CSS, and Javascript from Scratch provides the foundation for anyone looking to become a front-end developer. With so many free coding classes available online, finding material to learn HTML, CSS, and Javascript isn’t the challenge, but it’s determining which class or course is worth your time. While online coding classes on websites such as Harvard, MIT, and EdX might be a helpful resource, you won’t be able to learn at your own pace, and the material might not align with your career goals. So how is this course different?

With Learn HTML, CSS, and JavaScript from Scratch, you’ll dive straight into more “doing” and save yourself time from watching hours of collective video. With step-by-step instructions and a detailed breakdown of topics, you’ll leave this course with a comprehensive understanding of the basics behind becoming a front-end developer.

By the end of this course, you’ll understand how to build semantic web page layouts with HTML, how to stylize HTML content using CSS, and JavaScript program flow and data structures. To top it off, you’ll get hands-on practice building an image carousel and a to-do list using our built-in coding environments.

Before you go, I wanted to mention that our courses are written by working professionals at top tech companies. Why is that important you might ask? Our courses are written for the purpose of helping you land a job at a top tech company or building a personal project. This course equips you with essential knowledge, while avoiding any word fluff that would otherwise waste your time. If you’re looking for next steps to becoming a front end developer, you can also check out our learning path on How to Become a Front End Developer.

14. Functional Programming Patterns with RamdaJS


Ramda is a library of functions designed to make functional programming in JavaScript easy and powerful without making it any less like JavaScript.

Can’t I do FP in vanilla Javascript? Sure you can, but the difference is that RambdaJS is a library specifically designed for the functional style of programming.

In Functional Programming Patterns with RamdaJS the author shares with you tried and true patterns that will help you write reproducible, clean code.

Before going through them, though, the course lays the groundwork with concepts like pure functions, currying, and point-free style. A few of the common patterns you’ll find are functors and lenses. There’s also a fully blown project, which aims to transcend the student from doing snippets and short-lived exercises, to a concrete real world example.

This course is great for intermediate or advanced JavaScript developers, where you’ll learn to recognize FP hallmarks like map, filter, reduce, and perhaps use something like Lodash to make your life easier.

15. Understanding Flexbox: Everything you need to know


The flexbox model provides an efficient way to layout, align, and distribute space among elements within your document, even when the viewport and the size of your elements is dynamic or unknown.

We always had to deal with floats, table display hacks, and the consequences they brought. If you’ve written CSS for sometime, you can probably relate to this.

Now we can all ditch those hacky CSS tricks. No more incessant use of floats, table-cell displays. It’s time to embrace a cleaner modern syntax for crafting intelligent layouts. Welcome the CSS Flexbox model.

Understanding Flexbox: Everything you need to know will cover all the fundamental and advanced concepts you need to become an expert with the CSS Flexbox model. You will learn to layout a Responsive Music App in the process, which is a great addition to your portfolio. Topics covered in this course are: Flex containers and items, auto margin alignment, responsive design with Flexbox, and more.

That about wraps it up. Now go show the world your programming prowess.

Happy learning!

WRITTEN BYCameron Wilson

Join a community of more than 1.4 million readers. A free, bi-monthly email with a roundup of Educative's top articles and coding tips.