Python has two kinds of errors: syntax errors that prevent your code from running at all, and exceptions that happen while your code is executing. Knowing how to handle exceptions with try/except and how to raise your own is a core skill for writing reliable programs.
Sets are like lists, but with two key differences: they are unordered and they guarantee uniqueness. Only one of each value can exist in a set. If you need to track unique items or remove duplicates, sets are the tool for the job.
Dictionaries are one of Python’s most useful data structures. Instead of accessing values by a numeric index like you do with lists, you access them by a key — usually a string. If lists are like numbered shelves, dictionaries are like labeled drawers.
A natural way to organize and store data is in a list. Some languages call them “arrays”, but in Python we just call them lists. Think of all the apps you use and how many of the items in them are organized into lists — a social media feed is a list of posts, an online store is a list of products, the state of a chess game is a list of moves.
Loops let you run the same code over and over without rewriting it each time. Whether you need to count through numbers, process items in a list, or keep going until a condition changes, Python gives you for loops and while loops to handle it.
Every useful program needs to make decisions. Python’s if statement is how you tell your code to do one thing or another depending on some condition — and once you understand if, elif, and else, you can handle just about any branching logic.
Python has excellent built-in support for math operations — from basic arithmetic to exponents to bitwise logic. You don’t need to import anything to do most math in Python, which is one reason it’s so popular for everything from backend development to data science.
Functions allow you to reuse and organize code. Instead of copying and pasting the same logic everywhere, you define it once and call it whenever you need it. They’re the most important tool for writing DRY code.
Variables are how we store data as our program runs. You’re probably already familiar with printing data by passing it straight into print(), but variables let us save that data so we can reuse it and change it before printing it. This guide covers everything you need to know about Python variables: creating them, naming them, and understanding the basic data types they can hold. If you’re just getting started, you might also want to know why Python is worth learning in the first place.
A new year and another record broken! In January a combined 4,016,641 lessons and challenges were completed by you, dear pupils! And to top it off, we’re now releasing the much anticipated Power BI Course by none other than Alex the Analyst! I hope you enjoy it.
We’re off to an incredible start to 2026. December of 2025 broke a new record with 3,075,904 lessons completed and 82,578 training grounds challenges completed during the month! In January, I’m writing this on the 13th, and we’re already at 1,657,581 lessons and 47,795 challenges - so it’s looking like this is going to be a monster month. Best of luck to you all in the contest of the resolute.
We plan to wrap up 2025 with some important quality of life updates! League placement badges, lesson bookmarks, and major improvements to the Training Grounds are just a few of the highlights. Thanks for learning with us, we’re gearing up the platform for a ton of new courses in 2026.
Markets are efficient, right? I understand that every ~10 years we find ourselves in some sort of stock market bubble, but I do believe that most markets are mostly efficient. Everyone out there is looking for a good deal, and despite the well-known irrationalities of human psychology, most of us seem to do a good job of looking out for number one.
Isaac’s new Retrieval Augmented Generation (RAG) course is now live! It’s a very in-depth course. It’s not for the faint of heart, and it will teach you not just about AI search, but full keyword and semantic search systems as well… the “RAG” name actually sells it a bit short.
When I started thinking about the problems with coding education in 2019, “tutorial hell” was enemy number one. You’d know you were living in it if you:
Searchable challenges in the Training Grounds, and realtime voice chats with Boots are now a thing. Also, my children and those of half my employees are sick with the flu… I hope you’ve all been able to avoid it!
The training grounds are LIVE! 21,000 challenges have been generated between the launch and as I write this, and we’re just getting started. Big things to come.
We’ve always said Boot.dev is fun… but we’ve never said it’s easy. Subscribe to my YouTube channel if this video was helpful!
We ran the biggest hackathon I’ve ever been a part of (500+ participants!) and saw some incredible projects come out of it. Thanks to everyone that participated, I’m excited for the next one!
The 2025 Boot.dev Hackathon has been completed! We had an amazing turnout this year, with over 500 participants across two categories: Amateur and Pro. The projects were incredible, and the competition was fierce.
This month we were heads down building a lot of background stuff for big releases that are coming up - but we still did manage to get a few new features out the door!
We’ve capitulated into the vibe coding era? Well… not really. But it’s cool to understand how AI agents like Cursor and Claude Code work under the hood.
Sometimes folks get confused and wonder, are Boot.dev’s programming courses really free? First of all, the simple answer is yes, all of the content on Boot.dev is free. That means that all the lesson explanations, the explainer videos, and the starter code is free. You can get all of it (not just the first few chapters, or the first course) without ever becoming a paid member.
Our biggest content release ever just dropped: the complete backend learning path, but now in Python and TypeScript! This is a massive update that we’ve been working on for a year, I hope you enjoy it!
The Lord of the Mire has been the hardest boss yet (by far), weighing it with 150,000,000 HP. The community rallied during the event, dealing a whopping 132,282,452 damage in total, but not quite enough to bring him down.