• Введение. Обзор и задачи курса. Подготовка к курсу. История изменений языка Java от версии к версии. Настройка окружения: система контроля версий git, система контроля зависимостей maven, среда разработки Intellij IDEA. Сборка и запуск java приложений.
    ДЗ 01: Создать проект под управлением maven, настроить сборку проекта из командной строки командой mvn install. Выложить проект на github. Создать ветку "obfuscation" изменить в ней pom.xml так чтобы сборка содержала стадию обфускации байткода.
  • Байт код. Содержание .class. Декомпиляция. Обфускация. Разбор ДЗ 01.
  • Углубленные основы. Загрузка классов. Виды и задачи class loader-ов. Класс Class Примитивные типы, строки, массивы. Память, которую занимают объекты.
    ДЗ 02: Написать стенд для определения размера объекта. Определить размер пустой строки и пустых контейнеров. Определить рост размера контейнера от количества элементов в нем.
  • Hot swap. Remote debug. Сборщик мусора. Instrumentation. Разбор примеров и ДЗ 02.
  • Generics. Контейнеры и алгоритмы. Обзор устройства и работы контейнеров из java.util. Сравнение контейнеров. Карты на основе хэш функции и на основе дерева. Разбор алгоритмов из java.util.Collections.
    ДЗ 03: Написать свою реализацию ArrayList на основе массива. Проверить, что на ней работают методы java.util.Collections
  • Инструменты для преобразования контейнеров. Apache Commons. Google Guava. Разбор примеров и ДЗ 03.
  • Параметры запуска VM. Сборщик мусора. Виды сборок. Разделение памяти под разные поколения объектов. Виды сборщиков. JMX. Управление приложением из jconsole. OutOfMemory. dump памяти. Исседование thread dump и heap dump.
    ДЗ 04: Написать приложение которое "подтекает" по памяти. Логгировать активность GC (количетство сборок в минуту, время паузы в минуту). Написать скрипт, который проведет измерение активности GC для разных параметров GC.
  • QA, тестирование. Виды тестов. "Заглушки". Testing frameworks: junit, mockito. Разбор примеров и ДЗ 04.
  • Аннотации. Стандартные аннотации. Применение аннотаций. Типы аннотаций. Синтаксис. Создание своих аннтатаций. Reflection.
    ДЗ 5: Написать свой тестовый фреймворк. Поддержать аннотации @Test, @Before, @After. Запускать вызовом статического метода с (1) массивом классов с тестами, (2) именем package в котором надо найти и запустить тесты.
  • Annotation preprocessor, Class loading / Instrumentation, ASM и Javassist. Разбор примеров и ДЗ 05.
  • Понятие дизайна приложения и паттерна проектирования. «Примитивные» паттерны. Концепты проектирования ООП: delegation, aggregation, coupling and cohesion, inheritance, interface, polymorphism. Behavioral patterns.
    ДЗ 06: На основе рассмотренных паттернов написать приложение, в котором классы являются в одно и то же время классами нескольких паттернов.
  • Разбор примеров и ДЗ 06.
  • Structural patterns, Creational patterns. Связь между паттернами, "похожие" паттерны. Антипаттерны.
    ДЗ 07: Подключить к работе предыдущего задания еще два паттерна.
  • Разбор примеров и ДЗ 07.
  • IO и NIO. Сериализация. Запись и чтение бинарных файлов. Работа с XML. Стандартная библиотека для работа с JSON и com.google.code.gson. ДЗ 08: Написать свой сериализатор/десериализатор JSON документов.
  • Разбор примеров и ДЗ 08.
  • Работа с реляционной базой. JDBC. ORM через паттерн Executor. Inmemory базы. iBatis.
    ДЗ 09: Написать свою ORM систему с автоматической сборкой объекта при помощи Reflection.
  • Разбор примеров и ДЗ 09.
  • Нереляционные базы. Системы кэширования. Работа с MongoDB и Ehcache.
    ДЗ 10: Написать конвертор SQL запросов к noSQL базе.
  • Разбор примеров и ДЗ 10.
  • Dependency injections frameworks. Spring. Конфигурирование приложения в XML. Log4j.
    ДЗ 11: Собрать war для внешнего сервера Jetty. Запустить веб сервер на Jetty и Spring c логированием работы через Log4j.
  • Разбор примеров и ДЗ 11.
  • Встроенный веб сервер. Сервлеты: servlet API, жизненный цикл сервлета. Jetty: устройство, работа, подключение сервлетов. Websockets.
    ДЗ 12: Встроить веб сервер на Jetty в приложение.
  • Разбор примеров из ДЗ 12
  • JPA. Hibernate. Hibernate query language. Конфигурирование Hibernate в коде и в XML.
    ДЗ 13: Разметить для записи в базу класс, который содержит Map<Integer, List<String>>
  • Разбор примеров и ДЗ 13.
  • Многопоточность. Создание многопоточного приложения. JMM. Поддержка многопоточности в стандартной библиотеке.
    ДЗ 14: Написать приложение, которое сортирует массив в 4 потоках с использованием библиотеки и без нее.
  • Разбор примеров и ДЗ 14.
  • Проблема многопоточного доступа. Синхронизация. Потокобезопасные контейнеры.
  • Примеры паттернов многопоточного проектирования.
    ДЗ 15: переписать ДЗ 14.
  • Разбор примеров и ДЗ 15.
  • Многопроцессные приложения. Сокеты. RMI. NIO для сокетов. Netty.
    ДЗ 16: написать сортировку массива в 4 процесса.
  • Разбор примера многопроцессного приложения. Разбор ДЗ 16.
  • веб сервер без веб фреймворков
  • создание своих аннотаций @NotNull, @NotEmpty
  • ORM на JDBC
  • Система кэширования
  • Свой проект
