Course logo

Курс «Технологии программирования (Java)» (2020/2021 год, весна)

Даты устных собеседований по теории:

  • Устные собеседования назначаются по запросу (написать письмо лектору, если сделано 2 практических задания из трёх)
  • Основные собеседования пройдут на экзаменах

Информация о курсе

Занятия в рамках цикла "Программирование" (2-й семестр).
Преподаватели:
Глухих М.И.
Ахин М.Х.
Абдуллин А.М.
Егорова И.
Петров М.А.
Соболь В.
Степанов Д.С.
Слушатели:
Студенты, обучающиеся по направлению бакалавриата "Информатика и вычислительная техника"

Основные задачи курса

Курс предоставляет базовые знания по программированию на языке Java, объектно-ориентированном программировании и GUI-программировании и является продолжением курса Алгоритмизация и программирование.

Отчетность

  • оценка по итогам упражнений (практика, ставится оценка за курсовой проект, подробности ниже)
  • экзамен по теории (проходит в форме устного собеседования, вопросы внизу страницы, ставится оценка)

Основная литература

  • Хорстманн К., Корнелл Г. Java2. Библиотека профессионала. Том1. Основы. Том2. Тонкости программирования / Пер. с англ.-М.: Вильямс, 2010.
  • Монахов В. Язык программирования Java и среда NetBeans.- СПб.: БХВ-Петербург, 2011.

Дополнительная литература

  • Ноутон П., Шилдт Г. Java 2: наиболее полное руководство / Пер. с англ.- СПб.: БХВ-Петербург, 2008.
  • Хабибуллин И. Java 7.- СПб.: БХВ-Петербург, 2012.
  • Эккель Б. Философия Java / Пер. с англ.- СПб.: Питер, 2011.
  • Пышкин Е.В. Основные концепции и механизмы объектно-ориентированного программирования. Учеб. пособие.- СПб.:«БХВ-Петербург», 2005.
  • Арнольд К., Гослинг Дж., Холмс Д. Язык программирования Java, 3-е издание. М.: Издательский дом «Вильямс», 2001.
  • James Gosling, Bill Joy, Guy Steele, Gilad Bracha. The Java Language Specification, Second Edition.
  • Joshua Bloch. Effective Java: Programming Language Guide, third edition. ISBN: 9780134686097, 2017.

Электронные ресурсы

JRE / JDK

Среды разработки (IDE)

Онлайн-курсы

Документация

Интересные задачи

Ссылки:

УПРАЖНЕНИЯ И КУРСОВОЙ ПРОЕКТ

Внимание: варианты заданий раздают преподаватели практики!

Все задания по умолчанию сдаются в виде репозитория на GitHub с собирающимся проектом и проходящими тестами. Наличие тестов и соблюдение JavaCodeStyle обязательно.

Формальный отчёт оформляется только по третьему заданию (курсовой проект). Состав отчёта: титульный лист, раздел "Задание" с текстом задания (в тексте должна быть однозначно указана требуемая функциональность, обсудите это с преподавателем), раздел "Описание программы" с кратким описанием имеющимся в программе классов (несколько абзацев), раздел "Испытания программы" про автоматизированные тесты, которые вы сделали (их наличие обязательно!) и дополнительные ручные проверки, которые вы делали в GUI. При наличии содержательных выводов добавляется раздел "Заключение". В последнем разделе "Список использованных источников" привести, как минимум, ссылку на ваш GitHub-репозиторий.

  1. Проектирование класса. Либо одно задание на Java (с нуля), либо два задания на Kotlin из проекта KotlinAsFirst: одно по выбору из урока 11, другое из урока 12. Задания UnsignedBigInteger и FixedPointNumber из урока 11 могут быть приняты за два. Задания на Kotlin из KotlinAsFirst, в отличие от всех прочих (пп. 2, 3), сдаются через систему Kotoed.
  2. Проектирование консольного приложения. Задание выполняется на Java или Kotlin по выбору студента.
  3. Проектирование GUI-приложения (курсовой проект). Задание выполняется на Java или Kotlin по выбору студента.

