Лекция 1. Введение в языки программирования
- Компилируемые и интерпретируемые
- Статически и динамически типизируемые
- Обзор наиболее популярных сегодня ЯП
ДЗ: Установить среду разработки, написать и запустить простейший “Hello, World”
Лекция 2. Базовые понятия
- Типы данных
- Операции над примитивами
- Ветвления
- Циклы
- Функции
- Рекурсия
ДЗ: 20 простых алгоритмических задач, 10 решить на Java, 10 на JavaScript
Лекция 3. Введение в ООП
- Конструкторы, поля и методы
- Инкапсуляция
- Полиморфизм (ситуативный, включения, параметрический)
- Наследование
- Интерфейсы и абстрактные классы
ДЗ: Написать реализацию бинарного дерева с возможностью добавлять и удалять элементы, а также поиском в глубину и в ширину
Лекция 4. Инструменты контроля версия, сборки и тестирования
- Централизованные и распределённые VCS
- Процесс сборки
- Ant, Maven
- Принципы юнит тестирования
- Признаки хороших тестов
- Моки
- Покрытие тестами
ДЗ: Создать Maven-проект для своей реализаии дерева, написать тесты, проверить покрытие, залить на github.
Лекция 5. Коллекции
- Нотация “О большое”
- Списки
- Множества
- Ассоциативные массивы
ДЗ: Написать свою реализацию одного из типов коллекций и реализовать там методы map, filter, foldLeft
Лекция 6. Продвинутый ООП
- Принципы SOLID
- Шаблоны проектирования (Factory method, Builder, Singleton, Observer, Visitor)
ДЗ: Реализовать калькулятор “обратной польской нотации”. На входе - список токенов (числа, операции, функции). На выходе - результат вычисления.
Лекция 7. Среда выполнения
- Виртуальная машина
- Позднее связывание
- Garbage collection
- Структура heap’а
- Особенности среды выполнения JavaScript в браузерах
ДЗ: продолжение предыдущей работы. Реализовать преобразование строки, содержащей математическое выражение, в список токенов.
Лекция 8. Многопоточность
- Процессы и потоки
- Создание потоков
- Блок synchronize
- Пулы потоков
ДЗ: решить задачу “обедающих философов”
Лекция 9. Введение в клинет-серверное программирование
- Понятия клиента и сервера
- Протоколы взаимодействия
- Протокол HTTP (структура URL, загаловки и тело запроса, GET и POST)
- Ajax
ДЗ: провести несколько операций с API VK.com используя cURL или другой HTTP-клиент
Лекция 10. Серверные технологии стека Java EE
- Servlet
- Filter
- Listener
- Application server
ДЗ: Написать приложение, предоставляющее HTTP API для получения данных в виде текста и файла, и для записи данных в виде текста, параметров и файлов
Лекция 11. Серверная инфраструктура проекта
- SaaS, PaaS, IaaS
- Базовые принципы работы с клаудами на примере Amazon
- Введение в Linux
ДЗ: Задеплоить на AWS приложение, написанное в рамках предыдущей ДЗ.
Лекция 12. Введение в базы данных
- Принципы работы RDBMS.
- Quering, DML, DDL.
- Constraints
- Indexes
- JDBC
- DAO
ДЗ: Развернуть на AWS одну из RDBMS, спроектировать БД для приложения, разработанного для ДЗ 10, реализовать слой DAO для этого приложения.
Лекция 13. Клиентская веб-разработка
- HTML и шаблонизаторы
- CSS, LESS, SASS
- jQuery
- Twitter Bootstrap
ДЗ: сверстать страничку и предоставить >1 CSS разметки, которые можно переключать для полного изменения внешнего вида
Лекция 14. Клиентская веб-разработка (часть 2)
- RequireJS
- BackboneJS
ДЗ: сделать Todo-list с возможность добавлять, удалять, выполнять задачи, добавлять в избранное и выводить только избранные. Опциональо - написать бэкенд для хранения данных на сервере.
Лекция 15. Введение в процессы разработки ПО
- Водопадный процесс, его достоинтсва и недостатки
- Современные подходы к организации процесса проектирования
- Роли на проекте и кроссфункциональная команда
- Коротко про Scrum и Kanban
ДЗ: подготовить backlog