diff --git a/README.md b/README.md
index b0223ff..996e02f 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,14 @@
 ## Домашние задания по курсу
 ### [01. Заготовка для социальной сети](test/dz001/README.md) (ЗАЧЕТ)
 ### [02. Производительность индексов](test/dz002/README.md) (ЗАЧЕТ)
+### [03. Полусинхронная репликация](test/dz003/README.md) (ЗАЧЕТ)
+
+-----
+
+### [04. Лента новостей социальной сети](test/dz004/README.md) (в процессе)
 
 -----
-### [03. Полусинхронная репликация](test/dz003/README.md) (в процессе)
 
----
-### [04. Лента новостей социальной сети](test/dz004/README.md) (не начата)
 ### [05. Репликация из MySQL в tarantool](test/dz005/README.md) (не начата)
 ### [06. Масштабируемая подсистема диалогов](test/dz006/README.md) (не начата)
 ### [07. Онлайн обновление ленты новостей](test/dz007/README.md) (не начата)
diff --git a/test/dz001/README.md b/test/dz001/README.md
index d13fde1..e84c0db 100644
--- a/test/dz001/README.md
+++ b/test/dz001/README.md
@@ -1,4 +1,5 @@
 #[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/)
+#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
 # Заготовка для социальной сети
 Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.
 
diff --git a/test/dz002/README.md b/test/dz002/README.md
index 080c577..1e3ac2f 100644
--- a/test/dz002/README.md
+++ b/test/dz002/README.md
@@ -1,4 +1,5 @@
-#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/): [ОТЧЕТ](REPORT.md)
+#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
+#[ОТЧЕТ](REPORT.md)
 # Производительность индексов
 Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.
 
diff --git a/test/dz002/REPORT.md b/test/dz002/REPORT.md
index 0132fd9..7780ed7 100644
--- a/test/dz002/REPORT.md
+++ b/test/dz002/REPORT.md
@@ -40,5 +40,5 @@
    ORDER BY id
    ```
 ![mountains](img/explain2.jpg "Explain запроса с обратным индексом")
-#### 4. РезюмеЖ
+#### 4. Резюме
 Для конечной оптимизации используется составной индекс `('Surname', 'Name')` потому, что в запросе используется объединение AND условий LIKE ?%. Mysql в этом случае ищет по составному индексу и объединяет строки без сортировки. Именно поэтому, приходится принудительно сортировать результаты. Порядок полей выбран с точки зрения селективности. В реальной обстановке поле «Фамилия» все же более селективно чем «Имя». Плюс к этому, мы видим в EXPLAIN запроса, что в случае использования индекса `('Surname', 'Name')` mysql применяет Multi-Range Read оптимизацию, позволяющую линеаризовать процедуру чтения с диска. Возможно за этот счет значительно повысилась скорость передачи данных? по сравнению с индексом `('Name', 'Surname')`. 
\ No newline at end of file
diff --git a/test/dz003/README.md b/test/dz003/README.md
index af76519..8623334 100644
--- a/test/dz003/README.md
+++ b/test/dz003/README.md
@@ -1,4 +1,5 @@
-#[в процессе](https://otus.ru/learning/61597/#/homework-chat/9334/): [ОТЧЕТ](REPORT.md)
+#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
+#[ОТЧЕТ](REPORT.md)
 #Полусинхронная репликация
 
 В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.
diff --git a/test/dz003/REPORT.md b/test/dz003/REPORT.md
index 6969d0b..e009890 100644
--- a/test/dz003/REPORT.md
+++ b/test/dz003/REPORT.md
@@ -147,13 +147,13 @@ binlog_do_db = app
     enforce-gtid-consistency=true
     binlog-rows-query-log_events=1
     ```
-### 8. Настроить полусинхронную репликацию.
-- #### Включаем динамическую загрузку модулей и полусинхронную репликацию с таймаутом 1с в my.cnf на мастере:
+### 8. Настроить полу синхронную репликацию.
+- #### Включаем динамическую загрузку модулей и полу синхронную репликацию с таймаутом 1с в my.cnf на мастере:
     ```
     loose-rpl_semi_sync_master_enabled=1
     loose-rpl_semi_sync_master_timeout=1000
     ```
-- #### Включаем динамическую загрузку модулей и полусинхронную репликацию в my.cnf на обоих слейвах:
+- #### Включаем динамическую загрузку модулей и полу синхронную репликацию в my.cnf на обоих слейвах:
     ```
     loose-rpl_semi_sync_slave_enabled=1
     ```
diff --git a/test/dz004/README.md b/test/dz004/README.md
new file mode 100644
index 0000000..246208e
--- /dev/null
+++ b/test/dz004/README.md
@@ -0,0 +1,19 @@
+#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/)
+#[ОТЧЕТ](REPORT.md)
+#Лента новостей социальной сети
+Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
+### В данном задании тренируются навыки:
+- работа с кешами;
+- работа с очередями;
+- проектирование масштабируемых архитектур.
+
+Разработать ленту новостей. Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков. Лента формируется на уровне кешей. Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги. В ленте держать последние 1000 обновлений друзей. Лента должна кешироваться.
+
+ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете.
+Критерии оценки: Оценка происходит по принципу зачет/незачет.
+
+### Требования:
+Верно работает инвалидация кеша.
+Обновление лент работает через очередь.
+Есть возможность перестройки кешей из СУБД.
+Рекомендуем сдать до: 17.02.2021
\ No newline at end of file