Python - The Practical Guide

Learn Python from the ground up and use Python to build a hands-on project from scratch!

Start

Want 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

Section: Getting Started

1. Introduction (1:51) Preview
2. What is Python? (5:07) Preview
3. Setting Up Python (3:11) Preview
4. Writing our First Python Code (5:05) Preview
5. Join our Online Learning Community (1:00) Preview
6. What is the Blockchain? (6:48) Preview
7. Course Outline (4:41) Preview
8. Python Alternatives (3:58) Preview
9. Understanding the Python Versions (2:22) Preview
10. How To Get The Most Out Of This Course (3:27) Preview
11. Useful Resources & Links (1:00) Preview

Section: Diving Into the Basics of Python

12. Module Introduction (2:16) Preview
13. Understanding the REPL and Data Types (4:25) Preview
14. Working with Variables (4:46) Start
15. Working with Numbers (5:36) Start
16. Using Operators (3:48) Start
17. Understanding a "Special" Behaviour when Working with Numbers (3:35) Start
18. Working with Strings (2:18) Start
19. Working with Lists (5:09) Start
20. Adding & Removing List Items (3:02) Start
21. Preparing the Blockchain - The Theory (2:02) Start
22. Installing our IDE (5:17) Start
23. Using Functions to Add List Items (6:45) Start
24. Accessing the Last List Item (3:24) Start
25. Adding Arguments to Functions (2:36) Start
26. Understanding the "return" Keyword (3:57) Start
27. Using Default Arguments (4:06) Start
28. Working with Keyword Arguments (2:59) Start
29. Using the "input" Function (3:00) Start
30. Avoiding Repetitive Code Execution (2:06) Start
31. Understanding the Variable Scope (6:49) Start
32. Exploring the Official Documentation (2:25) Start
33. Adding Comments and Doc Strings (4:20) Start
34. Structuring Multi Line Code in Python (1:56) Start
35. Assignment - Basics (Problem) (1:34) Start
36. Assignment - Basics (Solution) (11:24) Start
37. Wrap Up (3:28) Start
38. Useful Resources & Links (1:00) Start

Section: Working with Loops & Conditionals

39. Module Introduction (1:38) Start
40. Understanding Loops - Theory (2:55) Start
41. Creating a "for" Loop (3:02) Start
42. Creating a "while" Loop (3:33) Start
43. Closing the REPL (1:00) Start
44. Understanding Conditionals - Theory (2:01) Start
45. Adding "if-else" to our Blockchain (7:45) Start
46. Working with "elif" (3:43) Start
47. Understanding "break" & "continue" (3:31) Start
48. Improving our Code with Loops & Conditionals (6:39) Start
49. Understanding Boolean Operators - "is" & "in" (3:37) Start
50. The "not" Keyword (1:17) Start
51. Understanding "and" and "or" (2:26) Start
52. Grouping Conditionals (3:22) Start
53. What About "switch" in Python? (0:41) Start
54. Verifying our Blockchain (13:10) Start
55. Blockchain Theory: Understanding Blockchain Verification (1:00) Start
56. Using Conditions inside the "while" Loop (1:56) Start
57. Using "else" in Loops (2:07) Start
58. Adding the "range" Function (7:09) Start
59. Assignment - Loops & Conditionals (Problem) (2:50) Start
60. Assignment - Loops & Conditionals (Solution) (7:52) Start
61. Wrap Up (3:11) Start
62. Useful Resources & Links (1:00) Start

Section: Understanding Complex Data Structures

63. Module Introduction (2:50) Start
64. Understanding the Required Data Structure for our Blockchain (7:03) Start
65. Working with Iterables (5:01) Start
66. Choosing the Right Datastructure (2:55) Start
67. Transactions with Dictionaries & Tuples (7:46) Start
68. Blockchain Theory: Understanding Transactions (1:00) Start
69. Unpacking the Tuple (3:20) Start
70. Mining Blocks (6:16) Start
71. Hashing Previous Blocks (6:23) Start
72. Understanding List Comprehensions (5:48) Start
73. And What are Dict Comprehensions? (1:39) Start
74. Combining List Comprehensions & "if" (2:53) Start
75. Improving the Blockchain Validation Logic (8:20) Start
76. Managing a List of Participants in the Blockchain (3:33) Start
77. Calculating Balances (7:46) Start
78. Rewarding the Miners of our Blockchain (3:23) Start
79. Verifying Transactions (5:45) Start
80. Understanding Reference vs Value Copying (7:07) Start
81. Working with the Range Selector (5:42) Start
82. Understanding Shallow vs Deep Copies (2:42) Start
83. Comparing "is" & "==" (1:36) Start
84. Diving Deeper Into Iterable Methods (7:27) Start
85. Understanding the "all" & "any" Functions (7:35) Start
86. Comparing Iterables (6:46) Start
87. Assignment - Complex Datastructures (Problem) (1:27) Start
88. Assignment - Complex Datastructures (Solution) (7:17) Start
89. Wrap Up (3:17) Start
90. Useful Resources & Links (1:00) Start

