Skip to main content

3 Best Places to Learn Python Programming for Free

· 7 min read

Python has rapidly grown over the years as one of the most popular, and most favoured programming languages. Github's annual report ranks Python in a consistent 2nd place over the last few years. Out of the top programming languages, Python's syntax is very easy to read and learn. New programmers and Computer Science students are often overwhelmed by the massive amount of information they need to learn, and Python provides a (relatively) easy way to ease into programming. Because of this, Python is very popular in first year college/university Computer Science curriculums.

Python is an important language in the world of programming, as it can be used in so many different domains - data science, web development, automation, and so much more. It's an in-demand skill that a growing number of employers are looking for, and with an average salary of over 95k in the United States, rest assured that learning Python is a great career move for those entering Tech.

It's hard narrowing down the list of free Python courses, since there are so many! We've decided to select a few courses that will help you learn Python easily, while giving you the knowledge to succeed in interviews. Many self-directed learners may not realize their shortcomings until they experience a tough technical interview, so be sure to round out your knowledge with both Python knowledge, Computer Science concepts, and domain specific knowledge.

1. Python for Everybody - freeCodeCamp

At almost 14 hours, this is a long introductory course. Many "Introduction to Python" courses are less than 4 hours, and although they may still cover the topic well, we highly recommend Python for Everybody by Dr. Chuck. You'll cover not only Python Basics, but several other important core topics that many Introductory courses don't cover. For example, working with JSON, Sockets, Databases, and more! Even if you never work with these topics again, having this core knowledge is extremely valuable. For example, socket programming and networking knolwedge carries over to other domains.

  • Price: Free
  • Paid Option : No
  • Difficulty Level: Beginner
  • Flexible schedule: Yes

Who should take this course? This is a good option for complete beginners who want to prepare for university-level courses, or who want to supplement their university-level studies. This is a beginner-friendly course with no prior experience necessary.

Link to the course - Python for Everybody

2. How to Think Like a Computer Scientist

Runestone Academy is an interesting option to learn Python, and for that matter, many other Computer Science topics. Aimed to "democratize textbooks" by offering textbook-like material for free, this indepth Python course skyrocketed their site popularity, and for good reason! This course offers more than just syntax; it offers a Computer Science student experience. You'll learn about many of the topics covered in college/university courses that many online courses today don't cover, such as recursion. This course is very indepth, so if you're up for it, expect to spend many hours completing this course.

  • Price: Free
  • Paid Option : No
  • Difficulty Level: Beginner
  • Flexible schedule: Yes

Who should take this course? This is a great option for self-directed learners who want a "college experience", and learn about many core concepts at a very involved, indepth level. This is a beginner-friendly course with no prior experience necessary, and after completing this course, you will understand many intermediate and advanced topics.

Link to the course - How to Think Like a Computer Scientist: Interactive Edition

3. Data Structures and Algorithms in Python - freeCodeCamp

Many programmers have a love/hate relationship with Data Structures. Seriously, how many have you used a Linked List outside of your college classes?

We're joking, of course. Data Structures have many use-cases, and can be the difference between an okay program versus an excellent program. Many technical interviews will ask about data structures, so even if you never use a Tree Data Structure in your day-to-day programming, it's incredibly valuable to understand them.

Equally as important are Algorithms (possibly even more important). An algorithm is a set of rules/instructions for solving a problem. A good algorithm is also fast and/or memory efficient, or provides some other unique benefit. This course covers several searching and sorting algorithms like quicksort, which are also crucial to not only build fast, efficient software, but for interviews as well. This course conveys so much awesome knowledge, expect to learn the material of 1-2+ college courses!

  • Price: Free
  • Paid Option : No
  • Difficulty Level: Intermediate
  • Flexible schedule: Yes

Who should take this course? This is a good option for those with a solid foundation of Python syntax who want to prepare for interviews, and who want to write the best code possible. Data Structures and Algorithms form the difference between a beginner and an advanced software engineer. They are also an important topic that employers love to see.

Link to the course - Data Structures and Algorithms in Python

What's Next?

Python is a great programming language for both new and experienced programmers alike. With amazing flexibility, existing code libraries to suit your every purpose, and easy-to-read syntax, Python is an important part of your programming toolkit.

New programmers often ask - "I've learned the basic syntax, what's next"? Once you've covered the basics, what you do next really depends on your goals. Typically, this may go one of two ways:

  1. You are looking to enter the workforce as a Python programmer. You need to develop skills that employers want.
  2. You are already employed (as a programmer, or otherwise), and you want to use Python to enhance or automate your work.

