Сложност на алгоритми. Сложност по време и сложност по памет. Анализ на итеративни алгоритми и примери. Алгоритми за сортиране (bubble sort, insertion sort, selection sort) и алгоритми за търсене (linear search, binary search).
Анализ на рекурсивни алгоритми. Метод на развиването и метод с анализ на дървото на рекурсията. Quicksort и merge sort.
Долна граница на сортиране с преки сравнения. Counting sort. Структури от данни. Динамичен масив (vector) използващ итератори. Амортизиран анализ. Агрегатен метод и примери за функции с амортизирана сложност.
Свързан списък - едносвързан и двусвързан списък.
Едносвързани списъци. MergeSort и QuickSort за свързани списъци. Въвеждане и имплементация на структура от данни deque.
Въвеждане и начини за имплементация на структура от данни опашка. Въвеждане и начини за имплементация на структура от данни стек. Задачата за разпознаване на балансиран низ от скоби. Имплементация на ForwardIterator за двоично наредено дърво. Въвеждане и начини за имплементация на структура от данни дърво. Основни задачи при работа с дървета.
Задачи за дървета. Балансирани дървета. Ротации и AVL дървета.
Имплементация на ротации. Индексация в двоично наредено дърво за логаритмично време. Heaps и абстрактна структура от данни приоритетна опашка.
Имплементация на приоритетна опашка. Запознаване с асд dictionary и въвеждане на структурата от данни хеш таблица. Въвждане на различни методи за имплементация на хеш таблица.