Section: Working with Functions & Strings

91. Module Introduction (1:30) Start
92. Comparing Strings & Lists (3:57) Start
93. Understanding the "format" Method (8:11) Start
94. Escaping Characters (1:47) Start
95. Formatting Strings Conveniently with "f" (1:27) Start
96. Adding String Formatting to our Project (2:00) Start
97. Understanding the "map" Function (2:53) Start
98. Working with Lambda Functions (2:13) Start
99. Reducing Lists (7:40) Start
100. Unpacking Function Arguments (6:32) Start
101. Assignment - Functions & Strings (Problem) (2:13) Start
102. Assignment - Functions & Strings (Solution)) (5:07) Start
103. Fixing a Bug (4:13) Start
104. Wrap Up (1:30) Start
105. Useful Resources & Links (1:00) Start

Section: Working with the Python Standard Library

106. Module Introduction (1:42) Start
107. Exploring the Python Standard Library (2:12) Start
108. Importing Packages - Theory (4:18) Start
109. Importing "hashlib" to Create a Unique Hash (7:14) Start
110. Using Other Import Syntaxes (1:47) Start
111. The "Proof of Work" (6:53) Start
112. Blockchain Theory: Understanding the "Proof of Work" (1:00) Start
113. Adding the Proof of Work to our Blockchain (5:48) Start
114. Including the Proof of Work in our Mining Function (7:49) Start
115. Fixing a Hash Order Fault (6:22) Start
116. Splitting Up our Code (4:33) Start
117. Assignment -The Standard Library (Problem) (1:41) Start
118. Assignment -The Standard Library (Solution) (3:46) Start
119. Wrap Up (2:02) Start
120. Useful Resources & Links (1:00) Start

Section: Working with Files

121. Module Introduction (1:44) Start
122. Handling File Access (5:44) Start
123. Reading Data From a File (2:33) Start
124. Reading Multi-Line Content (5:52) Start
125. Using the "with" Block Statement (2:57) Start
126. Adding File Access to our Blockchain (8:39) Start
127. Converting Strings Into Python Objects (16:01) Start
128. Storing Data with Pickle (6:05) Start
129. Comparing Pickle & JSON (1:05) Start
130. Changing the Project Back to JSON (2:30) Start
131. Why we need Proper Error Handling (0:46) Start
132. Assignment - Working with Files (Problem) (1:49) Start
133. Assignment - Working with Files (Solution) (10:21) Start
134. Wrap Up (1:17) Start
135. Useful Resources & Links (1:00) Start

Section: Handling Errors

136. Module Introduction (0:57) Start
137. Finding Logical Errors with the Debugger (5:53) Start
138. Finding Syntax Errors (1:40) Start
139. Using "try" to Find Runtime Errors (4:33) Start
140. Which Errors Should you Handle? (3:01) Start
141. Adding Error Handlers to our Blockchain (2:32) Start
142. Handling Empty File Errors (1:00) Start
143. Wrap Up (1:49) Start
144. Useful Resources & Links (1:00) Start

Section: Object Oriented Programming

145. Module Introduction (1:12) Start
146. What is Object Oriented Programming? (2:12) Start
147. Understanding Classes (1:24) Start
148. Creating a Class (5:09) Start
149. Comparing Classes, Instances & Dictionaries (2:44) Start
150. Understanding Class Attributes (3:37) Start
151. Constructor & Instance Attributes (4:20) Start
152. Printing Classes with Special Methods (6:04) Start
153. Private & Public Attributes (4:39) Start
154. Understanding Inheritance (8:46) Start
155. Planning Blockchain Classes (1:32) Start
156. Adding a "Block" Class to the BlockchainAdding a "Block" Class to the Blockchain (11:06) Start
157. An Issue with Default Arguments (1:00) Start
158. Saving Custom Class Objects via .json (4:49) Start
159. Adding a "Transaction" Class (17:46) Start
160. Inheritance in Action (5:43) Start
161. Adding a "Verification" Helper Class (10:03) Start
162. Initialising the "Node" Class (4:51) Start
163. Turning the Blockchain Into a Class (7:30) Start
164. Adding a "Node" Class (11:11) Start
165. Understanding "Instance" vs "Class" vs "Static Methods" & "Attributes" (3:39) Start
166. Using "Static" & "Class" Methods on the "Verification" Class (3:44) Start
167. Using Private Attributes in the Blockchain (3:43) Start
168. Properties vs Attributes (5:20) Start
169. Assignment - Object Oriented Programming (Problem) (1:45) Start
170. Assignment - Object Oriented Programming (Solution) (9:44) Start
171. Wrap Up (2:15) Start
172. Useful Resources & Links (1:00) Start

