Учебен план на НП „Обучение за ИТ Кариера“

Дата:

Учебни курсове през първата година


Курс „Увод в програмирането“
Първи стъпки в програмирането
Пресмятания, оператори, изрази
Проверки (условни конструкции)
Повторения (цикли) Подпрограми (функции / методи)
Практически изпит

Курс „Програмиране“
Сорс-контрол системи
Бройни системи Типове данни
Масиви и списъци
Дебъгване и работа с дебъгер
Многомерни масиви
Стрингове и работа с текст
Речници и хеш-таблици
Практически изпит

Курс „Увод в обектно-ориентираното програмиране (ООП)“
Дефиниране на класове
Член-функции (методи) в класовете
Капсулация на данни в ООП
Статични членове в класовете
Абстракция, наследяване и интерфейси
Полиморфизъм в ООП
Работа по практически курсови проекти
Защита на практически курсов проект

Курс „Увод в алгоритмите и структурите от данни“
Въведение в алгоритмите
Линейни структури от данни
Алгоритми върху линейни структури
Алгоритми за сортиране
Алгоритми за търсене
Задачи върху списъци, сортиране и търсене
Подготовка за изпит
Практически изпит

Учебни курсове през втората година


Курс „ООП“
Компонентно тестване (unit testing)
Дефиниране на класове за напреднали
Шаблонни класове
Наследяване, абстракция, интерфейси Полиморфизъм в ООП
Работа с обекти
Елементи от функционалното програмиране
Комуникация между обекти (събития / интерфейси)
Изключения (exceptions)
Работа с потоци и файлове
Базови шаблони за дизайн (design patterns)
Практически изпит

Курс „Бази данни“
Въведение в базите данни
Моделиране на релационни бази от данни Заявки за извличане и промяна на данни
Сложни заявки за извличане на данни
Съединения на таблици (SQL JOIN)
Агрегация и групиране на данни
Скаларни функции,

Курс „Разработка на софтуер“
Преглед на трислойния модел
Концепция за тестване – писане на „unit“ тестове
Концепция за дебъгване
Концепция за рефакториране и правене на „инкрементални промени“
Увод в инструментите за разработка – IDE, текстови редактори, командни инструменти
Използване на външни библиотеки.
Управление на пакети.
Свързване на приложения с бази от данни
Свързване на приложения с бази от данни
Създаване на приложения с няколко потребителски интерфейса

Курс „Въведение в операционни системи и вградени системи“
Компютърни системи и ОС
Структура на ОС
Пакетни системи в ОС
Процеси и памет
Увод във вградените системи
Вход и изход с общо предназначение (GPIO) Работа със сензори
Аналогов / цифров вход и изход и преобразуватели
Управление на периферия

Учебни курсове през третата година


Курс „Алгоритми и структури от данни“
Алчни алгоритми
Рекурсия, пълно изчерпване и търсене с връщане назад
Комбинаторни алгоритми
Динамично оптимиране
Дървовидни структури от данни и алгоритми върху тях
Хеширане и хеш-таблици
Графи и алгоритми върху графи

Курс „Функционално програмиране“
Мотивация зад функционалното програмиране
Функции и стойности – дефиниции и понятия
Програмиране без променливи и цикли. Решаване на задачи с рекурсия. Видове рекурсия
Работа със списъци във функционален език. Понятие за cons / head & tail. Рекурсивни функции върху списъци
Понятие „функции от по-висок ред“. Запознаване с анонимни / lambda функции
Затваряне на състояние във функция – closures

Курс „Интернет програмиране“
Запознаване с TCP/IP и сокети
HTTP протокол
Запознаване с HTML
HTTP сървъри и сервиране на статични HTML файлове
Запознаване с MVC технологична рамка
Свързване на HTTP сървър с backend език за програмиране (PHP / Python / Java / C# / JS / други)
Комуникация с база от данни
Шаблонни езици от страна на сървъра
MVC архитектура
Управление на състоянието в уеб приложенията
Автентикация и авторизация
Сигурност на уеб приложенията
Създаване REST API
Внедряване на проект (deployment)

Курс „Софтуерно инженерство“
Работа с чужд код
Сорс-контрол системи
Софтуерни изисквания и прототипи
Софтуерно тестване
Софтуерна документация
Процеси за софтуерна разработка