16. Линейни структури от данни - Абстрактни типове данни
- Линейни структури данни
- Статичен и свързан списък
- Шаблонни класове (Generics) в C#
- Списъци – List<T> класа
- Стекове – Stack<T> класа
- Опашки – Queue<T> класа
- Упражнения: Работа с линейни типове данни
| 1 час лекция
3 часа упражнения
4 часа домашна работа |
17. Дървета и графи - Дървета. Дефиниране, създаване и обхождане на дървета. Обхождане на файловата система
- Двоични дървета за търсене. Балансирани дървета
- Графи и алгоритми за обхождане на графи
- Упражнения: работа с дървета и графи
| 1 час лекция
3 часа упражнения
6 часа домашна работа |
18. Речници, хеш-таблици и множества - Абстрактната структура от данни - речник (Dictionary)
- Хеширане и хеш-таблици: Dictionary<TKey, TValue> клас
- Имплементация на речник чрез черно-червени дървета: SortedDictionary<TKey, TValue> клас
- Множества и имплементации: HashSet<T> и SortedDictionary<TKey, TValue> класове
- Имплементиране на TreeSet<T> чрез опаковане на SortedDictionary<TKey, TValue>
- Упражнения: работа с речници и множества
| 1 час лекция
3 часа упражнения
6 часа домашна работа |
19. Сложност на алгоритмите и ефективност на структурите от данни - Сложност на алгоритмите
- Ефективност и сравнение на структурите от данни
- Как да изберем правилната структура от данни?
- Избор на правилната структура от данни - примери
- Упражнения: Избор на най-ефективната структура от данни
| 1 час лекция
3 часа упражнения
4 часа домашна работа |
20. Основни принципи на обектно-ориентираното програмиране - Наследяване
- Абстракция
- Енкапсулация
- Полиморфизъм
- Cohesion и Coupling
- Обектно-ориентирано моделиране
- Упражнения: Обектно-ориентирано моделиране със C# и .NET Framework
| 1 час лекция
3 часа упражнения
6 часа домашна работа |
21. Качествен програмен код - Какво представлява качествения програмен код?
- Конвенции за писане на код
- Именуване на индентификатори в сорс кода: класове, интерфейси, структури, Namespaces, методи, полета, константи и др.
- Форматиране на код: методи за форматиране, класове за форматиране, цикли за форматиране и условни конструкции, използване на празни редове, разбиване на дълги конструкции
- Висококачествени методи: предназначение на метода, поведение на метода, Strong Cohesion and Loose Coupling, дължина на метода и параметри на метода
- Ефективно използване на променливи: деклариране, инициализация, обхват, активност и живот на променливата
- Ефективно използване на константи
- Ефективна употреба на условни конструкции
- Защитно програмиране
- Документация и самодокументиращ се код
- Рефакториране: Подобряване на съществуващ код
- Упражнения: Подобряване на съществуващ нискокачествен код
| 6 часа лекции
4 часа домашна работа |
22. Методология за разрешаване на проблеми - Разрешаване на проблеми - принципи
- С химикал и хартия
- Генериране и тестване на идеи
- Разделяне на проблемите на по-малки "подпроблеми"
- Проверяване верността на идеята
- Избор на правилни структури от данни: Мислете си за ефективността
- Имплементиране на алгоритми стъпка по стъпка: писане; тестване; коригиране; писане; тестване …
- Тестване на решенията: обичайни случаи, гранични случаи, тестове за натовареност
- Упражнения: Решаване на проблем
| 2 часа лекции
4 часа упражнения
8 часа домашна работа |
23. Практическо занятие по решаване на проблеми #1 - Първи проблем: Извличане на текст от HTML документ
- Втори проблем: Намиране на път в лабиринт
- Трети проблем: Обектно-ориентирано моделиране на магазин за автомобилни части
- Упражнения: Разширете и подобрете решенията
| 2 часа лекции
2 часа упражнения
4 часа домашна работа |
24. Практическо занятие по решаване на проблеми #2 - Първи проблем: Преброяване на думите в текст
- Втори проблем: Матрица с прости числа
- Трети проблем: Пресмятане на аритметични изрази
- Упражнения: Разширете и подобрете решенията
| 2 часа лекции
2 часа упражнения
4 домашни |
25. Практическо занятие по решаване на проблеми #3 - Първи проблем: Спирална матрица от номера
- Втори проблем: Преброяване на думите в текстов файл
- Трети проблем: Обектно-ориентирано моделиране на училище с учители, ученици и класове
- Упражнения: Разширете и подобрете решенията
| 2 часа лекции
2 часа упражнения
4 часа домашна работа |
Финален изпит - Финалният изпит се състои от 4 практически програмни проблема с алгоритмична насоченост
- Курсистите, които покажат най-добри резултати, могат да продължат в курса
| 24 часа самоподготовка
6 часа изпит
|
Продължителност на част III:
44 часа, около 2 месеца със занятия 2 пъти в седмицата по 4 часа | Общо часове:
19 часа лекции
25 часа упражнения
74 часа домашни
6 часа изпит |