BETA

Обучения
Курс по Core Java към Хак България




Курс по Core Java към Хак България


Хак България организира безплатен курс по Core Java, който ще започне в седмицата, започваща на 19 май.


Подробности от сайта на организаторите:

Курсът по Core Java е безплатен!

Точно така. Инвестицията от ваша страна ще се изразява във време, а не в пари. По този начин може да филтрираме сериозните хора и да гарантираме крайното качество на обучението.

За курсът по Core Java ще има 40 свободни места, разпределени в две групи. За да изберем хората, които ще го посещават, ще направим сериозна филтрация на две нива:

  • От всички кандидатствали ще направим съкратен списък с тези, които ще интервюираме.
  • С всички от съкратения списък, ще се чуем по Skype, за да преценим дали ще продължат към курса!

Времеви рамки на курса и място на провеждане

  • Курсът ще започне в седмицата на 19ти май с продължителност от 2 месеца и половина
  • Занятията ще бъдат 3 пъти в седмицата, по 4 часа
  • Ще има обедна и вечерна група
  • Залата, където ще се състоят занятията, се намира в кв. Младост 1A, на 37 секунди от спирката на метростанция “Младост 3”

Курсът не е за ниво начинаещи

Няма да ви лъжем. Ако все още не може да програмирате или не се справяте достатъчно добре, този курс не е за вас.

Ще бъде интензивен и ще изисква знания по следните неща:

  • Основи на програмирането - какво е for, if, булев израз, функция, обект и т.н
  • Основни знания в структурите от данни - какво е списък, хеш-таблица, опашка и т.н
  • Основни знания в алгоритмите - що е то алгоритъм, как да обходите масив с два for-цикъла и как да структурирате решение на даден проблем

Още информация на сайта на Hack Bulgaria
 

 


КОГА: 19.05.2014

МЯСТО: Младост 1А (до метро станция Младост 3)

 

Уводен материал и нулева седмица.

  • Git quick recap - инициализиране и теглене от репозитори със задачи.
  • Виртуална машина - overview, java и class файлове, jar файлове, байткод.
  • Параметри на виртуалната машина. Main метод(и). 
  • Hello world. Компилиране през терминал. Изпълнение без IDE, предаване на параметри към main метод. Терминален hello world, обяснение за процеса на компилация. System.out, System.in, System.err. Печатане в конзолата. 

Въведение в Eclipse. Въведение в Java.

  • Концепция на IDE. Eclipse - структура (изгледи, перспективи, плъгини, параметри). 
  • Създаване на проект, създаване на пакети и класове, изпълнение на hello world чрез IDE. Подаване на параметри чрез Eclipse.
  • Вградени типове данни в Java. Константи, променливи, основни оператори, изрази, конструкции if/else, for/while/do-while/switch.
  • Масиви. Работа с масиви. Предаване по референция. Някои интересни задачи.
  • Дебъгинг в Eclipse.
    • Възможности, настройки. Breakpoints. Условни breakpoints. Спиране на изпълнението точно преди грешка в прогрмата.
    • Watcher, Expressions, Display прозорци. Възможности.
    • Отдалечено дебъгване като концепция, JPDA.

Въведение в Java, част 2.

  • Методи. Сигнатури на методи.
  • Пакети, файлове (предговор). Класове. Низове. Char и unicode в Java.
  • Обвиващи класове за вградените типове, основни функции на обвиващи класове.
  • Енумерации.
  • Unit тестове като концепция. Запознаване с jUnit. Задачи за писане на тестове, задачи за покриване/минаване на тестове.

Обектно-ориентирано програмиране част 1.

  • Класове и обекти. Конструктори. Референции. Методи. Предаване по референция, предаване по стойност. 
  • Класът Object. Важни методи на класа Object - toString, equals, hashCode, getClass и т.н.
  • Клас String. Основни методи на класа String, интересни задачи за низове. Escape sequences в String. Интерниране на низове.
  • Mutable и immutable класове. String и String Builder. Performance сравнения (чрез задача, която ще има ограничение за време).
  • Heap и GC като концепция. 

