Published using Google Docs
python
Updated automatically every 5 minutes

Python Programming 


This course focuses on software development using the Python programming language (3.10), and provides its participants with practical knowledge and experience more than any other similar course.

The course was developed for people with basic knowledge of software development. It can be either a programming course that was taken in the past or practical experience.

The course includes 70 academic hours delivered in 14 weekly online synchronous meetings. The training material (slides, video clips, assignments, solutions, and code samples) for the entire course is organized on the e-learning platform we use during the course. Each meeting includes a theoretical lecture together with practical practice (at least 40% of each meeting). The practical practice includes coding by the instructor followed by the students and coding by the students with the assistance of the instructor. Each meeting is captured on video in order to allow the students to have an effective learning process at home.

The course includes lots of relatively small assignments and a final project. The final project

You can find more information about the course as well as a registration form at https://lifemichael.com/courses/python. Detailed information about the premium training we deliver in our public course can be found at https://tinyurl.com/lifemichaelpremiumpubtraining.

You can find a video that overviews this syllabus at https://youtu.be/yHmn1uR8fss.

 

Meeting

Topic

1

Introduction
What is Python?
Why Python?
Real World Examples
Python History
Python Domains
Database Programming
The Python Software Foundation
The First Program
The Python Virtual Machine
Jython
IronPython
SL4A
Modules Import
Pythons Versions
Comments
The Python Package Index,

The Interactive Console

2

Types
Introduction
The Program Structure
The Built-in Types
The type Function
Dynamically Typed
Types Categories
The Numbers Category
The Sequences Category
The Set Category
The Mappings Category
Numeric Types
Numeric Literals
Mixed Types Conversion
Types Conversion
Variables
Complex Numbers
Hexadecimal, Octal and Binary
Binary Operations
Built-in Numeric Tools
Decimal Type
Fraction Type
Boolean Type
Numeric Extensions
Dynamic Typing
Variables, Objects and Refrence
Objects are Garbage Collected
Shared References
The sys.getrefcount() Function
Working with Files
Common File Operations

Operators 
Introduction
Standard Operators
Operators Precedence
Floor and Classic Divisions
Chained Multiple Comparisons
Unlimited Precision Integers
Binary Operators
The -- Operators
The is Operator

3

Statements

Introduction
The Syntax
Try Statements
Assignments
Basic Form Assignment
Tuple and List Unpacking Assignment
Sequence Assignment
Extended Sequence Assignment
Multiple Target Assignments
Augmented Assignments
Useful Patterns
Variables Names Rules
Variables Names Conventions
Names Don’t Have Types
Expression Statements
The print Built-in Function
The if Statements
Multiway Branching
Truth Tests
The if/else Ternary Expression
The while Loop
The for Loop

Iterators
Lists Comprehensions
Extended List Comprehensions
The range Function
The map Function
The zip function
The filter Function
Multiple Iterators
Dictionary Iterators
The dir Function
The del Keyword
The None Constant

Functions
Introduction
The def Statement
Function Attributes

4

Functions
Variables Scope
The Local Scope

The nonlocal Keyword
The nonlocal Statement
The Global Scope
The LEGB Rule
Accessing Globals
Nested Functions
Returned Functions
Arguments
Sequence Returned Value
The func(name) Syntax
The func(name=value) Syntax

The func(*name) Syntax
The func(**name) Syntax
Indirect Function Call
Functions Are Objects
Functions Annotations
Anonymous Functions (Lambda)
The main Function
The __name__ Special Variable

Modules
Introduction
The import Statement
The from Statement
The as Statement
First Time Only

5

Object Oriented Programming
Introduction
Simple Class Definition
The Simples Python Class Definition
The __init__ Function
Inheritance
The super() Function
Polymorphism
Overriding and Overloading
Static Methods
Static Variables
Multiple Inheritance
Private Variables
Properties
The str Class
Magic Methods
The __str__ Magic Method
Operators Overloading
Binary Operators Overloading

Assignment Operators Overloading

Unary Operators Overloading
Comparison Operators Overloading
Data Classes

Abstract Classes

6

Exceptions
Introduction
The try, raise & except Statement
User Defined Exceptions
The finally Statement
The try, except & else Statement
Handling Multiple Exceptions
The as Optional Part
Accepting Multiple Exceptions
The with Statement

Collections
Introduction
Sets Overview
Sets’ Operators

Sets’ Methods
Iterating Sets

