Java курсы в Харькове: Beginner, Core, Junior

Добрый день.
Меня зовут Головач Иван, я собственник, руководитель и преподаватель харьковских курсов программирования Kharkov IT Courses.
В данные момент (май 2013) у нас открыто для набора несколько групп: Java for Beginner, Java Core, Enterprise Java Junior developer.
.
Курсы специализируются исключительно на преподавании Java. Это позволяет построить «вертикальный стек»: есть 3 уровня сложности — с «нуля» (Java for Beginner), для тех, у кого есть определенный опыт (Java Core), для тех кто знает язык и готов стать профессиональным программистом (Enterprise Junior Java Developer).
Все курсы длятся 3 месяца и состоят из:
1. 24 лекции, по 2 лекции в неделю.
2. Лабораторные/самостоятельные работы с проверкой преподавателем.
3. Тестовая система на 500-700 вопросов (пока нет у Junior).
.
Java for Beginner
Ближайшая группа стартует 15 июня.
Преподаватель — кандидат технических наук, преподаватель Java в ХПИ и ХИРЭ.
Стоимость при оплате сразу — 475$, при оплате помесячно — 3 * 200$.
.
Java Core
В данный момент еще открыт набор в недавно стартовавшую группу. Прошло всего 4 занятия из 24:
— Лекция #1
— Лекция #2
— Лекция #3
— Лекция #4
Преподаватель — я, профессиональный Enterprise Java программист уровня Java Tech Lead.
Стоимость при оплате сразу — 475$, при оплате помесячно — 3 * 200$.
.
Enterprise Junior Java Developer
В курс входит:
1. Test Driven Development (TDD):
....JUnit
....Hamcrest
....Mockito
2. HTTP 1.1
3. Servlet API, JSP, pattern MVC
4. JDBC API, pattern DAO
5. Maven,
6. Log4j
Ближайшая группа стартует 25 мая.
Преподаватель — я, профессиональный Enterprise Java программист уровня Java Tech Lead.
Стоимость при оплате сразу — 575$, при оплате помесячно — 3 * 225$.
.
Особенность курсов:
0. По окончанию курса проводится финальное тестирование. По его результатам (в последней группе успешно прошли 10 из 20 человек) слушателей рекомендуют на собеседования в IT-компании Харькова.
1. Крайне интенсивная подготовка, мы стараемся дать максимум полезного материала. Глубоко объясняем детали.
2. Стараемся обеспечить максимум обратной связи по материалу. В данный момент это — лабораторные по всему материалу + тестовая система по всему материалу.
3. По результатам финального тестирования рекомендуем слушателей в IT-компании Харькова.
4. У нас 2 лекции любого курса — бесплатны. Единственно — свяжитесь с нами заранее, что бы хватило мест в аудитории. Занятия происходят вечером в 19.00 по адресу пер.Театральный 11/13, аудитория 301.
5. Все лекции с задержкой в 24 часа доступны в записи.
6. Вы можете посмотреть примеры наших лекций на нашем youtube-канале.

.
На любые вопросы могу ответить тут, или в личку, или по контактам:
skype: KharkovITCourses
e-mail: KharkovITCourses@gmail.com
phone: 063-048-7663

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

скажите, а можно будет пройти мини собеседование или тест какой-то, чтобы понять стоит ли мне идти на Core или я потяну сразу курс Junior?

Приношу свои извинения, за медленный ответ.
1. Свяжитесь с нами по skype: KharkovITCourses и я проведу мини собеседование.
2. Или приходите послушать пару лекций по Java Core и решите сами. Ближайшие:
— Пн 17 июня 19.00 — Java I/O: File System + Charset (Writer -> OutputStream)
— Ср 19 июня 19.00 — Java OOP: принципы ООП: полиморфизм, инкапсуляция, наследование, абстракция
— Чт 20 июня 19.00 — Java Многопоточность (введение): Process, Thread, Runnable, start(), run(), join(), ...
3. Или посмотрите любую из лекций на Youtube/KharkovITCourses например:
Лекция #3 по ООП (абстрактные классы/интерфейсы/классы в первой половине + виртуальные методы, начиная с середины четвертой части).

Или вот пара примеров того, в чем вы разберетесь в Java Core и что необходимо для Java Junior:

При вызове данного кода:

abstract class Parent {
String first() {
return second();
}
abstract String second();
String third() {
return "Parent";
}
}
class Child extends Parent {
String second() {
return third();
}
String third() {
return "Child";
}
}
class Test {
public static void main(String[] args) {
System.out.println(new Child().first());
}
}
будет выведено:
- Parent
- Child
- compile error
- runtime exception
?

Для
InputStream in = ...
эти вызовы
int x = in.read();
int y = in.read();
int z = in.read();
и эти вызовы
byte[] buff = new byte[3];
int с = in.read(buff);
эквивалентны?
- да
- нет, первый может прочитать меньше трех байт
- нет, второй может прочитать меньше трех байт
?

Корректная ли это реализация алгоритма инвертирования массива?
public class App {
public static void invert(int[] arr) {
for (int k = 0; k <= arr.length / 2; k++) {
int tmp = arr[k];
arr[k] = arr[arr.length - k - 1];
arr[arr.length - k - 1] = tmp;
}
}
}

