• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 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 module
    0.25 * Домашнее задание №1 + 0.25 * Контесты (3-й модуль) + 0.5 * Экзаменационный тест (3-й модуль)
  • 2025/2026 4th module
    0.15 * Домашнее задание №1 + 0.15 * Домашнее задание №2 + 0.15 * Домашнее задание №3 + 0.15 * Контесты (3-й и 4-й модули) + 0.1 * Семинарская активность + 0.3 * Экзаменационный тест (4-й модуль)
Список литературы

Список литературы

Рекомендуемая основная литература

  • Java. Библиотека профессионала. Т.1: Основы, Хорстманн, К. С., 2019

Рекомендуемая дополнительная литература

  • Java : руководство для начинающих, Шилдт, Г., 2023
  • Философия Java, Эккель, Б., 2015

Авторы

  • Афанасьев Виталий Олегович