Creating Sets

Sets Comprehension
Lists Duplicates Removal

Frozen Sets

7

Collections

Strings
Strings Literals

Single and Double Quoted Strings

Implicit Concatenation
The len Function
Escape Code Sequences
Raw Strings

Triple Quotes

Strings Concatenation
The in Operator

Indexing and Slicing

Strings Conversion
Characters Conversion
Strings Methods
Strings Formatting Expression
Dictionary Based String Formatting
Mutable and Immutable Types
Lists Overview

Lists Operations

Dictionaries Overview

Dictionary Operations

Dictionary in Operator

Tuples Overview

Tuples Operations
The copy Function
The copy Module

Copy and Deep Copy

8

Files
Introduction
The open Function
The close Function
The read Function
The readlines and writelines Functions
Binary Files
Encoding
Text Files End of Lines
Random Access Files
The with Statement
Handling Binary Data
The byte string Type
The FileExistsError Exception
The FileNotFoundError Exception
The IsADirectoryError Exception
The NotADirectoryError Exception
The PermissionError Exception
Data Streaming
The pipes Module

Directories
Introduction
The os.popen Function
The os.listdir Function
The os.listdir Function
The os.curdir Variable
The os.curdir Variable
The glob Module

9

Regular Expressions
Introduction
Literals as Regular Expressions
The re.compile Function
The match Method
Meta Characters
Character Classes
Predefined Character Classes
Alternation
Quantifiers
Greedy & Reluctant Quantifiers *
Boundaries
The findall Method

Threads
Introduction
The _thread Module
The threading Module
The Thread Class
The current_thread Function
The enumerate Function
The active_count Function
The get_ident Function *
The stack_size Function *
The join Method *
Daemon Threads *
The Condition Class *
The Semaphore Class *

10

Networking System Tools
Introduction
Getting Data Over HTTP Protocol
Getting Host IP
Introduction to TCP/IP Protocols *
TCP/IP Client Server Development *

 
Parsing XML
Introduction
XML Parsing

The DOM Parsing
 
Parsing JSON
Introduction
The json Module
The json.dumps Function
The json.loads Function

11

Functional Programming
Introduction
Recursive Functions
Pure Functions
Lambda Expressions
High Order Functions
Immutable Data

The yield Statement
Lazy Evaluation
Recursion instead of Loop
Currying Functions

12

Text Processing
Introduction
Strings Utilities
String Methods
Templates

Unit Testing
Introduction
The unittest Module
The pytest Framework

Profiling
Introduction
The cProfile Module

Command Line
Introduction
The python Utility
The sys.argv Attribute
Environment Variables
The argparse Module

   
Logging
Introduction
The logging Module

Introspection
Introduction
Finding Available Modules
The dir Function
The type Function

Assertions
Introduction
The assert Statement

Databases
Introduction
The DB-API Interface
The PyMySQL Driver
Creating Connection
The INSERT Query
The SELECT Query
The UPDATE Query
The DELETE Query

Decorators
Introduction
Decorator Development

13

Packages
Introduction
The sys.path Variable
The __init__.py File
The as Statement
The from import Statement
 
Virtual Machine
Introduction
Python VM Phases
The dis Module
Python Virtual Machines

Garbage Collector
Introduction
The CPython’s Garbage Collector
The gc Module

 
Documentation
Introduction
The PyDoc Tool

14

Design Patterns
Singleton
Factory Method
Abstract Factory

Patterns Matching
What is Patterns Matching?
Matching Specific Values
The _ Wildcard
Matching Sequences
Matching Multiple Values
Composing Patterns
Or Patterns
The as Pattern
Adding Conditions
Matching Objecs’ Types


* if time allows

Changes:
(1) The topic ‘Design Patterns’ was added. The required time was arranged by covering more topics in meetings 16 and 17.
13/11/2017

(2) The topics ‘Databases’ and ‘Decorators’ were added. The required time was arranged in the expense of practice.
15/6/2018

(3) The main function and the __name__ special variable were added to the ‘Functions’ topic.
15/8/2018

(4) The Currying Functions sub topic was added to the Functional Programming topic. 15/11/2018

(5) The Abstract Classes sub-topic was added to the Object Oriented Programming topic.
13/9/2021

(6) The Patterns Matching topic was added.
20/9/2021

(7) The course length was changed. It is a 14 meetings course (instead of 18).
20/10/2022