CSCB010 Програмиране за напреднали
Анотация:
Курсът подготовя студентите по Информатика за решаване на задачи, за които се изисква съставяне на по-сложни алгоритми. Изучава се целия път от поставяне на задачата до анализ на решенията - анализ на данните, преглед на съществуващи алгоритми за решаванети й, избиране на подходящ алгоритъм, модифициране на съществуващ или построяване на нов алгоритъм, избор на структури от данни, програмиране, тестване на програмата, анализ на ефективността на алгоритъма и програмата. Всички алгоритми се изучават заедно с най-ефективните им реализации като програми на С и С++.
Подробна и текуща информация за курса:
http://www.math.bas.bg/~nkirov/2014/CSCB010/index.html
http://nikolay.kirov.be/2014/CSCB010/index.html
Преподавател(и):
доц. Николай Киров д-р
Описание на курса:
Компетенции:
Самостоятелно решаване на алгоритмични задачи, използване на литература и готови програми, програмиране на ефективни алгоритми
Предварителни изисквания:
Студентите трябва да знаят да програмират на С и/или С++.
Форми на провеждане:
Редовен
Учебни форми:
Упражнения
Език, на който се води курса:
Български
Теми, които се разглеждат в курса:
1 Технология за ефективно програмиране на алгоритми
2 Оценка и сложност на алгоритми
3 Бройни системи. Прости и съвършени числа
4 Редица на Фибоначи. Най-голям общ делител, най-малко общо кратно. Рекурсия
5 Комбинаторни алгоритми.
6 Сортиране. Търсене
7 Сортиране. Търсене с връщане
Състезание 1
8 Обсъждане на задачите от състезанието, резултати, тестове и решения на авторите
9 „Разделяй и владей”
10 Динамично оптимиране
11 Динамично оптимиране
12 Графи
13 Задачи върху графи
Състезание 2
14 Обсъждане на задачите от състезанието, резултати, тестове и решения на авторите
Литература по темите:
Програмиране = ++Алгоритми;
Преслав Наков, Панайот Добриков,
TopTeam Co., 2003, 696 страници
ISBN 954-8905-06-X
681.325.3 / Н 186
Средства за оценяване:
ПРОЦЕНТНО УЧАСТИЕ НА ФОРМИ ЗА ОЦЕНЯВАНЕ ПРИ ФОРМИРАНЕ НА КРАЙНА ОЦЕНКА
ФОРМИ НА ОЦЕНЯВАНЕ ТЕКУЩ КОНТРОЛ КОМБИНИРАНО ОЦЕНЯВАНЕ ФИНАЛЕН ИЗПИТ
ТЕСТ 20 20 20
ТРЕНИНГ 60 60 60
СЪСТЕЗАНИЕ 20 0 0
ПРАКТИЧЕСКА ЗАДАЧА 0 20 20
Тренинг
Тренингът се състои от 10 задания по две задачи.
Всяка изпратена в срок (една седмица) и решена задача носи по 3 точки.
Изпратена по-късно и решена задача носи по 2 точки.
Студентите изпращат е-мейл с прикачени два файла - текстовете на програмите на С или С++ с решенията на двете задачи.
Имената на файловете се образуват от факултетния номер на студента, долна черта_, пореден номер на домашно и буква a за първата и b за втората задача, например f12345_1a.cpp или f12345_1b.c.
Когато студентът е получил за някои задачи по 2 точки и е решил всички задачи, има право да поиска допълнително задачи за допълване до 60 точки от тренинг.
Състезание
Състезанието се провежда в събота, ИМИ, 164 зала [ул. "Акад. Г. Бончев", бл.8 (bgmaps)] (график за състезанията)
Студентът може да участва във всички състезания (двете обявени и допълнителни), като за текущ контрол се взема най-доброто му представяне.
Състезанията се провеждат по правилата на Републиканската студентска олимпиада по програмиране [тук], с единствена разлика - индивидуално (а не отборно) участие. Използва се системата за провеждане на състезания по програмиране PC2. Най-важните правила.
На състезанието се предлагат най-малко 8 задачи, като за всяка решена една задача се дават по 5 точки (не се очаква да бъдат решени повече от 4 задачи) за максимум 20 точки.
Тест
Тестовете са от типа "множествен избор" (multiple choice), всеки въпрос има предложения за 4 отговора, маркирани с а), б), в) и г). За всеки въпрос са възможни всички вариации с повторения на елементите вярно-невярно.
За всеки отговор студентът има 3 възможности за определянето му:
знам, че това е (верен) отговор на въпроса;
знам, че това е неверен отговор на въпроса, или по-точно, предложението не е отговор на въпроса;
не мога да преценя, не знам дали предложението е отговор на въпроса.
Всеки студент получава лист хартия А4 с теста, като всички тестове са различни.
По време на теста студентите могат да използват лекции, учебници и всякакви други материали, включително компютри и Интернет.
При проверката на индивидуален тест всеки въпрос получава тестови точки в интервала [-4, 4]. Те са сума от точките за всеки отговор, които могат да бъдат:
+1, когато студентът е дал правилен отговор (да или не);
-1 при неправилен отговор;
0 при отговор "не знам".
Практика
По правилата на състезанието - на студента се дават задачи и компютър, на който да напише работеща програма.