diff --git a/Module2/home_work/01_hw.py b/Module2/home_work/01_hw.py
new file mode 100644
index 000000000..2e876f454
--- /dev/null
+++ b/Module2/home_work/01_hw.py
@@ -0,0 +1,8 @@
+# Требуется определить, можно ли от шоколадки размером n × m долек отломить k долек,
+# если разрешается сделать один разлом по прямой между дольками (то есть разломить шоколадку на два прямоугольника).
+# Формат входных данных
+# Вводятся 3 натуральных числа n, m и k. Точно известно, что k ≠ n ⋅ m.
+# Формат выходных данных
+# Выведите «YES», если можно отломить от шоколадки ровно k долек, и «NO» иначе.
+
+# TODO: your code here
diff --git a/Module2/home_work/02_hw.py b/Module2/home_work/02_hw.py
new file mode 100644
index 000000000..24ec97636
--- /dev/null
+++ b/Module2/home_work/02_hw.py
@@ -0,0 +1,10 @@
+# По данному числу n закончите фразу «На лугу пасется...» одним из возможных продолжений:
+# «n коров», «n корова», «n коровы», правильно склоняя слово «корова».
+# Формат входных данных
+# Дано целое положительное число n
+# Формат выходных данных
+# Программа должна вывести введенное число n и одно из слов (на латинице):
+# коров, корова или коровы
+# Например, 1 корова, 2 коровы, 5 коров, 125 коров.
+
+# TODO: your code here
diff --git a/Module2/home_work/03_hw.py b/Module2/home_work/03_hw.py
new file mode 100644
index 000000000..2ad639cd7
--- /dev/null
+++ b/Module2/home_work/03_hw.py
@@ -0,0 +1,31 @@
+# Задача 3. Таблица стоимости
+# Одна единица некоторого товара стоит x рублей. Напечатайте таблицу стоимости 2, 3, ..., 20 единиц этого товара.
+# Формат входных данных
+# Вводится одно положительное вещественное число x, которое не превосходит 105 и задано с двумя знаками после запятой.
+
+# пример:
+# Входные данные
+# 9.99
+# Выходные данные
+# 1 9.99 Rub.
+# 2 19.98 Rub.
+# 3 29.97 Rub.
+# 4 39.96 Rub.
+# 5 49.95 Rub.
+# 6 59.94 Rub.
+# 7 69.93 Rub.
+# 8 79.92 Rub.
+# 9 89.91 Rub.
+# 10 99.90 Rub.
+# 11 109.89 Rub.
+# 12 119.88 Rub.
+# 13 129.87 Rub.
+# 14 139.86 Rub.
+# 15 149.85 Rub.
+# 16 159.84 Rub.
+# 17 169.83 Rub.
+# 18 179.82 Rub.
+# 19 189.81 Rub.
+# 20 199.80 Rub.
+
+# TODO: your code here
diff --git a/Module2/home_work/04_hw.py b/Module2/home_work/04_hw.py
new file mode 100644
index 000000000..d7c60142c
--- /dev/null
+++ b/Module2/home_work/04_hw.py
@@ -0,0 +1,16 @@
+# Дан размер стороны квадрата. Вывести его стороны символами #.
+# Формат входных данных
+# На вход программе одно целое число a (2 0:
+ print("Положительное")
+else:
+ print("Отрицаельное")
diff --git a/Module2/practice/if_else/02_task_if_else.py b/Module2/practice/if_else/02_task_if_else.py
new file mode 100644
index 000000000..33c5ac798
--- /dev/null
+++ b/Module2/practice/if_else/02_task_if_else.py
@@ -0,0 +1,5 @@
+# Дано целое число. Определить, заканчивается ли оно число цифрой 5?
+# Формат входных данных: Целое положительно число
+# Формат выходных данных: Если число оканчивается цифрой 5, вывести «YES», в противном случае — вывести «NO».
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/03_task_if_else.py b/Module2/practice/if_else/03_task_if_else.py
new file mode 100644
index 000000000..6fd7713f1
--- /dev/null
+++ b/Module2/practice/if_else/03_task_if_else.py
@@ -0,0 +1,5 @@
+# Дан треугольник со сторонами a, b и c. Определите, является ли он равнобедренным.
+# Формат входных данных: дано три натуральных числа. Гарантируется, что отрезки с данными длинами образуют треугольник.
+# Формат выходных данных: Выведите «YES», если треугольник равнобедренный, и «NO» в противном случае.
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/04_task_if_else.py b/Module2/practice/if_else/04_task_if_else.py
new file mode 100644
index 000000000..36ee6da5c
--- /dev/null
+++ b/Module2/practice/if_else/04_task_if_else.py
@@ -0,0 +1,7 @@
+# Дано целое число.
+# Если оно делится на 3 без остатка - вывести ”Foo”,
+# если делится на 5 - вывести “Bar”,
+# а если делится на 3 и на 5 - вывести “Foobar”.
+# Для всех остальных случаев не выводить ничего.
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/05_task_if_else.py b/Module2/practice/if_else/05_task_if_else.py
new file mode 100644
index 000000000..96a730387
--- /dev/null
+++ b/Module2/practice/if_else/05_task_if_else.py
@@ -0,0 +1,6 @@
+# Дано целое число m, задающее номер месяца года.
+# Выведите строку — название времени года, соответствующего данному месяцу.
+# Формат входных данных: дано целое число m (1 ≤ m ≤ 12).
+# Формат выходных данных: требуется вывести название времени года
+
+# TODO: your code here
diff --git a/Module2/practice/if_else/06_task_if_else.py b/Module2/practice/if_else/06_task_if_else.py
new file mode 100644
index 000000000..333f195ce
--- /dev/null
+++ b/Module2/practice/if_else/06_task_if_else.py
@@ -0,0 +1,10 @@
+# Дан номер года. Требуется определить количество дней в этом году, учитывая,
+# что обычный год насчитывает 365 дней, а високосный –— 366 дней.#
+# Високосным считается год, делящийся на 4, но не делящийся на 100,
+# либо делящиеся на 400 (например, годы 700, 1400 и 1800 не являются високосными, а 1600 и 2000 –— являются).
+# Формат входных данных: Вводится неотрицательное целое число— номер года.
+# Формат выходных данных: Выведите количество дней в данном году.
+
+year = int(input("Год: "))
+
+# TODO: your code here
diff --git a/Module2/practice/while/01_task_while.py b/Module2/practice/while/01_task_while.py
new file mode 100644
index 000000000..cb98773cf
--- /dev/null
+++ b/Module2/practice/while/01_task_while.py
@@ -0,0 +1,5 @@
+# Даны два целые числа a и b. Выведите на экран все целые четные числа от a до b включительно.
+# Формат входных данных: Дано два целых числа a и b. Гарантируется, что a < b
+# Формат выходных данных: Выведите все числа, требуемые по условию задачи.
+
+# TODO: your code here
diff --git a/Module2/practice/while/02_task_while.py b/Module2/practice/while/02_task_while.py
new file mode 100644
index 000000000..98f32f5eb
--- /dev/null
+++ b/Module2/practice/while/02_task_while.py
@@ -0,0 +1,5 @@
+# Напишите программу, которая запрашивает строку до тех пор, пока пользователь не введет “хватит”.
+# Т.е. программа запрашивает ввод, если вводится любое значение отличное от слова “хватит”,
+# то программа запрашивает ввод снова.
+
+# TODO: your code here
diff --git a/Module2/practice/while/03_task_while.py b/Module2/practice/while/03_task_while.py
new file mode 100644
index 000000000..3db93b73e
--- /dev/null
+++ b/Module2/practice/while/03_task_while.py
@@ -0,0 +1,12 @@
+# По данному натуральному n выведите лесенку из n ступенек, i-я ступень состоит из чисел от 1 до i без пробелов.
+# Формат входных данных: Вводится натуральное число n.
+# Формат выходных данных: Выведите ответ на задачу.
+# Пример:
+# Для n = 4
+# Нужно вывести:
+# 1
+# 12
+# 123
+# 1234
+
+# TODO: your code here
diff --git a/Module2/practice/while/04_task_while.py b/Module2/practice/while/04_task_while.py
new file mode 100644
index 000000000..347ec986e
--- /dev/null
+++ b/Module2/practice/while/04_task_while.py
@@ -0,0 +1,9 @@
+# Из остатков кирпичей Сергей сложил пирамиду.
+# На вершине пирамиды лежит один кирпич, на втором сверху ряду два кирпича,
+# на третьем - три, и т.д., в нижнем ряду пирамиды количество кирпичей равно количеству уровней пирамиды.
+# После этого он написал на каждом кирпиче по числу, равному количеству кирпичей на этом уровне,
+# т.е. на верхнем уровне 1, на втором уровне 2, и т.д. Определите сумму чисел написанных на кирпичах.
+# Формат входных данных: Программе даётся целое число — количество уровней в пирамиде
+# Формат выходных данных: Необходимо вывести сумму чисел написанных на кирпичах.
+
+# TODO: your code here
diff --git a/Module2/practice/while/05_task_while.py b/Module2/practice/while/05_task_while.py
new file mode 100644
index 000000000..c2a224541
--- /dev/null
+++ b/Module2/practice/while/05_task_while.py
@@ -0,0 +1,20 @@
+# Вывод символов по диагоналям
+# Даны сторона квадрата. Вывести его диагонали символами #.
+# Формат входных данных: На вход программе одно целое число a (2