Регистрация
Хотите узнать о курсе больше? Приходите на День открытых дверей

Старт занятий новой группы: 2017-06-03
На курсе изучаются особенности языка и платформы Java, её библиотека, подходы к проектированию приложений и реализации модулей для работы с базами, файлами, веб фронтендом и другими приложениями.

Необходимое время: 4 академических часа на занятия и 4 академических часа на домашнюю работу в неделю.
Преподаватель
Виталий Чибриков – старший программист JetBrains. Специалист по разработке серверных приложений на Java. Автор курсов по программированию на Java в Intuit.ru, Технопарк Mail.Ru и Stepic.org.

12 лет опыт программирования на Java, C++, C#, JavaScript, PHP, Python, Shell. Участие в проектах всех уровней сложности от стартапов на 3 человека/пол года до бизнес приложений на 200 человек/4 года. 8 лет разработки серверов клиентских игр на Java, в том числе серверов игр «Allods Online» и «Skyforge». Разработчик облачных приложений. Эксперт в автоматизации процессов разработки и тестирования.

Преподаватель Harbour.Space University, Barcelona

Закончил МФТИ по специальности инженер-математик в 2004-ом году.

Лекции в Технопарк Mail.Ru
LinkedIn
Github
Стоимость обучения
Помесячно -
9 5005
За весь курс -
45 0005
Регистрация
  • Advanced basics. Unicode. Floating point numbers.
    Itertools, functional programming, recursion, lambda, closures. Decorators.
  • HW1: Advanced Python Exercises.
  • Internals. CPython, source structure, basic types implementation. Memory model, allocation, reference counting, garbage collection. GIL.
    Algorithms, Python time complexity, classic algorithms, graph algorithms.
  • HW2: Adding new statement to Python language.
  • OOP. Object model. Descriptors. Magic methods. ABC. Metaprogramming.
  • HW3: Design Patterns.
  • Automatization. Databases, networking, daemons.
    Deployment. Setup tools, distribution. packaging, containers.
  • HW4: Asynchronous HTTP server.
  • WSGI. Fast CGI, uWSGI, Gunicorn.
    Django. MVC\MTV, environment setup.
  • HW5: uWSGI microservice daemon.
  • ORM. CRUD, Query sets, Object managers, Transactions, Migrations.
    SQLAlchemy. Schema, Types, CRUD, Exceptions, Transactions.
  • HW6: Django App I
  • Views, Function/Class based views. Forms, validation. Pagination.
    Templates. Filters, tags, Jinja2.
  • HW7: Django App II
  • Middleware. Django Admin.
    Testing. Unit tests, CI.
  • HW8: Django App III
  • REST API. Architecture, frameworks, rate limiting, documentation.
    Queues, Celery.
    Twisted. Tornado. Flask.
  • HW9: Django App IV
  • IPython.
    SciPy, NumPy. Basics, arrays, linear algebra, advanced usage.
  • HW10: Logistic Regression.
  • Pandas. Basics, data loading and storage, data wrangling, aggregation, time series.
  • HW11: Open data analysis.
  • Visualization. matplotlib, seaborn, pandas, d3.js, Apache Zeppelin.
    Python and Hadoop. Hadoop basics, streaming, ETL.
  • HW12: MapReduce task with visualization.
  • Profiling. Linux tools, CPU, Memory, Tracing.
    Concurrency, Parallelism. Multithreading, multiprocessing, gevent.
  • HW13: Concurrent file processing.
  • C extensions, C API, ctypes, cffi.
    Cython, Pypy.
  • HW14: Protobuf (un)packer extension.
  • Clustering. Parallel Python, IPython Parallel, Queues.
    Memory optimization. RAM usage, probabilistic data structures.
    Golang.
  • HW15: Concurrent file processing in Go.
  • Python 3. Overview, migration, features.
  • HW16: Python 3 Exercises.
  • Monitoring system
  • Flask REST API
  • Django Web App
  • Data pipeline
  • Custom project
Регистрация
Python является языком общего назначения и чаще всего применяется в разработке инфраструктурных решений, веб-приложений, систем контроля качества и аналитических систем. Исходя из этой предпосылки, курс нацелен на получение специализированных знаний связанных с различными областями применения языка.

Необходимое время: 4 академических часа на занятия и 4 академических часа на домашнюю работу в неделю.
Преподаватель
Ступников Станислав - программист рекламной системы в Mail.Ru. 6 лет опыта промышленной разработки, в том числе создания и поддержания веб-приложений, инфраструктурных решений, высоконагруженных систем, data pipeline'ов и аналитических систем. 3 года научной разработки для крупных государственных заказчиков с контрактами по тематике анализа больших объемов данных. Опыт программирования на Python, Go, Lua, C, JavaScript, Perl. Широкий круг профессиональных интересов, начиная от построения распределенных систем, заканчивая машинным обучением. Более 5 лет преподавания программирования на Python студентам МГТУ им. Н.Э. Баумана. 4 года преподавания курса СУБД в Технопарк Mail.Ru. Закончил МГТУ им. Н.Э. Баумана по специальности "Специалист по защите информации" в 2013 году.
Регистрация
 Дата начала занятий еще не задана

Мы можем уведомить вас о следующем наборе группы.

Подписаться на уведомление

 Дата начала занятий еще не задана

Мы можем уведомить вас о следующем наборе группы.

Подписаться на уведомление

 Дата начала занятий еще не задана

Мы можем уведомить вас о следующем наборе группы.

Подписаться на уведомление

Все курсы подготовлены для разработчиков, имеющих опыт работы
Только практические знания и технологии
Обучение длится 5 месяцев
Два занятия
в неделю