Обектно-ориентирано програмиране част 2.

  • Интерфейси, абстрактни класове. Типов полиморфизъм. Модификатори за достъп. Примери. 
  • Писане на примерни йерархии. Разлика между класове и интерфейси, use case-ове за употребата им. 
  • Примери и задачи за моделиране чрез интерфейси и абстрактни класове. 
  • Инкапсулация - концепция, примери. Задачи за моделиране на данни, Model класове. Концепция на ORМ.

Обектно-ориентирано програмиране част 3.

  • Видове класове - вътрешни, вложени, локални, анонимни. Скриване на имплементация.
  • Добри и доказали се ООП практики. (Композиция пред наследяване, high cohesion, loose coupling. и т.н.)
  • Правилно писане на коментари и добри практики при документация.

Exceptions and error handling. Logging.

  • Try-catch блокове. Семантика. Return + finally семантика. 
  • Йерархия на Exceptions. Разлики между Exception, Error, Throwable. Runtime exceptions vs catched exceptions. Exception chaining.
  • Logging. Apache log4j.
  • Добри практики при error handling (throw when API, handle when client, etc).

I/O. Работа с файлове. Сериализация.

  • Потоци. Буферирани потоци. Четене/писане във файлове чрез потоци. Try-with-resource. Closeable и AutoCloseable.
  • Манипулации по файлова система с Java <=6.
  • Манипулации по файлова система с Java 7.
  • Сериализация и десериализация.
  • Apache-commons-IO.

Collections framework. Generics basics.

  • Collections клас. Йерархия на collections framework-a.
  • Stack, Vector, Queue, PriorityQueue, ArrayList, LinkedList, Set.
  • Iterator. Концепция. Използване.
  • Map, HashSet, HashMap, LinkedHashMap, TreeMap.

Generics in details.

  • Generic методи.
  • Дизайн на generic класове. Работа с generic типове.
  • Advanced Generics - type erasure, bounded generics, wild cards, etc.

Работа със структурирани данни. XML, JSON.

  • JSON in Java. 
  • XML. JAXP, DOM XML parser. JAXB.

Анотации. Reflection.

  • Анотации в Java. Вградени анотации, създаване на анотации.
  • Class loading механизъм, Classloaders.
  • Инстанциране, извиквания на методи. Анализиране на декларирани анотации.

Интернет програмиране с Java.

  • Sockets. URL, URLConnection.
  • Клиент-сървър приложение.
  • Apache HTTPClient.

Конкурентно програмиране в Java.

  • Процеси, нишки, Runnables. Interrupts, joins.
  • ThreadLocals, Executors.
  • Синхронизация чрез критичен участък. Synchronized методи. Атомарни данни, volatile декларация.
  • Wait/notify механизъм в Java.

Build tooling.

  • Ant basics.
  • Maven basics.
  • Continuous integration концепция. Интеграция с IDE, deploy-on-save техники и други.

Regular expressions.

  • Matcher, Pattern, examples.
  • Groups. Quantifiers.

Advanced Eclipse.Content assist fine-tunning.

  • Noteable plugins - Checkstyle, Findbugs, PMD, Autoformat, etc.
  • Refactoring primitives, optimal keystroke bindings presets.
  • Custom templates and custom actions.
Георги Пачов

Георги Пачов

Георги Пачов е възпитаник на ФМИ към Софийски Университет в София, като е завършил Компютърни науки. Има над 3 годишен опит с Java, Linux и Android, като е работил в Astea Solutions и Wacom Europe и e бил част от преподавателския колектив за курса по Android във ФМИ. Има интерес в изкуствения интелект, софтуерните архитектури и agile методологии.Освен това е и фен на Челси, които се държат много добре този сезон в Premier League!