3. Servlet API, JSP, pattern MVC
А это все не уcтарело еще? В смысле на фоне легковесных RoR, Django и неблокирующих/асинхронных сокетов для COMET/WebSocket/...?

Из того, что я понимаю есть три перспективных HTTP-сервера в Java:
1. Servlet API (Tomcat, Jetty, ...)
2. Netty
3. Play Framework

1. Servlet API (Tomcat, Jetty, ...)
Невероятно стабильная, популярна, многословная и отстающая в развитии платформа/спецификация. В ней нет поддержки для асинхронных вещей (COMET), нет поддержки для WebSockets, но есть огромное количество view-frameworks, которые основаны именно на ней: JSF, GWT, Spring MVC, Struts 2, Wicket, ...
При чем ряд view-framework допускают «достройку еще одного этажа», в смысле, позволяют разрабатывать основанные на них библиотеки компонентов. Пример: RichFaces — библиотека компонент для JSF, которая крутится под servlet container.
. Servlet API (Tomcat, Jetty, ...)
Невероятно стабильная, популярна, многословная и отстающая в развитии платформа/спецификация. В ней нет поддержки для асинхронных вещей
Двойка, читать про asynchronous servlets в servlet api 3.0
асинхронных вещей (COMET)
двойка, асинхронность ортогональна COMET-у
Двойка, читать про asynchronous servlets в servlet api 3.0
Насколько я понял спецификацию 3.0, все что мы можем — это на время выполнения внутренних работ (база, удаленные вызовы) отпустить поток servlet-контейнера.
Однако глянут спецификацию 3.1 и, для меня это оказался сюрпризом, они добавляют реальные неблокирующий ввод/вывод на клиента:
— 3.7 Non Blocking IO: “Non-blocking request processing in the Web Container helps improve the ever increasing demand for improved Web Container scalability, increase the number of connections that can simultaneously be handled by the Web Container. Nonblocking IO in the Servlet container allows developers to read data as it becomes available or write data when possible to do so.”
ServletInputStream.setReadListener(...)
— 5.3 Non Blocking IO: “To support non-blocking writes in the Servlet container ...”
— “Non-blocking IO in Servlet 3.1 By Example”
— И Protocol Upgrade добавят в servlet 3.1 “Protocol Upgrade in Servlet 3.1 By Example”
Согласен, тут беру свои слова обратно. Начиная с версии 3.1 будет практически все, что необходимо для написания полноценных event-driven архетектур.
2. Netty
Это универсальный framework для работы с TCP/UDP в блокирующем (Java 1.0+), неблокирующем (Java 1.5+) и и асинхронном режиме (Java 1.7+). Имеет гибкий настраиваемый механизм для работы с различными протоколами (http, WebSocket, smtp, ftp, ...) - основное оружие явиста для работы с большим количеством медленных соединений.
2. Netty
3. Play Framework
двойка, плей юзает нетти внутри.

Да, Play внутри использует Netty.
Но когда мы разрабатываем приложение _под_ HTTP-движек, нам важно какое API он предоставляет.
API и абстракции у Netty и у Play серьезно отличаются, и сквозь Play нельзя получить доступ к «сырому» Netty.

GWT тоже не предоставляет доступ к Servlet API, но ты же не будешь утверждать что это разные контейнеры?

Это настолько разные уровни, что «писать под GWT» и «писать под голый Servlet API» — это разные вещи.

Помоему плей отлично попадает на уровен GWT а netty на уровень сервлетов, не находишь?

А если бы ты составлял список «перспективных HTTP-движков» на Java, что бы ты туда внес?
Перспективный, в смысле есть смысл учить при старте карьеры и проживет еще хотя бы 5 лет.

Сервлетс + spring думаю проживет, все остальное слишком быстро меняется в плане популярности

Возможно я добавил Play в список просто как попытку сделать что-то аналогичное RoR, но, конечно, темпы его мутации (1.x -> 2.x), переход от java style -> scala style и отсутствие мощного комьюнити сведут его в гроб.

Однако в Netty верю, мне кажется, на сегодня (и уже года 3) это стандарт де факто работы с неблокирующими сокетами в java. Ну хз, может servlet 3.1 пошатнет его позиции.

ИМХО область применения неблокирующих сокетов крайне ограничена какими то интерактивными апликухами, в обычном вебдеве они не нужны.

Пожалуй, плюс системщина типа http-proxy, socks5-proxy.
Может Netty лично на меня производит какое-то магическое впечатление: в отличии от Tomcat — капот открыт, все внутренности видно.

А по какой причине изучается Mockito, а не EasyMock?

В Java есть определенная трудность в выборе mock-библиотеки: Mockito, EasyMock, JMock, JMockit, PowerMock, ...
Обычно этот выбор осуществляется на основе решения команды/тимлида, так как по основным характеристикам библиотеки схожи.
Наиболее популярны — EasyMock и Mockito.
Выбор осуществлен частично субъективно (есть опыт), а частично на основе «фишек» которые понравились:
1. В случае нарушения спецификации Mockito генерирует расширенное описание несоответствия. Пример.
2. Есть отличный источник примеров (28 штук) — javadoc на org.mockito.Mockito. Кстати, забавный пример, как javadoc выступает в виде небольшой книжицы:)
.
Но если у Вас есть факты в защиту чести EasyMock — с удовольствием обсужу:)

