CSCB035 Лабораторни упражнения по програмиране и дискретна математика
Анотация:
Основна цел на курса е да се интегрират и разширят знанията от заложените в програмата задължителни курсове по Програмиране и Дискретна математика. В първата си част той покрива основни знания по Теория на числата и практическите и приложения в кодирането на информация. Във втората си част курсът е насочен към комбинаторни алгоритми за преброяване, генериране и кодиране на основни комбинаторни конфигурации.
Преподавател(и):
доц. Методи Трайков д-р
проф. Иван Иванов д-р
Описание на курса:
Компетенции:
Успешно завършилите курса студенти:
1) знаят:
• Основите на програмирането с езика С/C++: стандартни типове данни,
структури за управление, функции, масиви и структури;
• Основни похвати в процедурното програмиране: итерация, рекурсия и работа
с динамична памет;
• Основни приложения на модулната аритметика в компютърната наука и
кодирането на информация;
• Основни комбинаторни конфигурации и реализацията им на езика C++;
2) могат:
• Да намират ефективно НОД и НОК на две цели числа;
• Да определят ефективно дали дадено число е просто или не и да генерират
прости числа;
• Да преобразуват ефективно числата от една бройна система в друга;
• Да намират ефективно член на дадена рекурентна редица;
• Да генерират и кодират дадена комбинаторна конфигурация.
Предварителни изисквания:
Студентите да имат знания и/или умения:
- Паралелно посещаване на основните курсове по Програмиране и Дискретна математика.
- Стартиране на компютърно приложение;
- Работа с текстов редактор;
- Достъп до ресурси в Интернет;
- Обща компютърна грамотност.
Форми на провеждане:
Редовен
Учебни форми:
Лекция
Език, на който се води курса:
Български
Теми, които се разглеждат в курса:
- Делимост - бройни системи, прости числа, НОД и НОК
- Модулна аритметика - операции в остатъчното поле
- Приложение на модулната аритметика при кодиране и защита на информация - хеш функции, афинни шифри, ISBN код.
- Подмножества - преброяване, генериране и кодиране
- Пермутации - преброяване, генериране и кодиране
- Разбиване на числа и множества - преброяване, генериране и кодиране
- Контролна работа №1 – онлайн тест
- Делимост. Частно и остатък. НОД. НОК (Програмиране)
- Прости числа (Програмиране)
- Тъждество на Безу. Обобщен алгоритъм на Евклид (Програмиране)
- Кодиране (Програмиране)
- Множества (Програмиране)
- Множества - Част 2 (Програмиране). Пермутации и комбинации (Програмиране). Подготовка за текущ контрол
- Подготовка за Контролна работа №2
- Контролна работа №2
Литература по темите:
1. Kenneth H. Rosen, Discrete mathematics and its applications (7th edition), 2013, New York (51/R79)
2. C. Stein, R. Drysdale, K. Bogart, Discrete mathematics for Computer Scientists
3. T. Feil, J. Kroan, Essential discrete mathematics for computer science
4. L. Lovász, J. Pelikán, K. Vesztergombi, Discrete Mathematics: Elementary and Beyond, Springer, New York, 2003
5. E. Reingold, J. Nievergelt, N. Deo,Combinatorial algorithms : theory and practice
6. D. Kreher , D. Stinson, Combinatorial Algorithms: Generation, Enumeration, and Search
7. D. Knuth, The Art of Computer Programming, Volume 4A: Combinatorial Algorithms, Part 1
8. Шилдт Х., Практически самоучител по С, Софтпрес, 2001
9. cplusplus.com - The C++ Resources Network - http://www.cplusplus.com/
10. Eckel B., Thinking in C++, 2nd edition, v.1,v2, http://mindview.net/Books/TICPP/ThinkingInCPP2e.html
Средства за оценяване:
Текущият контрол ще се проведе под формата на online тестове (за първия времето за работа е 60 минути, а за втория - 90 минути), като тежестта им за формирането на крайна оценка от текущ контрол е в съотношение 1:2. При резултат от поне Добър (4.00) се освобождавате от финалния изпит.
Важно: При оценка Слаб (2.00) на който и да е от двата текущи контроли е задължително да се явите на финалния изпит.