Современные управляемые языки программирования

Адрианов Н.М., Иванов А.Б.

В осеннем семестре 2022 г. занятия по спецкурсу начнутся 17 сентября.

Когда: суббота, 16:45

Где: 802 2УК

Канал в telegram для организационных вопросов: https://t.me/+4_rmZcjFj8YzZjAy

Программа

Литература


В курсе изучаются языки программирования Java и C# и основы объектно-ориентированного программирования в применении к реализации эффективных алгоритмов и структур данных.


Программа
  1. История Java и .NET. Коцепция управляемых языков программирования
  2. Виртуальная машина. JIT-компиляция
  3. Основные типы данных и операторы
  4. Пространства имен
  5. Реализация ввода-вывода
  6. Объектно ориентированная модель. Классы, объекты, методы, свойства
  7. Наследование
  8. Ссылочные типы и типы-значения
  9. Строки, Unicode и кодировки
  10. Шаблоны и методы обобщенного программирования
  11. Исключения
  12. Понятие интерфейса и реализации. Компараторы
  13. Реализация классических абстрактных структур данных. Итераторы
  14. Лямбда-выражения
  15. Создание графических интерфейсов
  16. Поведенческие шаблоны проектирования
  17. Методики измерения скорости работы программы и расхода памяти
Литература
  • Г. Шилдт «Java 8. Полное руководство», Вильямс, 2015
  • Б. Эккель «Философия Java», Питер, 2014
  • Дж. Рихтер «CLR via C#», Питер, 2013
  • Дж. Скит «C#. Программирование для профессионалов», Вильямс, 2014
  • Дж. Блох «Java. Эффективное программирование», Вильямс, 2018
Веб-ресурсы
Материалы лекций
  • oop-1.pdf Введение в управляемые языки. История, виртуальная машина, JIT-компилятор, среда разработки, программа Hello, world.
  • oop-2.pdf Статические методы и поля. Наследование и переопределение методов. C#: свойства и структуры (value types).
  • oop-3.pdf Обобщенные типы данных (generics). Цикл foreach и итератор.
Проекты на языке C#
  • algocs_hello.zip Ввод-вывод данных, сортировка массива
  • algocs_comparable.zip Класс Person (конструктор, поля, методы и свойства), переопределение метода ToString, реализация интерфейсов IComparable<Person>, IComparer<Person>.
  • algocs_structs.zip Ссылочные типы (reference types) и типы-значения (value types). Классы и структуры.
  • algocs_stack.zip Реализация стека на основе массива. Обобщенные типы (generics). Реализация IEnumerable.
  • algocs_hash.zip Реализация GetHashCode и Equals в пользовательском классе для хранения объектов в хеш-таблице.
  • algocs_paint.zip Приложение с графическим интерфейсом (WinForms).
  • algocs_reflection.zip Типы данных в runtime и reflection.
Проекты на языке Java
  • algojava_first.zip Первая программа: метод main, пакеты, использование класса Scanner
  • algojava_hello.zip Ввод-вывод данных, сортировка массива
  • algojava_comparable.zip Класс Person (конструктор, поля, методы и свойства), переопределение метода toString, реализация интерфейсов Comparable<Person>, Comparator<Person>.
  • algojava_stack.zip Реализация стека на основе массива. Обобщенные типы (generics). Реализация Iterable.
  • algojava_hash.zip Как сравнивать строки. Реализация hashCode и equals в пользовательском классе для хранения объектов в хеш-таблице.
  • algojava_paint.zip Приложение с графическим интерфейсом (Swing).

trades.zip Задание на использование LINQ / Stream API

Тезисы лекций