Програма на курса по програмиране за напреднали

Водещ: Валери Дачев, ДАВИД Холдинг АД

Целта на курса е да въведе участниците във фундаментите на съвременното приложно програмиране, предполагайки че те имат базови познания в областта на софтуерната разработка. Краткият период на провеждане на курса няма да позволи пълно запознаване със съответните области и затова целта е на участниците да бъде даден добър старт в областта и възможност сами да определят своята насоченост. Курсът ще се провежда паралелно на четири съвременни езика за програмиране (PHP, Java, C# и Delphi), три системи за управление на бази данни (MySQL, Microsoft SQL Server и InterBase) и съответните среди за разработка на приложенията (Zend Studio, NetBeans, Microsoft Visual Studio, Borland Delphi и т.н.). Общата продължителност на курса се предвижда да бъде 80 часа, които при нужда ще бъдат увеличени.

Следва програмата на самия курс:

  1. Основи на XML.
    (с неоценимата помощ на текстови редактори)
    1. Що е то XML (eXtensible Markup Language);
      (и защо XML ще замени есперанто)
    2. Що е то XSLT (eXtensible Stylesheet Language for Transformations)?
      (или въведение в езиковите преводи)
    3. Що е то XSD (XML Specification Definition) ?
      (или да обясним XML говорейки XML)
    4. Приложение: Персистенция. Interoperability. Web услуги.
      (или защо си губим времето с XML)
  2. Работа с бази данни.
    (в главните роли MySQL, Microsoft SQL Server, InterBase... и ще споменем останалото)
    1. Основи на базите данни. Видове бази данни;
      (и по какво се различават от бозите данни)
    2. Архитектура на Системите за Управление на Бази данни (СУБД);
      (или нервите на коя част от нервната ни система са ни спестили)
    3. Организация на СУБД;
      (или първи опит да се загубим в термини)
    4. DDL, DCL и DML в едно - Structured Query Language (SQL).
      (неочаквана добра комбинация - да научим английски с бази данни)
  3. Основи на обектното програмиране.
    (с елементи на PHP, Java, C# и Delphi... и каквото още попадне)
    1. Абстракция на данните. Класове и обекти. Видимост.
      (или какво ще сънуваме от тук нататък)
    2. Наследяване. Композиция.
      (или Слънчевата система през погледа на програмиста)
    3. Override и Overload;
      (или как да се загубим в собствения си код)
    4. Абстрактни класове. Интерфейси.
      (или с какво се занимават софтуерните архитекти)
    5. Полиморфизъм;
      (и защо аджеба се занимават софтуерните архитекти)
    6. Обработка на грешки. Работа с изключения.
      (и още - как да оставим днешната работа за утре)
  4. Видове приложения. Особености.
    (или начини за задоволяване на клиента)
    1. Desktop приложения:
      (или какво стои зад цъкането с мишката)
      1. Предимства и недостатъци;
      2. Форми и компоненти;
      3. Събития;
      4. Що са те нишките?
    2. Web приложения:
      (или какво НЕ правят web дизайнерите)
      1. Особености и ограничения на HTTP протокола;
      2. Основи на (X)HTML;
      3. Що е то postback ?
      4. Запазване и предаване на състоянието;
      5. Контроли.
    3. Web услуги:
      (или как да си говорим с останалия свят)
      1. Особености и изисквания. Приложение;
      2. Спецификации на услугите;
      3. Прилики и разлики с web приложенията.
  5. Практики в разработката.
    (или религиозните войните между разработчиците)
    1. Трислойна архитектура на решенията;
      (или принципът „Разделяй и владей”)
    2. Бележки по освобождаването на паметта;
      (или кой ще ни чисти бъкиите)
    3. Наследяване, композиция или имплементация;
      (или как да си вържем гащите)
    4. Отличителни белези на лошия код. Примери;
      (или „Опознай врага... за да го обикнеш”)
    5. Що е то UML и кой го ползва?
      (и защо няма да го ползваме ние)
  6. Разработка на софтуерно решение.
    (Putting it all together... или повече действие, по-малко приказки)
    1. Формулиране на основните изисквания;
      (или симулация на преговори с клиент – тест за издръжливост)
    2. Базова архитектура на решението. Интерфейси за работа;
      (или увод в строителството)
    3. План и разпределение на работата;
      (или защо трябва да започнем от мазето)
    4. Дизайн на базите от данни;
      (или как да си подредим гардероба)
    5. Дизайн на базовите класове и основната библиотека;
      (или как се излива бетонна плоча)
    6. Имплементация;
      (известна още като "черната работа")
    7. Тестване на проекта и изчистване на грешки.
      (или отработване на фразата "Роди ме, мамо, тъпа, аз сама ще се изруся.")
  7. Окончание.
    (или кратко въведение в алкохолизма на програмистите)