Skip to content

DenisGladkiy/courses

Repository files navigation

##Курс Java

Содержание курса:

1. Введение в JAVA

  • Введение. Цели курса
  • Краткая история языка и его характерные особенности.
  • Первая программа на JAVA, компиляция и исполнение
  • Установка и настройка среды
  • Основные типы данных и их использование
  • Комментарии
  • Система контроля версий Git (?)
  • Обзор источников и ресурсов для самообразования

ДЗ #1:

  • Установка и настройка среды у себя дома
  • Найти литературу и необходимые источники данных

2. Синтаксис языка

  • Ссылочные типы и примитивные типы
  • Работа со String
  • Массивы
  • Области видимости переменных
  • Условные конструкции
  • Операторы и циклы
  • Методы
  • Простейшие алгоритмы и вычисления

ДЗ #2:

  • Реализовать простой алгоритм
  • Алгоритм с использованием цикла
  • Работа с классом String
  • Почитать про code-conventions

3. Практический блок

  • Вопросы по первым лекциям
  • Обсуждения ДЗ
  • Практическое задание
    • Дополнительные задачи на String
      • Реализовать substring
      • Определить являются ли числа в строке последовательны
    • Приложение-калькулятор
  • Доп. задание для успевающих

ДЗ #3

  • Изучаем Git
  • Доделываем ДЗ № 2 + Практику
  • Практика - Реализовать калькулятор
  • Для тех кто все успевает - сделать этот же калькулятор с помощью GUI (на Swing'e)
  • Работаем с Git

4. ООП

  • Парадигма ООП
  • Базовый класс - Object
  • Области видимости и инкапсуляция. Пакеты, импорты

ДЗ #4:

  • Реализовать класс с определенными данными и поведением (фабрика, сериализация/десериализация)
  • Сделать pull request на оригинальный репозиторий

5. Наследование и интерфейсы

  • Расширение классов
    • UML
    • Класс Object
    • Класс Class
    • Применение наследования
  • Интерфейсы и внутренние классы
    • Интерфейсы
    • Полиморфизм
    • Внутренние классы
    • Анонимные классы

ДЗ #5

  • Читаем про наследование, полиморфизм
  • Читаем UML
  • Доделываем все предыдущие ДЗ
  • Рисуем диаграмму классов
  • Синхронизируем последние изменения и делаем pull request

6. Практика. Обощенное ООП. Практика для модуля №5.

7. Исключения

  • Зачем нужны исключения
  • Проверяемые и непроверяемые исключения
  • Обработка исключений
  • throw, throws, try{}catch(){}, finally

ДЗ #6

  • Input\Output streams
  • Работа с файловой системой
  • Улучшение рулетки

8. Коллекции

  • Iterable, Iterator и Collection
  • Интерфейс List, Queue и его имплементации
  • Интерфейс Set и его имплементации
  • Интерфейс Map и его имплементации

ДЗ #8

  • Реализовать связный список
  • Сделать анализатор текста

9. Разбор предыдущей домашней работы

ДЗ #9

  • Читаем про обобщения
  • Имплементим мультимапу

10. Обощения

  • Обобщенные классы
  • Обощенные методы
  • Ограничения переменных типов
  • Обощения и виртуальная машина
  • Трансляция
  • Подстановочные типы

ДЗ #10

  • Читаем про базы данных и SQL
  • Делаем имитацию БД

11. Базы данныз

  • Введение
  • ER-модель
  • Реляционные базы
  • DDL
  • DML

ДЗ #11

  • Читаем про базы данных и SQL
  • Ставим себе MySQL
  • Играем с тестовой базой

12. Базы данных и JDBC

  • JOINS
  • Транзакционность
  • Хранимые процедуры и функции
  • JDBC

ДЗ #12

  • Делаем приложени, которое работает с БД через JDBC

13. Практика

  • Обсуждаем предыдущее ДЗ
  • Замечания
  • Доделываем ДЗ #12 с учетом замечаний

14. Сервлеты

  • Java Servlets
  • Servlet Overview
  • Servlet Life Cycle
  • Java Servlet Example
  • HttpServlet
  • HttpRequest
  • HttpResponse
  • HttpSession
  • RequestDispatcher
  • ServletContext
  • web.xml Servlet Configuration
  • Cookies and Servlets
  • Servlet Filters

ДЗ #14

  • Делаем web-приложение

15. Рефлексия, аннотации

ДЗ #15

  • Пишем мальнький сервис, который работает с рефлексией

16. Юнит тестирование

  • Юнит тестирование
  • Разбор предыдущих ДЗ в классе

ДЗ #16

  • Покрываем тестами ваше веб-приложение

17. Паттерны проектирования

ДЗ #17

  • Реализуем паттерн Memento для рулетки

18. OOD

ДЗ #18

  • Пишем свинговое приложение

19. Многопоточность и паралелизм

  • Какая польза от многопоточности
  • Какая цена многопоточности
  • В чем разница между паралелизмом и concurrency
  • Основы многопоточности с точки зрения архитектуры компьюютера
  • Многопточность с точки зрения ОС
  • Что такое поток и процесс в ОС
  • Возможные состояния потока
  • Многопоточность с точки зрения Java
  • Создание потоков
  • Гонка (Race conditions)
  • Проблема общих данных
  • Синхноризация
  • Wait, notify, notifyAll

ДЗ #19

  • Улучшаем наше приложение с шариками

20. Многопоточность с практической точки зрения

  • Thread.sleep
  • Atomics
  • Синхронизация
    • Ключевое слово synhronize
    • Synhronize блок кода
    • Synhronize метод
    • Synhronize статический метод
    • Ограничения синхронизации
  • Volatile
    • Видимость данных
    • Гарантированная видимость с volatile
    • Принцип Happens Before
    • Почему volatile не всегда достаточно?
  • Общение между потоками

ДЗ #20

  • Приложение для визуализации алгоритмов сортировки
  • Приложение типа producer-consumer

21. Еще о многопточности

ДЗ #21

  • Решаем тесты
  • Знакомимся с Hibernate

22. Ant и Maven

ДЗ #22

  • Ant и Maven. Конфигурируем билд.

23. ORM - Hibernate - JPA

ДЗ #23

  • Приложение для управления банковскими счетом.

24. ORM - Native Hibernate

25. DI - IoC - Spring

ДЗ #25

  • Улучшаем банковское приложения, воспользовавшись принципами:
    • Lose Coupling
    • High Cohesion
    • Dependency Injection

25. Spring MVC

ДЗ #26

  • Создаем REST приложение на основе Spring MVC

About

Java courses materials

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published