Section: Modules

173. Module Introduction (1:41) Start
174. Creating Packages - Module Bundles (4:40) Start
175. The "pycache" Folder (0:43) Start
176. Module Docstrings (0:51) Start
177. Controlling Exports (5:36) Start
178. Understanding Execution Context & "__name__" (4:11) Start
179. Why we Need a Private & Public Key Transaction Protection (4:25) Start
180. Using Anaconda to Install Third Party Packages (6:23) Start
181. Using Virtual Environments (1:00) Start
182. Use Pycryptodome instead of PyCrypto (1:00) Start
183. Generating Keys with a Third Party Package (6:21) Start
184. Connecting the Node & the Wallet (6:15) Start
185. Generating Keys on the Node (4:06) Start
186. Saving & Loading Keys to Files (8:24) Start
187. Creating Transaction Signatures (6:24) Start
188. Adding a Signature to our Transactions (2:42) Start
189. Verifying Signatures (6:49) Start
190. Improving the Verification Logic (5:41) Start
191. Wrap Up (1:21) Start
192. Useful Resources & Links (1:00) Start

Section: Adding HTTP with Flask

193. Module Introduction (2:04) Start
194. HTTP Requests - The Basics (5:40) Start
195. Understanding API-Endpoints/ URLs (3:32) Start
196. Data Formats (3:18) Start
197. Planning our API (2:04) Start
198. Setting Up our Environment with Flask (10:08) Start
199. Adding our First Route (10:09) Start
200. Installing Postman (2:20) Start
201. Adding a POST Request (7:21) Start
202. Setting Up Routes to Manage our Wallet (8:23) Start
203. Returning Funds (5:43) Start
204. Adding Transactions (11:26) Start
205. Fetching Open Transactions (3:14) Start
206. Testing the Public Key (1:46) Start
207. Adding a User Interface (2:41) Start
208. Optional: Configuring our UI - Creating a Wallet (13:17) Start
209. Optional: Configuring our UI - Loading a Wallet and Adding Mining & Transactions (11:58) Start
210. Exploring our UI (2:45) Start
211. Wrap Up (1:52) Start
212. Useful Resources & Links (1:00) Start

Section: The Node Network

213. Module Introduction (1:42) Start
214. Adding Node Management Methods to the Blockchain (7:18) Start
215. Setting Up Routes to Add Nodes (7:40) Start
216. Adding a Remove Node Route (5:17) Start
217. Adding "get_Nodes" to get all Nodes (1:19) Start
218. Attaching a Node User Interface (11:07) Start
219. Running Multiple Nodes (11:19) Start
220. Sending Requests from within Python (10:36) Start
221. Broadcasting Transactions - Adding the Function & Route (12:06) Start
222. Broadcasting Transactions - Testing & Fixing Errors (5:51) Start
223. Broadcasting New Blocks: Adding the Function & Route (11:12) Start
224. Broadcasting New Blocks: Informing the Peer Nodes (9:53) Start
225. Broadcasting Transactions: Testing (3:28) Start
226. Solving Conflicts (5:32) Start
227. Understanding Consensus (3:28) Start
228. Finding Conflicts (9:34) Start
229. Implementing a Consensus Algorithm (17:20) Start
230. Testing Consensus (5:49) Start
231. Wrap Up (1:01) Start
232. Useful Resources & Links (1:00) Start

Section: Next Steps and Course Roundup

233. Module Introduction (0:46) Start
234. Don't Forget PEP 8 (2:46) Start
235. Using PEP 8 (8:29) Start
236. Using Comments (1:01) Start
237. Diving Deeper Into Python (5:07) Start
238. Improving the Blockchain (10:02) Start
239. Congratulations (0:57) Start
240. Further Links (1:00) Start

Course Instructor

Image

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.