Powermock вообще сила, можно статик методы мокать.

Ну, как я понял, он и создавался как попытка «дорешать недорешенные проблемы» других библиотек.
Однако иметь статические методы, которые требуется «мокать» — крайне странный дизайн. Обычно вовсю борются за IoC/DI, что приводит к ярко выраженной форме:
+ interface XYZService
+ class XYZServiceImpl implements XYZService
Ссылаемся на метод XYZService.service(), а используем XYZServiceImpl.service(). А тут прямо логика в статическом методе.
Может я не прав, конечно.
Но не встречался с ситуацией, когда необходимо мокать статический метод.

Как-то сразу и не подумал.
Сто лет как не сталкивался с legacy-системами, писал все с нуля, уже и подзабыл какой это ужас:)
Как же они интересно перегружают статики? Надо идти копать.

Расследование показало (PowerMock + JMockit):
1. Статические методы классов, загружаемых системным class loader (rt.jar: System, Thread, Integer, String, ...) напрямую “мокать” не могут, но выкручиваются следующим образом: переопределяют методы, вызывающие методы системных классов.
“Normally you would prepare the class that contains the static methods (let’s call it X) you like to mock but because it’s impossible for PowerMock to prepare a system class for testing so another approach has to be taken. So instead of preparing X you prepare the class that calls the static methods in X!”
“During some troubleshooting I tried to use different mock libraries and different approaches, but unless I’m mistaken there are only two ways how to do it — on the caller’s side — or on the callee’s one.”

Скажите, что входит в java beginner(или где почитать) и ориентировочный срок старта новой группы по Java Core?

ориентировочный срок старта новой группы по Java Core
Ожидается 1-10 июЛя.
что входит в java beginner
Сейчас выходит, что Java Core и Junior Java идут «хвост-в-хвост» по материалам.
А вот Java for Beginner — будет частично перекрываться с Java Core по материалам, но быть как бы ослабленной версией. Курс у нас стартует впервые, так что материалы еще прорабатываются, буду тут выкладывать. Хотя сам преподаватель его читает уже около двух лет.
или где почитать
Сейчас формируем набор литературы, возможно туда попадут:
1. Эккель. Философия Java. 4ed.
2. Шилдт. Java. Полное руководство. 8ed
3. Хорстманн. Java 2. 1 том. 8ed
4. Арнольд, Гослинг. Язык программирования Java
Некоторым нравится:
1. SCJP Sun Certified Programmer for Java 6 Exam 310-065
P.S. Мы выдаем всю необходимую литературу в электронном виде.

Моя принципиальная позиция в следующем: у всех авторов свой собственные своеобразный стиль изложения материала и подбора примеров, заданий. Поэтому мы формируем набор тем, которые должен усвоить слушатель, разрабатываем по ним лабораторные и тесты, а литературы даем по максимуму, слушатель должен сам выбрать что и откуда ему проще читать.

И, естественно, всегда после лекции Вы можете спросить преподавателя откуда стоит читать конкретную тему.

Добрый день,

а что входит в курс

Enterprise Junior Java Developer
? Какой уровень знания джава нужен, чтобы этот курс имел толк?
Какой уровень знания джава нужен, чтобы этот курс имел толк?
Ситуация двоякая:
1. Для того, что бы усвоить курс и применять знания в жизни нужно то, что на рынке считается «достаточным уровнем знания Java Core»: какие есть коллекции, понимание что значит фраза «блокирующий ввод/вывод», что такое «поток» и чем небезопасно многопоточное программирование, что такое наследование, что такое статические методы ... Т.е. знания, которые в целом есть либо после хорошего курса по Java Core (университет, мои, чужие), либо после опыта в любом C-подобном языке программирования (С/С++/Objective-C/Pascal/C#/PHP/Delphi/...).
2. Для того, что бы найти работу Java Junior — придется сдавать тех.собеседование И ПО Java Core, т.е. нещадно гоняют по Java Collections, Java I/O, Многопоточное программирование, OOP, исключения. Т.е. до разговоров о Servlet API серьезно спрашивают «голое Java Core».
а что входит в курс
В посте начал расписывать — смотрите. Сейчас буду детализировать. Конкретные вопросы: что именно учим, зачем это надо, на каких примерах, почему Это, а не То — задавайте тут.

Хотелось бы деталее о программе Junior.

Middle Java в ближайшее время не планируется делать.
Сосредоточились на двух курсах:
1. Java for Beginners.
2. Java Core.

то есть Junior Java Developer тоже пока не планируется?

dou.ua/...ums/topic/7867
Стартуем 26 августа.
Для тех кто оплачивает досрочно — идут несколько досрочных лекций по субботам.
В субботу 3 августа в 13.00 дополнительная лекция по java.util.concurrent.

Подписаться на комментарии