Дедлайны:

  1. 28 февраля для групп 1-3 и 7 марта для групп 4-6 -- первое задание.
  2. 28 марта для групп 1-3 и 4 апреля для групп 4-6 -- второе задание.

За каждую неделю просрочки дедлайна по неуважительной причине ставится штраф -0.5 балла к оценке за конкретное задание.

Финальная оценка за курсовой проект формируется с учётом всех трёх оценок за выполненные задания. Точный порядок формирования финальной оценки определяет преподаватель практики.

Важно: студент, получивший финальную оценку "4" или "5" до начала сессии (в этом году предложение действует до 21 мая включительно), получает бонус в виде +1 балла к экзаменационной оценке. Бонус действует на основной экзамен и все переэкзаменовки. Бонусный балл не прибавляется к оценке "2" (двойка остаётся двойкой). Вместе с тем он позволяет превратить "3" в "4", а "4" в "5".

ПРЕЗЕНТАЦИИ ЛЕКЦИЙ

Доп. лекции (2018/2019 год) по GUI:

ВОПРОСЫ К ЭКЗАМЕНУ

Экзамен проходит в виде устной беседы преподавателя со студентом на предмет понимания вопросов, рассмотренных в курсе. Беседа имитирует собеседование при приёме на работу. Экзаменатор выбирает вопросы по своему усмотрению, студент отвечает в меру своего знания и понимания. Время на размышление предоставляется, но не слишком много (вся беседа в норме занимает 20-30 минут). Экзаменатор может просить студента написать небольшие кусочки кода на бумаге для оценки степени знания синтаксиса языка (знание синтаксиса является обязательным для получения положительной оценки).

NB: при досрочной сдаче затрагиваются только те вопросы, которые уже были рассмотрены на лекциях минимум за неделю до сдачи (но не менее первых пятнадцати).

Ранжировка вопросов 3/4/5

  1. Типы в Java: примитивные / ссылочные, обёртки примитивных типов, массивы, null
  2. Класс Object: equals / hashCode / toString
  3. Видимость в языке Java: public / protected / private / package private
  4. Сравнение классов, абстрактных классов и интерфейсов
  5. Статические и не-статические члены класса
  6. Финальные и не-финальные члены класса
  7. SAM-интерфейсы и лямбды в Java
  8. Исключения: контролируемые и нет, Throwable / Exception / RuntimeException / Error
  9. Перечисления, поля и методы перечислений
  10. Итераторы и их применение
  11. Разновидности коллекций: Collection / List / Set / Deque
  12. Реализации коллекций: List / ArrayList / LinkedList
  13. Реализации коллекций: Set / HashSet / TreeSet / EnumSet
  14. Реализации коллекций: Map / HashMap / TreeMap / EnumMap
  15. Реализации коллекций: Queue / Deque / ArrayDeque / LinkedList
  16. Шаблонные типы, сырые типы, wildcard типы
  17. GUI: общая организация приложения
  18. GUI: model-view-controller
  19. GUI: механизмы и методы отрисовки
  20. GUI: обработка событий, механизм слушателей
  21. GUI: контейнеры и менеджеры размещения
  22. JVM: вычисление выражений
  23. JVM: виды вложенных классов
  24. JVM: ветвления
  25. JVM: вызовы методов
  26. JVM: массивы
  27. Runnable и Thread
  28. synchronized и volatile
  29. Object: wait / notify / notifyAll
  30. Коллекции и Concurrency

Архив за предыдущие годы

  • лекции за весну 2019-20 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за весну 2018-19 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за весну 2017-18 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за весну 2016-17 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за осень 2016-17 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за год 2015-16 (автор Глухих М.И.) можно посмотреть здесь
  • лекции за год 2014-15 (авторы Пышкин Е.В., Кузнецов А.Н.) можно посмотреть здесь
  • лекции за год 2012-13 (авторы Глухих М.И., Кузнецов А.Н.) можно посмотреть здесь
  • лекции за год 2011 (автор Пышкин Е.В.) можно посмотреть здесь
  • лекции за год 2009 (автор Глухих М.И.) можно посмотреть здесь