Бакалавриат
2025/2026




Введение в программирование на Java
Статус:
Курс обязательный (Бизнес-информатика)
Кто читает:
Департамент бизнес-информатики
Где читается:
Высшая школа бизнеса
Когда читается:
1-й курс, 2-4 модуль
Охват аудитории:
для всех кампусов НИУ ВШЭ
Преподаватели:
Афанасьев Виталий Олегович
Язык:
русский
Кредиты:
6
Контактные часы:
72
Программа дисциплины
Аннотация
Цель курса – помочь освоить базовые принципы, понятия и навыки программирования, познакомить слушателей курса с языком программирования Java. Лекционный материал включает в себя демонстрацию синтаксиса языка Java, обзор ключевых особенностей языка и описание основных компонент языка Java. Семинарские занятия посвящены демонстрации решений часто встречающих задач с помощью Java и взаимодействию с аудиторией. Большое внимание уделяется практическим заданиям и самостоятельной работе студентов.
Цель освоения дисциплины
- Знание базовых понятий программирования, на которых зиждется решение любой практической задачи
- Понимание основного синтаксиса Java, широко востребованного в индустрии кросплатформенного языка программирования.
- Умение использовать язык программирования Java для решения практических задач.
- Умение придумывать решение часто встречающихся практических задач в процедурном, объектно ориентированном и функциональном стилях.
Планируемые результаты обучения
- Понимает и применяет основные принципы ООП: инкапсуляция, наследование, полиморфизм
- Использует Stream API в Java
- Отличает такие понятия как "интерфейс" и "абстрактный класс"
- Называет виды отношений между классами: композиция, агрегация, наследование
- Отличает друг от друга и применяет статический и динамический полиморфизм
- Отличает такие понятия как "инкапсуляция" и "сокрытие"
- Объясняет каждый из пяти принципов проектирования SOLID
- Определяет понятия "класса" и "'экземпляра"
- Описывает отличия модификаторов доступа в Java: public, private, protected
- Определяет понятие "пакета" в Java
- Определяет понятие "модуля" в Java
- Структурирует программные проекты на Java по модулям и пакетам
- Отличает модификатор доступа package-private в Java от остальных
- Аргументирует важность принципа "Low Coupling, High Cohesion"
- Отличает статическую и динамическую типизацию
- Отличает понятия компиляции и интерпретации
- Определяет термины JVM, JRE, JDK
- Определяет понятие "сборки мусора"
- Описывает и использует примитивные типы данных в Java: byte, short, int, long, char, boolean, float, double
- Применяет базовые арифметические, битовые и логические операции языка Java
- Определяет случаи явного и неявного приведения типов в Java
- Использует условные операторы и циклы
- Определяет понятие области видимости
- Использует строковый тип String в Java
- Использует массивы
- Определяет понятие ссылочных типов данных, стека и кучи в JVM
- Аргументирует полезность и опасность значения null
- Определяет понятие метода/функции/процедуры/подпрограммы
- Определяет и отличает способы передачи параметров в методы
- Определяет понятие сигнатуры
- Определяет понятие рекурсии
- Декомпозирует программные проекты на методы
- Определяет и применяет конструкторы классов
- Определяет понятие перегрузки методов
- Использует статические и нестатические члены классов и интерфейсов
- Использует библиотеку JUnit для модульного тестирования Java-проектов
- Использует assertions в Java
- Использует исключения в программах на Java
- Аргументирует важность тестирования программных проектов
- Использует параметрический полиморфизм
- Различает такие свойства типов как ковариантность, контравариантность, инвариантность
- Использует wildcards в Java
- Использует принцип PECS при использовании обобщённых типов
- Использует Collection API в Java
- Использует анонимные классы и лямбда-выражения в Java
- Использует функциональные интерфейсы стандартной библиотеки языка Java
- Сравнивает объектно-ориентированную и функциональную парадигмы
- Использует стандартную библиотеку языка Java для работы с файловой системой
- Использует Reflection API языка Java
- Применяет аннотации стандартной библиотеки языка Java и разрабатывает свои
Содержание учебной дисциплины
- Организация проектов
- Stream API
- Основы объектно-ориентированного программирования в Java
- Основы процедурного программирования в Java
- Обработка ошибок и тестирование
- Обобщения
- Основы функционального программирования в Java
- Работа с файловой системой в Java
- Reflection API
Элементы контроля
- Домашнее задание №1Мини-проект на Java, затрагивающий тему процедурного программирования. Срок выполнения от 2 до 4 недель. Описание и критерии оценивания публикуются в SmartLMS.
- Домашнее задание №2Мини-проект на Java, затрагивающий тему объектно-ориентированного программирования. Срок выполнения от 2 до 4 недель. Описание и критерии оценивания публикуются в SmartLMS.
- Домашнее задание №3Мини-проект на Java, затрагивающий темы объектно-ориентированного и функционального программирования. Срок выполнения от 2 до 4 недель. Описание и критерии оценивания публикуются в SmartLMS.
- Экзаменационный тест (4-й модуль)
- Семинарская активность
- Экзаменационный тест (3-й модуль)
- Контесты (3-й модуль)
- Контесты (3-й и 4-й модули)
Промежуточная аттестация
- 2025/2026 3rd module0.25 * Домашнее задание №1 + 0.25 * Контесты (3-й модуль) + 0.5 * Экзаменационный тест (3-й модуль)
- 2025/2026 4th module0.15 * Домашнее задание №1 + 0.15 * Домашнее задание №2 + 0.15 * Домашнее задание №3 + 0.15 * Контесты (3-й и 4-й модули) + 0.1 * Семинарская активность + 0.3 * Экзаменационный тест (4-й модуль)