public class TechnoPolis {
public static void main(String[] args) {
System.out.println( "Образовательный
проект для студентов"
);
} }

Основная программа

В течение двух лет студенты получают знания о процессе проектирования и разработки высоконагруженных Java приложений. На проекте используется балльно-рейтинговая система. Контроль производится в течение семестра по результатам выполнения домашних заданий. В конце программы студенты защищают свой проект.

Только для студентов СПбПУ

  • Первый
  • Второй
  • Третий
  • Четвертый
  • Углубленное программирование на Java
    20 занятий, 20 академических часов
  • Алгоритмы и структуры данных
    15 занятий, 15 академических часов
  • Фронтэнд разработка
    10 занятий, 10 академических часов

О курсе «Углубленное программирование на Java»

График занятий в вузе – три дня в неделю с 18:00 до 21:00.

Занятия
    1. О программе курса. Введение в язык, среда программирования, основные конструкции языка.

      Введение в язык. История развития Java. JDK, java, javac. Hello world. Разные JDK/SDK. Написание простейшей программы. Типы данных. Переменные. Операции. Строки. Ввод и вывод. Управляющая логика: блоки, условные операторы, циклы, switch, прерывание логики. Массивы.

      Установка Oracle JDK. Работа с Oracle JDK.
      Метод main как точка входа программы.

      Установка IntelliJ IDEA Community Edition. Настройка IDE.
      Запуск программы, компиляция.
    2. Классы и объекты, статические методы и поля.

      Введение в ООП. Применение предопределенных классов. Определение собственных классов. Статические методы и поля. Параметры методов. Конструирование объектов. Пакеты. Путь к классам. Комментарии и документирование.
    3. Инкапусляция и наследование. Интерфейсы, полиморфизм.

      Уровни доступа к членам класса.
      Классы, суперклассы и подклассы. Класс Object. equals, hashCode, toString. Объектные оболочки и boxing/unboxing. varargs. enum. Основы обработки исключений.
      Интерфейсы. Клонирование объектов. callback. Внутренние классы.
      Полиморфизм. Полиморфизм в Java. Принципы ООП.
    4. Внутренние и вложенные классы.

      Внутренние классы. Статически вложенные классы. Локальные классы. Анонимные классы.
    5. Проверка домашних заданий

      Проверка домашних заданий №1 и №2
    6. Обработка исключений и логирование через out/err. Отладка программ.

      Обработка ошибок. Рекомендации по обработке исключений. assertions. Логирование. Отладка программ. Отладчик / debugger.
    7. Синхронный ввод/вывод. Параметризованные типы. Коллекции. Итераторы.

      Классы InputStream/OutputStream, Reader/Writer. Буферизованный ввод/вывод. Работа с файлами.
      Generics. Обообщенные классы и обобщенные методы. Ограничения на переменные типа. Generic-код и JVM. Ограничения и пределы в Generics. Наследование и Generics. Подстановочные типы.
      Коллекции. Интерфейсы коллекций. Конкретные коллекции. Итераторы. Архитектура коллекций. Алгоритмы. Устаревшие коллекции.
    8. Reflection и аннотации. Unit-тестирование.

      Reflection. Ограничения на Reflection. Security Manager.
      Аннотации. Типы аннотаций.
      JUnit, Mock/Stub. Библиотека Mockito.
    9. Графика на Java.

      Общие сведения о библиотеке Swing. Создание фрейма. Отображение данных в компоненте. Оформление текста. Вывод изображений. Обработка событий. Actions. События от мыши. Иерархия событий в AWT. Swing и MVC. Введение в компоновку пользовательского интерфейса. Ввод текста. Компоненты для выбора вариантов. Меню. Расширенные средства компоновки. Диалоговые окна.
    10. Контрольное занятие № 2

      Проверка домашних заданий
    1. Javac. Среда выполнения. Загрузка классов. JIT-компиляторы. AOT-компиляторы.

      javac. Среда выполнения. Загрузка классов. JIT-компиляторы. AOT-компиляторы.
    2. Выделение памяти и сборка мусора, finalize

      Выделения памяти. Стек. Куча. Граф объектов. Сборка мусора. Алгоритмы сборки мусора. Гипотеза о поколениях.
    3. Потоки, синхронизация, взаимоблокировки. Volatile и основные шаблоны многопоточного программирования

      Потоки. Состояния потоков. Критическая секция. Ключевая проблема многопоточности. Synchonized. Понятие о производительности. Пропускная способности и Latency. Закон Амдала.
    4. Контрольное занятие № 3

      Проверка домашних заданий
    5. Продвинутые шаблоны многопоточного программирования

      Пул потоков. Производитель/Потребитель. Очереди. Стеки.
    6. Лямбда-выражения. Stream API

      Лямбда-выражения. Stream API. Spliteraror. Многопоточные Streams. Модель исполнения. Промежуточные и терминальные операции. ForkJoinPool.
    7. Неблокирующий ввод/вывод. Шаблоны проектирования и рефакторинг

      Неблокирующий ввод/вывод. Шаблоны проектирования и рефакторинг
    8. Профилирование Java программ, оптимизация и представление различных конструкций языка в байткоде

      Профилирование Java программ, оптимизация и представление различных конструкций языка в байткоде
    9. Работа с байткодом JVM. Java Agent. RPC в Java

      Работа с байткодом JVM. Java Agent. RPC в Java
    10. Итоговое занятие

      Подведение итогов. Сдача дз.
Преподаватели
Тимур Насрединов
Михаил Нечаев
Результат

умение использовать принципы ООП с учетом специфики Java; умение использовать стандартную библиотеку для работы с функциями ввода/вывода; умение писать unit-test'ы для Java приложений; умение строить UI Java-приложения; умение анализировать код Java-приложения с помощью Reflection API.