Depending on your goals, we recommend looking into these resources next:

  • Web Development: Learn Django and Flask, two Python web frameworks.
  • Data Science: You have a lot to learn next! Popular Data Science Python libraries include Numpy, Pandas, Matplotlib, Seaborn, and the list goes on. A combination of these libraries are used in modern Data Science pipelines. Plus, you should have foundational knowledge of research (e.g. forming hypotheses) and statistics.
  • Machine Learning, you should learn the above Data Science libraries, plus Tensorflow and scikit-learn to start. Machine Learning is rapidly growing, so look for rising stars in the world of Machine Learning.
  • Automation, or using Python to enhance your work: You have many paths to choose! We find ourselves using libraries such as Selenium, Robot Framework, Requests, and so much more, depending on the use-case. You can also use vanilla Python to accomplish these things, and libraries aren't always necessary. The book Automate the Boring Stuff by Al Sweigart has a lot of ideas for automation, and you'll learn a significant amount of Python along the way. Although a paid resource, you will regularly see coupons to receive this book for free on Udemy - keep an eye on Python-related subreddits, or Al Sweigart's social media.

Regardless of which path you choose, the best way to learn is to build projects. Once you have foundational knowledge of these tools, the best way to learn is to build your own projects. Find what interests you, and from there, the world is your canvas. (or rather, your code IDE is your canvas!)

Final Thoughts

Python is a fantastic programming language for several reasons: It has easy-to-learn syntax, it can be used for almost any purpose, and it is rapidly growing in popularity. It's an in-demand skills for employers, and by mastering Python, you'll be opening many career paths.

The resources in this article provide a solid foundation, but to really progress as a programmer, you must tackle your own projects. This can be overwhelming for beginners, but it's the best way to learn. Find what interests you, and create!

Top 3 Resources to Learn How to Draw for Free

· 4 min read

We all love art, but many of us struggle to draw more than stick figures and three legged creatures that somewhat resemble a dog.

The good news is, art is a skill rather than an innate talent. Great artists started with stick figures as well, and with hundreds/thousands of hours of practice, they gradually built their skills through patient practice.

4 Things Every Junior Developer Should Know (and, Where to Learn Them)

· 9 min read

This file contains a guide to our article structure. When writing an article, please duplicate the template folder, rename according, add to an existing directory if applicable, follow the structure of this document when writing an article, and place & link to images in the images folder within the same folder. This is crucial for maintaining a structured project!

In addition to file structure above, maintaining a consistent written structure for our articles is a crucial aspect of our project. We want our users to receive a consistent, straightforward user experience and to achieve this, consistency is key. Despite these guidelines, our structure still allows for ample writing creativity.

If you would like to discuss this structure and suggest changes, please open an issue on Github, or contact us directly.

Here is a live example that follows this format, and here is a guide to Markdown syntax. Additionally, we offer miscellaneous tips at the bottom of this guide.

Here is our current structure for an article, with sample text from an article to help illustrate the structure.

Important: If this document seems confusing, please reach out with questions or suggestions on how we could improve it. Don't hesitate to submit anyways even if you think a few details are sightly off, we're happy to offer suggestions and for quick fixes, fix it for you.


Title, Metadata, and Overall Article

First and most importantly: choosing courses and resources to link to. There's no point linking to subpar courses, and even worse, discussing courses that you haven't familiarized yourself with. When deciding on courses and resources to link to, we consider several factors:

  • The best resources are the ones you have experience with, and can discuss. You don't have to be an expert, but if you link to a science resource but haven't looked at the content/syllabus/summary of the resource, then there's not much to (truthfully) say about it. We hope that our contributors are at the very least, studying (or have studied) the subject they are writing about. In essence, the best articles you will write about are the ones you actually want to write about!
  • Rating:
  • Limited access to resource without paying:
  • Instructor qualifications:
  • Resource is on a reputable site:

If you're reading the Markdown file for this page rather than the webpage (here, if you aren't there already), you'll see that the first few lines contain metadata. To write these:

  • Title: Most of our articles are so-called "curated lists" of resources, and to keep the articles easy to find and convey information, the title should simply follow the format "The best X resources to learn X for free". Tweak it slightly if you would like, for example "The best" can also be "top", "X best resources...", etc. We also accept other types of articles, so long as they adhere our values and mission. We'll discuss that later in this document, but most of this document will assume you are writing a curated list.
  • image: This is where you place the link to the article image. First, make sure you followed the instructions on the first line of this document (duplicating and renaming template folder). Then, place the image in the images folder, and lastly place the link to the image here. For example, to write a link to a file called img.png, you can write either ./images/img.png or images/img.png. If the image isn't showing, check that the image file name is spelled correctly.
  • imageAttribution: If attribution for the image is needed, put a link to the source. For example, sites like Vecteezy and Freepik have fantastic free images, but you often have to attribute. Follow the respective instructions of the image site and place the link here. If no attribution needed, you can remove this line.
  • date: Date written, OR date edited
  • category: See our current list of Categories. Choose the most applicable one if possible, and if your desired category isn't on this page, you can write a new one.
  • trending, topPick, popular: Leave these as false initially, or remove these lines. These create a more dynamic feel for Open Mastery, like how many magazine or news websites are organized. The maintainers typically decide these values.

