Files Included :
1 - Introduction To The Course (43.62 MB)
2 - Remaster in Progress (44.91 MB)
3 - Video Quality (12.27 MB)
4 - Subtitles (28.65 MB)
5 - How to Get Help (101.09 MB)
6 - Important Tip Source Code (62.57 MB)
315 - Dates and times in Python (14.81 MB)
316 - The datetime modules date class (97.81 MB)
317 - timedelta objects (59.06 MB)
318 - The datetime modules time class (153.16 MB)
319 - datetimedate and another note about importing (24.19 MB)
320 - Aware and naive times (36.11 MB)
321 - zoneinfo backport (36.76 MB)
322 - timezone objects (74.91 MB)
323 - Timezone challenge solution (112.29 MB)
324 - Some behaviour you might not expect (73.29 MB)
325 - Perform arithmetic in UTC most of the time (102.53 MB)
327 - Introduction to Tkinter (95.09 MB)
328 - TkInter Pack Geometry Manager (83.01 MB)
329 - TkInter Grid Geometry Manager (151.06 MB)
330 - Advanced GUI Example Part 1 (195.44 MB)
331 - Advanced GUI Example Part 2 (235.24 MB)
332 - Advanced GUI Example Part 3 (289.25 MB)
333 - Tkinter Challenge (143 MB)
334 - Functions in Python (102.11 MB)
335 - Functions Part 2 (73.23 MB)
336 - Functions Part 3 (62.84 MB)
337 - Parabola More on Functions (68.74 MB)
338 - Scope in Functions (126.91 MB)
339 - Fix Function and Draw Circles (89.69 MB)
340 - Enhanced Circles and Challenge (136.93 MB)
341 - Blackjack Setup (76.01 MB)
342 - Load Cards (239.28 MB)
343 - Deal Cards (102.05 MB)
344 - Global Variables (107.37 MB)
345 - Global Keyword (190.8 MB)
346 - Test Blackjack Game (129.18 MB)
347 - Blackjack Challenge (220.17 MB)
348 - Importing Techniques (204.07 MB)
349 - Underscores in Python code (80.06 MB)
350 - Namespaces more on Scope and Recursion (146.32 MB)
351 - Recursion with OS Module and Filesystem and Nonlocal keyword (117.71 MB)
352 - Nonlocal keyword Free and LEGB (124.68 MB)
353 - Object Orientated Programming and Classes (70.6 MB)
354 - Instances Constructors Self and more (83.92 MB)
355 - Class Attributes (104.37 MB)
356 - Methods Part 1 (79.17 MB)
357 - Methods Part 2 (86.94 MB)
358 - Non Public and Mangling (131.14 MB)
359 - DocStrings and Raw Literals (80.21 MB)
360 - Album class and More on DocStrings (88.21 MB)
361 - albums-copy (7.79 KB)
361 - Artist class and import Albums (157.55 MB)
362 - Load data and Write Checkfile (112.14 MB)
363 - Compare Files and Algorithm Flowcharts (140.75 MB)
364 - Implement Revised LoadData Algorithm (250.81 MB)
365 - Write OOP Version (140.54 MB)
366 - Getters and Properties (109.98 MB)
367 - Remove Circular References Challenge (31.19 MB)
368 - Getters and Setters (147.52 MB)
369 - Data Attributes and Properties (90.11 MB)
370 - Alternate Syntax for Properties (44.52 MB)
371 - Inheritance (70.89 MB)
372 - Subclasses and Overloading (97.06 MB)
373 - Calling Super Methods (46.22 MB)
374 - Changing Behavior of Methods (58.66 MB)
375 - Overriding Methods (98.57 MB)
376 - Inheritance Challenge (98.52 MB)
377 - Polymorphism (127.73 MB)
378 - Duck Test (56.14 MB)
379 - Composition (105.97 MB)
380 - Composition Continued (68.28 MB)
381 - Test Code and Challenge (92.26 MB)
382 - Aggregation (91.87 MB)
383 - Introduction to Databases (27.97 MB)
384 - Database Terminology (72.21 MB)
385 - Sqlite3 Install on Windows (81.54 MB)
386 - Sqlite3 Install on a Mac (38.22 MB)
387 - SQLite3 Install on Ubuntu Linux (27.34 MB)
388 - Introduction to SQLite (146.96 MB)
389 - More with SQL using SQLite (136.6 MB)
390 - Querying data with Sqlite (254.62 MB)
391 - Order by and Joins (213.58 MB)
392 - More complex Joins (312.94 MB)
393 - Wildcards and Views (255.51 MB)
394 - Housekeeping and the Challenge (167.74 MB)
395 - SQL in Python (93.73 MB)
396 - Connections Cursors and Transactions (91.99 MB)
397 - SQL Injection Attacks (75.58 MB)
398 - Placeholders and Parameter Substitution (48.86 MB)
399 - Exceptions (168.61 MB)
400 - Exceptions Challenge (91.21 MB)
401 - Exceptions Continued (148.85 MB)
402 - Raising Exceptions (75.59 MB)
403 - More on Exceptions (85.45 MB)
404 - Exceptions and TODO (101.63 MB)
405 - Rolling back Transactions (76.59 MB)
406 - Adding Database code to the Account Class (164.63 MB)
407 - GUI Database Editing Overview (9 MB)
408 - Ultimate Edition Database View (171.4 MB)
410 - Update Deposit and Withdrawal Methods (182.48 MB)
411 - Displaying Time in Different Timezones (112.14 MB)
412 - SQLite3 strftime Function (144.25 MB)
413 - Challenge (141.72 MB)
414 - Problems Storing Timezones (54.8 MB)
415 - Rolling Back Transactions (173.05 MB)
416 - Simple Database Browser (188.75 MB)
417 - Scrollbars (112.94 MB)
418 - Star Args (98.66 MB)
419 - Kwargs (47.65 MB)
420 - More on KWArgs (109.79 MB)
421 - Scrollable Listbox (192.02 MB)
422 - Populating a Listbox from a Database (122.32 MB)
423 - Show Songs from Album (76.56 MB)
424 - The DataListbox Class Code (196.47 MB)
425 - Linking our DataListBoxes (139.1 MB)
426 - Linking our DataListBoxes Continued (183.25 MB)
427 - DataListbox Challenge (161.19 MB)
428 - Introduction (3.38 MB)
429 - Generators and Yield (123.13 MB)
430 - Next and Ranges (58.69 MB)
431 - Generator Examples Fibonacci numbers and Calculating Pi (182.15 MB)
432 - The oswalk Generator (143.08 MB)
433 - Searching the Filesystem (182.58 MB)
434 - Reading Mp3 Tags (215.98 MB)
435 - List Comprehensions (149.21 MB)
436 - List Comprehensions and SideEffects (53.52 MB)
437 - Challenge Solutions (102.85 MB)
438 - Conditional Comprehensions (83.35 MB)
439 - Conditional Expressions (125.68 MB)
440 - Challenges (30.36 MB)
441 - Challenge 1 Solution (49.04 MB)
442 - Challenge 2 Solution (143.77 MB)
443 - Nested Comprehensions (72.04 MB)
444 - Nested Comprehensions Challenge (223.41 MB)
445 - The timeit Module (141.52 MB)
446 - More on timeit (66.75 MB)
447 - timeit Continued and Challenge (251.72 MB)
448 - timeit Challenge (103.29 MB)
449 - Map Intro (68.77 MB)
450 - Map Challenge Completion (62.01 MB)
451 - The Filter Function (40.45 MB)
452 - The Reduce Function (57.75 MB)
453 - any and all (75.53 MB)
454 - Named Tuples (104.17 MB)
455 - any and all with Comprehensions (78.28 MB)
456 - Lambda expressions (53.34 MB)
457 - Using lambdas (39.82 MB)
458 - More lambdas (28.56 MB)
459 - Conditional expressions (59.09 MB)
460 - Conditional expression challenge (20.74 MB)
461 - A lambda with a conditional expression (60.08 MB)
462 - A toy calculator (75.99 MB)
463 - A lambda in a loop (69.25 MB)
464 - Methods of some statecarrying object (62.48 MB)
465 - Frame makes a good base class (68.47 MB)
466 - eval is dangerous (30.43 MB)
467 - Control all input to eval (30.36 MB)
468 - Mitigating the danger of eval (70.97 MB)
469 - Functions are objects (69.72 MB)
470 - Big O notation (58.8 MB)
471 - Big O tables and graphs (56.36 MB)
472 - Bubble sort (64.05 MB)
473 - Big O of Bubble sort and an optimisation (38.05 MB)
474 - Big O of our improved Bubble sort (32.32 MB)
475 - Bubble sort optimisation (42.02 MB)
476 - Best worst and average cases (30.26 MB)
477 - Big O summary (8.75 MB)
479 - Bonus Downloads including slides (105.74 MB)
10 - Python for Mac (44.73 MB)
11 - Install IntelliJ IDEA for Mac (15.32 MB)
12 - Python for Linux (44.19 MB)
13 - Install IntelliJ IDEA for Linux (15.09 MB)
14 - Configuring IntelliJ IDEA WINDOWS MAC and LINUX (74.78 MB)
15 - Further configuration of IntelliJ (36.7 MB)
8 - Python for Windows (35.71 MB)
9 - Installing IntelliJ IDEA for Windows (10.66 MB)
16 - Introduction (9.85 MB)
17 - Our First Python Program (44.96 MB)
18 - Printing in Python (34.21 MB)
19 - Strings in Python (41.5 MB)
20 - The Escape Character (57.28 MB)
21 - More on Escape Characters in Strings (32.49 MB)
22 - Variables and Types (54.55 MB)
23 - Python is a Strongly Typed Language (34.78 MB)
24 - Numeric Data Types in Python (21.72 MB)
25 - Numeric Operators (26.16 MB)
26 - Expressions (25.11 MB)
27 - Operator Precedence (37.04 MB)
28 - The str String Data Type (30.97 MB)
29 - Negative Indexing in Strings (27.12 MB)
30 - Slicing (63.88 MB)
31 - Slicing with Negative Numbers (13.56 MB)
32 - Using a Step in a Slice (27.67 MB)
33 - Slicing Backwards (22.84 MB)
34 - Challenge Solution and Slicing Idioms (44.87 MB)
35 - String Operators (74.6 MB)
36 - String Replacement Fields (111.84 MB)
37 - String Formatting (75.84 MB)
38 - fstrings (21.1 MB)
39 - Python 2 String Interpolation (41.93 MB)
40 - Section Summary (5.09 MB)
41 - Introduction to Blocks and Statements (115.86 MB)
42 - if Statements (43.41 MB)
43 - elif (39.35 MB)
44 - Using a Debugger in IntelliJ or Pycharm (82.25 MB)
45 - More on if elif and else (28.93 MB)
46 - if elif and else in the Debugger (32.33 MB)
47 - Adding a Second Guess (38.17 MB)
48 - Conditional Operators (69.5 MB)
49 - Challenge Solution (16.61 MB)
50 - Using and or in Conditions (38.66 MB)
51 - Simplify Chained Comparison (31.03 MB)
52 - Boolean Expression True and False (62.08 MB)
53 - Truthy Values (39.99 MB)
54 - in and not in (37.66 MB)
55 - if Challenge (9.6 MB)
56 - Solution to if Challenge (24.23 MB)
57 - for loops (28.66 MB)
58 - Stepping through a for loop (68.76 MB)
59 - for loops Extracting Values from User Input (43.76 MB)
60 - Iterating Over a Range (13.91 MB)
61 - More About Ranges (20.4 MB)
62 - Nested for loops (31.74 MB)
63 - continue (55.1 MB)
64 - break (47.21 MB)
65 - Initialising Variables and None (40.44 MB)
66 - while loops (48.36 MB)
67 - More on while loops (36.55 MB)
68 - Break in a while loop (24.01 MB)
69 - The Random Module and Import (74.43 MB)
70 - Challenge Solution (52.13 MB)
71 - Binary Search (21.74 MB)
72 - Hi Lo Game (41.77 MB)
73 - Pass Statement and Complete the Hi Lo Game (35.97 MB)
74 - Testing the Hi Lo Game (86.19 MB)
75 - Augmented Assignment (48.08 MB)
76 - PEP8 The Python Style Guide (73.95 MB)
77 - Refactoring Code (28.67 MB)
78 - else in a loop (25.56 MB)
79 - else in the Hi Lo Game (51.74 MB)
80 - Conditional Debugging (51.79 MB)
81 - Another else Example (16.06 MB)
82 - Section Summary and Challenge (9.56 MB)
83 - Section Challenge Solution (26.88 MB)
84 - Optional Extra Challenge Solution (40.81 MB)
85 - Changing the Condition (15.67 MB)
100 - Builtin Functions (40.93 MB)
101 - Sorting Things (73.83 MB)
102 - CaseInsensitive Sorting (37.49 MB)
103 - Creating Lists (67.54 MB)
104 - Replacing a slice (52.82 MB)
105 - Deleting Items from a List (58.66 MB)
106 - Safely removing values from a list (21.17 MB)
107 - Removing the High Values (55.36 MB)
108 - Test Test and Test Then Test Again (33.34 MB)
109 - Testing the Program (37.47 MB)
110 - Removing Items from a List Backwards (39.86 MB)
111 - The Reversed Function (52.19 MB)
112 - Algorithms Performance (85.62 MB)
113 - Summary so far (12.01 MB)
114 - Nested Lists Code Style (69.19 MB)
115 - Processing Nested Lists (36.44 MB)
116 - Solution to nospam Challenge (30.95 MB)
117 - Function Signatures (34.17 MB)
118 - print revisited (42.59 MB)
119 - The join Method (58.31 MB)
120 - The split Method (65.87 MB)
121 - Solution to Mini Challenge (46.21 MB)
122 - Tuples (30.97 MB)
123 - Tuples are Immutable (29.28 MB)
124 - Unpacking a Tuple (50.55 MB)
125 - Practical uses for Unpacking Tuples (28.02 MB)
126 - More Unpacking (47.45 MB)
127 - Nested Tuples and Lists (47.24 MB)
128 - Solution to Unpacking Challenge (12.67 MB)
129 - Nesting Further (22.17 MB)
130 - Nested Data Structures (49.66 MB)
131 - Nested Indexing (37.35 MB)
132 - Simple Jukebox Demonstration (18.99 MB)
133 - Simple Jukebox Importing Data (43.43 MB)
134 - Simple Jukebox The Code (56.81 MB)
135 - Constants in Python (75.32 MB)
136 - Finishing the Code (47.27 MB)
137 - Challenge (9.5 MB)
138 - Challenge Solution (27.73 MB)
139 - Summary (12.03 MB)
86 - Introduction to Sequence Types (18.11 MB)
87 - Lists (24.26 MB)
88 - Immutable Objects (53.5 MB)
89 - Mutable Objects (22.39 MB)
90 - Binding Multiple Names to a List (32.15 MB)
91 - Common Sequence Operations (36.57 MB)
92 - Operations on Mutable Sequences (26.18 MB)
93 - Appending to a List (59.99 MB)
94 - Mini Challenge Solution (25.14 MB)
95 - Iterating Over a List (52.84 MB)
96 - The enumerate Function (34.11 MB)
97 - Improving our Code (101.44 MB)
98 - Removing Items from a List (51.85 MB)
99 - Sorting Lists (38.86 MB)
140 - Introduction (14.72 MB)
141 - Defining a function (26.55 MB)
142 - Program flow when calling a function (24.13 MB)
143 - Parameters and arguments (31.84 MB)
144 - Debugging with parameters (50.28 MB)
145 - Palindromes (33.45 MB)
146 - Palindrome challenge solution (18.82 MB)
147 - Sentence challenge solution (55.64 MB)
148 - Functions calling functions (17.59 MB)
149 - Returning values (78.51 MB)
150 - getinteger Challenge solution (52.04 MB)
151 - Returning None (24.83 MB)
152 - Functions that perform actions (79.88 MB)
153 - Handling invalid arguments (92.71 MB)
154 - width challenge solution (30.93 MB)
155 - Default parameter values (26.75 MB)
156 - Keyword arguments (78.52 MB)
157 - Docstrings (62.92 MB)
158 - Writing a Docstring (69.05 MB)
159 - How professional is that (64.93 MB)
161 - Fibonacci Numbers (50.91 MB)
162 - Writing a fibonacci function (77.68 MB)
163 - Function annotations and type hints (65.85 MB)
164 - Function annotations with default values (33.19 MB)
166 - A history lesson (73.49 MB)
167 - Printing in colour (57.9 MB)
168 - Running your program like a user (51.23 MB)
169 - Windows Only Installing prerelease version of colorama (58.23 MB)
170 - colorama module and virtual environments (76.62 MB)
171 - Activating a virtual environment (58.29 MB)
172 - A function to test our HiLo game (59.68 MB)
173 - Counting correct guesses (28.31 MB)
174 - Playing Fizz Buzz (28.5 MB)
175 - Playing Fizz Buzz Solution (53.08 MB)
176 - args (47.77 MB)
177 - colourprint with multiple arguments (50.17 MB)
178 - Rules for variable number of arguments (28.4 MB)
179 - Defining different parameter types (51.26 MB)
180 - Section Summary (15.68 MB)
181 - Introduction (7.08 MB)
182 - What is a dictionary (36.7 MB)
183 - Iterating over a dictionary (49.78 MB)
184 - Adding items to a dictionary (37.44 MB)
185 - Changing values in a dictionary (42.06 MB)
186 - Removing items from a dictionary (60.89 MB)
187 - Using in with a dictionary (67.12 MB)
188 - Dictionary menu challenge solution (65.19 MB)
190 - Adding items to a dictionary (47.77 MB)
191 - Smart fridge (32.21 MB)
192 - Whats for tea (59.21 MB)
193 - Using several dictionaries together (54.36 MB)
194 - Checking the pantry (49.15 MB)
195 - Checking quantities choosing a data structure (45.34 MB)
196 - Checking quantities the code (44.39 MB)
197 - Solution Create a shopping list challenge (59.36 MB)
198 - Wrong decisions dont have to be fatal (48.72 MB)
199 - The setdefault method (100.66 MB)
200 - APIs and a mobile phone demo (59.26 MB)
201 - The dict documentation (93.56 MB)
202 - The remaining dict methods (31.62 MB)
203 - The dict update method (76.6 MB)
204 - The dict values method (68.25 MB)
205 - References to mutable objects (37.2 MB)
206 - Shallow copy (44.75 MB)
207 - Shallow copy stepbystep (28.56 MB)
208 - Deep copy (28.23 MB)
209 - Simple deep copy solution (100.91 MB)
210 - Hash functions (85.89 MB)
211 - A really bad hashing function (44.51 MB)
212 - Hash tables (31.79 MB)
213 - Completing our simple dictionary implementation (38.83 MB)
214 - Hash functions and security (25.66 MB)
215 - hashlib the secure hash module (114.13 MB)
216 - Introduction to sets (23.6 MB)
217 - Python sets (18.74 MB)
218 - Implications of sets being unordered (35.41 MB)
219 - set membership (65.53 MB)
220 - Testing set membership is fast (29.5 MB)
221 - Adding items to a set (26.29 MB)
222 - Using a set to remove duplicate values (48.8 MB)
223 - Deleting items from a set (51.36 MB)
224 - The discard method (53.06 MB)
225 - The remove method (135.63 MB)
226 - The pop method (30.95 MB)
227 - set union (42.64 MB)
228 - Set union in practice (46.79 MB)
229 - Union update (26.85 MB)
230 - Advantage of the set operation methods over the operators (46.81 MB)
231 - Set intersection (46.82 MB)
232 - Set intersection in practice (28.35 MB)
233 - Set difference (20.41 MB)
234 - Set difference in practice (28.06 MB)
235 - Set symmetric difference (34.49 MB)
236 - subsets and supersets (17.7 MB)
237 - subsets and supersets in Python (67.79 MB)
238 - Practical application of subsets and supersets (46.44 MB)
240 - Introduction (7.25 MB)
241 - Files and directories (46.57 MB)
242 - Introduction to the command prompt or terminal (60.4 MB)
243 - Paths (86.63 MB)
244 - Text files (8.67 MB)
245 - Reading from a text file (64.71 MB)
246 - Opening a file using with (18.41 MB)
247 - read readline and readlines (49.12 MB)
248 - strip lstrip and rstrip (35.09 MB)
249 - removeprefix and removesuffix in Python 39 (21.41 MB)
250 - Parsing data in a text file (58.15 MB)
251 - Working with text data (50.57 MB)
252 - Solution to capital city challenge (47.09 MB)
253 - Dictionary values with multiple keys (27.49 MB)
254 - Printing data to a text file (45.42 MB)
255 - Writing data to a text file (81.91 MB)
256 - File modes (61.85 MB)
257 - Unicode a brief history (40.58 MB)
258 - Unicode in Python (28.87 MB)
259 - File encodings (85.97 MB)
260 - Serializing data using JSON (48.33 MB)
261 - Limitations of JSON (52.03 MB)
262 - Practical application parsing JSON data (42.18 MB)
263 - Practical application parsing JSON data from the internet (58.53 MB)
264 - The CSV format (110 MB)
265 - Reading a CSV file (99.44 MB)
266 - quoting in a CSV file (31.28 MB)
267 - Sniffer and Dialect (71.7 MB)
268 - CSV Dialect (72.04 MB)
269 - Writing a CSV file (40.6 MB)
270 - The csv DictReader (25.73 MB)
271 - Solution to DictReader challenge (70.19 MB)
272 - Field names with DictReader and DictWriter (79.07 MB)
273 - Reading and writing multiple files (56.06 MB)
274 - The csv DictWriter (98.7 MB)
275 - The zip function (45.42 MB)
276 - Reading and writing to the same text file (64.31 MB)
277 - Solution to parsing functions challenge (76.8 MB)
278 - The recordinvoice function (76.29 MB)
279 - Using the recordinvoice function (78.73 MB)
280 - seek and tell (86.61 MB)
281 - Improving the recordinvoice function (41.43 MB)
283 - Working with binary files bytes and bytearray (64.6 MB)
284 - Reading a bitmap file (112.91 MB)
285 - Little endian and big endian (14.52 MB)
286 - Making sense of binary data (122.89 MB)
287 - Reading tags in an mp3 file (55.53 MB)
288 - The ID3v2 specification (129.09 MB)
289 - The code (106.1 MB)
290 - Filling in the blanks (126.79 MB)
291 - Extracting images (152.08 MB)
292 - Testing our readid3 program (93.63 MB)
293 - Checking the hash of a file (32.1 MB)
295 - End of Remaster (14.51 MB)
296 - Introduction to the section (13.42 MB)
297 - The turtle module (47.25 MB)
298 - Importing specific objects (20.66 MB)
299 - Namespaces and global scope (30.73 MB)
300 - Local scope (27.24 MB)
301 - Builtins (38.51 MB)
302 - Nested functions (19.08 MB)
303 - Enclosing scope (22.24 MB)
304 - A little white lie or an oversimplification (22.72 MB)
305 - Changing the value of a free variable (60.89 MB)
306 - Investigating changes to a free variable (82.53 MB)
307 - The nonlocal keyword (45.02 MB)
308 - The global keyword (44.11 MB)
309 - Importing and the global namespace (51.9 MB)
310 - I nearly forgot (20.01 MB)
311 - import (40.21 MB)
312 - if name main (68.53 MB)
313 - An optimisation you may see in code (65.51 MB)
314 - The webbrowser module (57.14 MB)
[center]
Screenshot