Python - The Practical Guide
Learn Python from the ground up and use Python to build a hands-on project from scratch!
Start courseWant to learn Python "on the job" whilst building an exciting course project? This course is for you!
This is a highly practice-oriented Python course that teaches you Python from scratch - no prior programming experience required!
Python is probably THE most trending programming language you can learn these days!
It's very popular because it's easy to learn and use, runs on all operating systems and allows you to build a broad variety of programs: Be that web applications, desktop applications, utility scripts or using it for data science and machine learning.
In this course, you'll learn Python from scratch - and you'll do so whilst building your own Blockchain and Cryptocurrency. These are of course also highly trending topics and not a lot of people understand what a Blockchain really is. As a nice side-effect, you will know how a Blockchain works once you completed this course. It's an exciting course project that allows you to learn and apply Python to something you know and you can use.
Why Python?
As written above, Python is both easy-to-use and extremely versatile and powerful at the same time. Certainly not the worst combination. If you check it on Google trends (and compare it to other programming languages), you'll see that it's very popular these days.
It's being used by almost any important company - be that Google, Amazon or Facebook. It's used to run web applications, scripts, desktop programs and machine learning algorithms. This course sets the basics for all these use-cases!
Why Blockchain?
I believe that you learn something best if you directly apply it to a real-world project. And the Blockchain technology is an exciting trend which is there to stay. In this course, you'll learn a lot about the core concepts of the Blockchain and you'll see how Python can be used for the many aspects that make up a Blockchain and Cryptocurrency.
In my opinion, a perfect course project is challenging, interesting, something you know from real-life but also not overly complex. And that's all the case for the Blockchain! It poses some nice challenges where a lot of different Python features can be used to overcome them. It also is something we hear about all the time and yet no one knows how it works. And we can dive into the core Blockchain concepts without spending 100+ hours working on it.
As written above, Python is both easy-to-use and extremely versatile and powerful at the same time. Certainly not the worst combination. If you check it on Google trends (and compare it to other programming languages), you'll see that it's very popular these days.
It's being used by almost any important company - be that Google, Amazon or Facebook. It's used to run web applications, scripts, desktop programs and machine learning algorithms. This course sets the basics for all these use-cases!
What's in the course?
Great question! Here's a brief summary:
- A summary of Python and the Blockchain technology
- All the base Python syntax you need to know (variables, operators, functions, ...)
- Loops and conditional statements
- More complex data structures like tuples or dictionaries
- A closer look at built-in functions and the standard library Python ships with
- String manipulation
- How to work with files
- Error handling
- Debugging
- Object-oriented programming with classes and inheritance
- Internal & external modules (packages)
- How to spin up an Http server with the Flask package
- Handling Http requests (sending & receiving)
- And more!
Is this course for you?
It's for you if ...
- You want to get into programming => Python is a great "first language" since it's easy to learn and very versatile
- You want to broaden your horizon => Are you a web developer? Want to learn something new? Here you go!
- You're interested in Python for web development => This course will teach you Python in general but there are two modules where we'll also dive into web development a bit
- You're interested in the Blockchain technology => You'll learn the core concepts of it as a side-effect of this course!
- You know Python but want to practice it => The course project is challenging and taken from real-life - there probably is no better practice
Course content
Section 1Getting Started
- Introduction1:51
- What is Python?5:07
- Setting Up Python3:11
- Writing our First Python Code5:05
- Join our Online Learning Community1:00
- What is the Blockchain?6:48
- Course Outline4:41
- Python Alternatives3:58
- Understanding the Python Versions2:22
- How To Get The Most Out Of This Course3:27
- Useful Resources & Links1:00
Section 2Diving Into the Basics of Python
- Module Introduction2:16
- Understanding the REPL and Data Types4:25
- Working with VariablesPremium4:46
- Working with NumbersPremium5:36
- Using OperatorsPremium3:48
- Understanding a "Special" Behaviour when Working with NumbersPremium3:35
- Working with StringsPremium2:18
- Working with ListsPremium5:09
- Adding & Removing List ItemsPremium3:02
- Preparing the Blockchain - The TheoryPremium2:02
- Installing our IDEPremium5:17
- Using Functions to Add List ItemsPremium6:45
- Accessing the Last List ItemPremium3:24
- Adding Arguments to FunctionsPremium2:36
- Understanding the "return" KeywordPremium3:57
- Using Default ArgumentsPremium4:06
- Working with Keyword ArgumentsPremium2:59
- Using the "input" FunctionPremium3:00
- Avoiding Repetitive Code ExecutionPremium2:06
- Understanding the Variable ScopePremium6:49
- Exploring the Official DocumentationPremium2:25
- Adding Comments and Doc StringsPremium4:20
- Structuring Multi Line Code in PythonPremium1:56
- Assignment - Basics (Problem)Premium1:34
- Assignment - Basics (Solution)Premium11:24
- Wrap UpPremium3:28
- Useful Resources & LinksPremium1:00
Section 3Working with Loops & Conditionals
- Module IntroductionPremium1:38
- Understanding Loops - TheoryPremium2:55
- Creating a "for" LoopPremium3:02
- Creating a "while" LoopPremium3:33
- Closing the REPLPremium1:00
- Understanding Conditionals - TheoryPremium2:01
- Adding "if-else" to our BlockchainPremium7:45
- Working with "elif"Premium3:43
- Understanding "break" & "continue"Premium3:31
- Improving our Code with Loops & ConditionalsPremium6:39
- Understanding Boolean Operators - "is" & "in"Premium3:37
- The "not" KeywordPremium1:17
- Understanding "and" and "or"Premium2:26
- Grouping ConditionalsPremium3:22
- What About "switch" in Python?Premium0:41
- Verifying our BlockchainPremium13:10
- Blockchain Theory: Understanding Blockchain VerificationPremium1:00
- Using Conditions inside the "while" LoopPremium1:56
- Using "else" in LoopsPremium2:07
- Adding the "range" FunctionPremium7:09
- Assignment - Loops & Conditionals (Problem)Premium2:50
- Assignment - Loops & Conditionals (Solution)Premium7:52
- Wrap UpPremium3:11
- Useful Resources & LinksPremium1:00
Section 4Understanding Complex Data Structures
- Module IntroductionPremium2:50
- Understanding the Required Data Structure for our BlockchainPremium7:03
- Working with IterablesPremium5:01
- Choosing the Right DatastructurePremium2:55
- Transactions with Dictionaries & TuplesPremium7:46
- Blockchain Theory: Understanding TransactionsPremium1:00
- Unpacking the TuplePremium3:20
- Mining BlocksPremium6:16
- Hashing Previous BlocksPremium6:23
- Understanding List ComprehensionsPremium5:48
- And What are Dict Comprehensions?Premium1:39
- Combining List Comprehensions & "if"Premium2:53
- Improving the Blockchain Validation LogicPremium8:20
- Managing a List of Participants in the BlockchainPremium3:33
- Calculating BalancesPremium7:46
- Rewarding the Miners of our BlockchainPremium3:23
- Verifying TransactionsPremium5:45
- Understanding Reference vs Value CopyingPremium7:07
- Working with the Range SelectorPremium5:42
- Understanding Shallow vs Deep CopiesPremium2:42
- Comparing "is" & "=="Premium1:36
- Diving Deeper Into Iterable MethodsPremium7:27
- Understanding the "all" & "any" FunctionsPremium7:35
- Comparing IterablesPremium6:46
- Assignment - Complex Datastructures (Problem)Premium1:27
- Assignment - Complex Datastructures (Solution)Premium7:17
- Wrap UpPremium3:17
- Useful Resources & LinksPremium1:00
Section 5Working with Functions & Strings
- Module IntroductionPremium1:30
- Comparing Strings & ListsPremium3:57
- Understanding the "format" MethodPremium8:11
- Escaping CharactersPremium1:47
- Formatting Strings Conveniently with "f"Premium1:27
- Adding String Formatting to our ProjectPremium2:00
- Understanding the "map" FunctionPremium2:53
- Working with Lambda FunctionsPremium2:13
- Reducing ListsPremium7:40
- Unpacking Function ArgumentsPremium6:32
- Assignment - Functions & Strings (Problem)Premium2:13
- Assignment - Functions & Strings (Solution))Premium5:07
- Fixing a BugPremium4:13
- Wrap UpPremium1:30
- Useful Resources & LinksPremium1:00
Section 6Working with the Python Standard Library
- Module IntroductionPremium1:42
- Exploring the Python Standard LibraryPremium2:12
- Importing Packages - TheoryPremium4:18
- Importing "hashlib" to Create a Unique HashPremium7:14
- Using Other Import SyntaxesPremium1:47
- The "Proof of Work"Premium6:53
- Blockchain Theory: Understanding the "Proof of Work"Premium1:00
- Adding the Proof of Work to our BlockchainPremium5:48
- Including the Proof of Work in our Mining FunctionPremium7:49
- Fixing a Hash Order FaultPremium6:22
- Splitting Up our CodePremium4:33
- Assignment -The Standard Library (Problem)Premium1:41
- Assignment -The Standard Library (Solution)Premium3:46
- Wrap UpPremium2:02
- Useful Resources & LinksPremium1:00
Section 7Working with Files
- Module IntroductionPremium1:44
- Handling File AccessPremium5:44
- Reading Data From a FilePremium2:33
- Reading Multi-Line ContentPremium5:52
- Using the "with" Block StatementPremium2:57
- Adding File Access to our BlockchainPremium8:39
- Converting Strings Into Python ObjectsPremium16:01
- Storing Data with PicklePremium6:05
- Comparing Pickle & JSONPremium1:05
- Changing the Project Back to JSONPremium2:30
- Why we need Proper Error HandlingPremium0:46
- Assignment - Working with Files (Problem)Premium1:49
- Assignment - Working with Files (Solution)Premium10:21
- Wrap UpPremium1:17
- Useful Resources & LinksPremium1:00
Section 8Handling Errors
- Module IntroductionPremium0:57
- Finding Logical Errors with the DebuggerPremium5:53
- Finding Syntax ErrorsPremium1:40
- Using "try" to Find Runtime ErrorsPremium4:33
- Which Errors Should you Handle?Premium3:01
- Adding Error Handlers to our BlockchainPremium2:32
- Handling Empty File ErrorsPremium1:00
- Wrap UpPremium1:49
- Useful Resources & LinksPremium1:00
Section 9Object Oriented Programming
- Module IntroductionPremium1:12
- What is Object Oriented Programming?Premium2:12
- Understanding ClassesPremium1:24
- Creating a ClassPremium5:09
- Comparing Classes, Instances & DictionariesPremium2:44
- Understanding Class AttributesPremium3:37
- Constructor & Instance AttributesPremium4:20
- Printing Classes with Special MethodsPremium6:04
- Private & Public AttributesPremium4:39
- Understanding InheritancePremium8:46
- Planning Blockchain ClassesPremium1:32
- Adding a "Block" Class to the BlockchainAdding a "Block" Class to the BlockchainPremium11:06
- An Issue with Default ArgumentsPremium1:00
- Saving Custom Class Objects via .jsonPremium4:49
- Adding a "Transaction" ClassPremium17:46
- Inheritance in ActionPremium5:43
- Adding a "Verification" Helper ClassPremium10:03
- Initialising the "Node" ClassPremium4:51
- Turning the Blockchain Into a ClassPremium7:30
- Adding a "Node" ClassPremium11:11
- Understanding "Instance" vs "Class" vs "Static Methods" & "Attributes"Premium3:39
- Using "Static" & "Class" Methods on the "Verification" ClassPremium3:44
- Using Private Attributes in the BlockchainPremium3:43
- Properties vs AttributesPremium5:20
- Assignment - Object Oriented Programming (Problem)Premium1:45
- Assignment - Object Oriented Programming (Solution)Premium9:44
- Wrap UpPremium2:15
- Useful Resources & LinksPremium1:00
Section 10Modules
- Module IntroductionPremium1:41
- Creating Packages - Module BundlesPremium4:40
- The "pycache" FolderPremium0:43
- Module DocstringsPremium0:51
- Controlling ExportsPremium5:36
- Understanding Execution Context & "__name__"Premium4:11
- Why we Need a Private & Public Key Transaction ProtectionPremium4:25
- Using Anaconda to Install Third Party PackagesPremium6:23
- Using Virtual EnvironmentsPremium1:00
- Use Pycryptodome instead of PyCryptoPremium1:00
- Generating Keys with a Third Party PackagePremium6:21
- Connecting the Node & the WalletPremium6:15
- Generating Keys on the NodePremium4:06
- Saving & Loading Keys to FilesPremium8:24
- Creating Transaction SignaturesPremium6:24
- Adding a Signature to our TransactionsPremium2:42
- Verifying SignaturesPremium6:49
- Improving the Verification LogicPremium5:41
- Wrap UpPremium1:21
- Useful Resources & LinksPremium1:00
Section 11Adding HTTP with Flask
- Module IntroductionPremium2:04
- HTTP Requests - The BasicsPremium5:40
- Understanding API-Endpoints/ URLsPremium3:32
- Data FormatsPremium3:18
- Planning our APIPremium2:04
- Setting Up our Environment with FlaskPremium10:08
- Adding our First RoutePremium10:09
- Installing PostmanPremium2:20
- Adding a POST RequestPremium7:21
- Setting Up Routes to Manage our WalletPremium8:23
- Returning FundsPremium5:43
- Adding TransactionsPremium11:26
- Fetching Open TransactionsPremium3:14
- Testing the Public KeyPremium1:46
- Adding a User InterfacePremium2:41
- Optional: Configuring our UI - Creating a WalletPremium13:17
- Optional: Configuring our UI - Loading a Wallet and Adding Mining & TransactionsPremium11:58
- Exploring our UIPremium2:45
- Wrap UpPremium1:52
- Useful Resources & LinksPremium1:00
Section 12The Node Network
- Module IntroductionPremium1:42
- Adding Node Management Methods to the BlockchainPremium7:18
- Setting Up Routes to Add NodesPremium7:40
- Adding a Remove Node RoutePremium5:17
- Adding "get_Nodes" to get all NodesPremium1:19
- Attaching a Node User InterfacePremium11:07
- Running Multiple NodesPremium11:19
- Sending Requests from within PythonPremium10:36
- Broadcasting Transactions - Adding the Function & RoutePremium12:06
- Broadcasting Transactions - Testing & Fixing ErrorsPremium5:51
- Broadcasting New Blocks: Adding the Function & RoutePremium11:12
- Broadcasting New Blocks: Informing the Peer NodesPremium9:53
- Broadcasting Transactions: TestingPremium3:28
- Solving ConflictsPremium5:32
- Understanding ConsensusPremium3:28
- Finding ConflictsPremium9:34
- Implementing a Consensus AlgorithmPremium17:20
- Testing ConsensusPremium5:49
- Wrap UpPremium1:01
- Useful Resources & LinksPremium1:00
Section 13Next Steps and Course Roundup
- Module IntroductionPremium0:46
- Don't Forget PEP 8Premium2:46
- Using PEP 8Premium8:29
- Using CommentsPremium1:01
- Diving Deeper Into PythonPremium5:07
- Improving the BlockchainPremium10:02
- CongratulationsPremium0:57
- Further LinksPremium1:00
Course instructor
Maximilian Schwarzmüller
As a self-taught professional I really know the hard parts and the difficult topics when learning new or improving on already-known languages. This background and experience enable me to focus on the most relevant key concepts and topics. My track record of many 5-star rated courses, more than 1,000,000 students worldwide as well as a successful YouTube channel is the best proof for that.
The most rewarding experience for me is to see how people find new, better jobs, build awesome web applications, work on amazing projects or simply enjoy their hobby with the help of my content. That's why, together with Manuel Lorenz, I founded Academind to offer the best possible learning experience and to share the pleasure of learning with our students.