[Introduction - 2-3 paragraphs]

How to write this section:

- Why should someone learn this area?
- What are the benefits of free learning?
- What are the benefits of learning this area, specifically?
- Are there a lot of free resources out there in this area?
- Ask - is this section both informative and engaging?
How to write this section:

Keep the heading short; just write the resource name or domain name, unless it's a sub-resource on a larger site, such as EdX, Udemy, or Youtube. If it is, list the site title at the end after a dash. Examples:

- Academy of Art Online
- In the Studio: Postwar Abstract Painting - EdX
- educationalsite.org
- freeCodeCamp (also acceptable: freecodecamp.org)
- Excel for Marketers - Hubspot

One key exception is if the article focuses on resources on one specific site. For example, a list of 5 free courses on Udemy. In this case, simply list the course name(s) in the article headings, and listing ' - Udemy' in the headings is not necessary. For example, the article may be called "Top 3 Free Management Courses on Udemy", and the article headings may be:

- Agile PM 101 - Learn the Truth About Agile versus Waterfall
- Operations Management
- Fostering Belonging and Inclusion on Teams

Next, let's discuss the actual content of this section. Please structure it in the following order (we've provided an example to illustrate it):

- Blurb about the resource - a bit about the site/resource, if it's beginner friendly, and what learners will get out of it
- A list of info about the resource. Please see the example below for the required list
- A 1-2 sentence "Who should take this course?" blurb
- A link to this course

[1-2 paragraph(s) about the resource]

  • Price: Free
  • Paid Option : [Yes, No]
  • What the paid option offers: (if this is not applicable, remove this bullet)
  • Difficulty Level: [Beginner, Intermediate, Advanced]
  • Flexible schedule: [Yes, No]

Who should take this course? This is a good option for complete beginners who want to prepare for university-level courses. This is a beginner-friendly course with no prior experience necessary.

Link to the course - Name and link of site/resource

Note - This point-form list may be removed in the right circumstances, such as an article focusing on advice over resources. For example, our article on improving creative thinking. We link to resources, but instead of focusing on free and open resources, our primary goal is to share our thoughts on the subject and spark self-discussion.

For additional items, simply repeat the same process as above and update the numbering in the title.

[1-2 paragraph(s) about the resource]

  • Price: Free
  • Paid Option : [Yes, No]
  • What the paid option offers: (if this is not applicable, remove this bullet)
  • Difficulty Level: [Beginner, Intermediate, Advanced]
  • Flexible schedule: [Yes, No]

Who should take this course? This is a good option for complete beginners who want to prepare for university-level courses. This is a beginner-friendly course with no prior experience necessary.

Link to the course - Name and link of site/resource

What's Next?

This section may be omitted, but we recommend keeping it! Learners love having a learning path, and this is your opportunity to answer the question "I've learned the basics of this topic.. where do I go next?"

For example:

  • Those learning programming may become comfortable in their language of choice, and they may want to seek domain specific knowledge (e.g. Python learners choosing their path - Web Development? Data Science? Automation?).
  • Those learning the core ideas in Philosophy or Logic may want to find communities online, or may want to share their ideas with a publication.
  • Those learning science may want to get involved in science. Are there any volunteer opportunities for that field?

Like we said, this section may be omitted. Some articles may be more suited to keeping this section than others, so don't feel like you have to force this section!

Final Thoughts

How to write this section:

- 1-2 paragraphs
- Otherwise, you have complete flexibility! For most articles, this section includes a combination of:
- a summary of the article
- insights into the field
- quotes
- thought-provoking ideas/questions
- anything else that may inspire the reader


Miscellaneous Tips

A few notes from the maintainers:

  • If you submit an article and suspect your format may not be exactly right, don't worry. Submit anyways and we'll review it and help you achieve our target writing style.
  • Want to submit an article but you aren't confident in your writing? Don't worry, we all feel that way. That's why Open Mastery is completely open source, so we can all work together to write and improve articles
    • On that note, don't hesitate to submit partial articles.
  • No matter the submission type, please read our Contributing Guidelines before submitting!

What if I'm not writing a "curated list"?

Interested in writing a learning path? We're currently playing around with a custom formatted learning path article!

We accept other articles as well! For example, articles about the importance of free education, trends in free/Revista, and so on. The sky's the limit. For these articles, there's no structure to follow. You must only adhere to good writing standards and ethics, as well as our mission and values. Publishing these articles is left to the discretion of the maintainers, and please be aware that we may edit your submission before publishing.