<ul>
<li>00:00 The Modules chapter</li>
<li>00:30 Goals of having modules</li>
<li>04:00 Before modules (a function in a single-file program)</li>
<li>04:34 Creating modules: Separating the above program in to module and executable. (import, from)</li>
<li>05:40 How does Python find the module to be loaded?</li>
<li>07:56 Importing and aliasing module name (as)</li>
<li>11:25 path to load modules from - the module search path</li>
<li>12:30 sys.path the module search path</li>
<li>13:45 Flat project directory structure</li>
<li>14:39 Relative paths (Why is the directory called 'bin'?</li>
<li>16:30 Absolute path and why it is not a good practice</li>
<li>18:45 Back to the relative path and explaining how it works (os.path.join, os.path.abspath, os.path.dirname, __file__)</li>
<li>24:13 Mentioning modules in directory hierarchy (submodules) but not showing them. Since then, there is already a slide with that example.</li>
<li>24:46 Python modules are compiles .pyc files, __pycache__ directory.</li>
<li>28:30 Caching</li>
<li>30:40 How "import" and "from" work?</li>
<li>31:20 Runtime loading of modules</li>
<li>33:30 When you import a module, will Python find it eventually?</li>
<li>35:13 Conditional loading of modules</li>
<li>37:18 Duplicate importing of functions (pylint)</li>
<li>40:50 Script or library (script or module) (__name__, __main__)</li>
<li>47:00 Import the same module multiple times</li>
<li>48:14 Exercises: Convert the earlier solutions to be modules and programs.</li>
</ul>