CSCB035 Лабораторни упражнения по програмиране и дискретна математика

Анотация:

Основна цел на курса е да се интегрират и разширят знанията от заложените в програмата задължителни курсове по Програмиране и Дискретна математика. В първата си част той покрива основни знания по Теория на числата и практическите и приложения в кодирането на информация. Във втората си част курсът е насочен към комбинаторни алгоритми за преброяване, генериране и кодиране на основни комбинаторни конфигурации.

прочети още

Преподавател(и):

ас. Георги Кирков  
доц. Методи Трайков  д-р
проф. Иван Иванов  д-р

Описание на курса:

Компетенции:

Успешно завършилите курса студенти:

1) знаят:

• Основите на програмирането с езика С/C++: стандартни типове данни,

структури за управление, функции, масиви и структури;

• Основни похвати в процедурното програмиране: итерация, рекурсия и работа

с динамична памет;

• Основни приложения на модулната аритметика в компютърната наука и

кодирането на информация;

• Основни комбинаторни конфигурации и реализацията им на езика C++;

2) могат:

• Да намират ефективно НОД и НОК на две цели числа;

• Да определят ефективно дали дадено число е просто или не и да генерират

прости числа;

• Да преобразуват ефективно числата от една бройна система в друга;

• Да намират ефективно член на дадена рекурентна редица;

• Да генерират и кодират дадена комбинаторна конфигурация.


Предварителни изисквания:
Студентите да имат знания и/или умения:

- Паралелно посещаване на основните курсове по Програмиране и Дискретна математика.

- Стартиране на компютърно приложение;

- Работа с текстов редактор;

- Достъп до ресурси в Интернет;

- Обща компютърна грамотност.



Форми на провеждане:
Редовен

Учебни форми:
Лекция

Език, на който се води курса:
Български

Теми, които се разглеждат в курса:

  1. Делимост - бройни системи, прости числа, НОД и НОК
  2. Модулна аритметика - операции в остатъчното поле
  3. Приложение на модулната аритметика при кодиране и защита на информация - хеш функции, афинни шифри, ISBN код.
  4. Подмножества - преброяване, генериране и кодиране
  5. Пермутации - преброяване, генериране и кодиране
  6. Разбиване на числа и множества - преброяване, генериране и кодиране
  7. Контролна работа №1 – онлайн тест
  8. Делимост. Частно и остатък. НОД. НОК (Програмиране)
  9. Прости числа (Програмиране)
  10. Тъждество на Безу. Обобщен алгоритъм на Евклид (Програмиране)
  11. Кодиране (Програмиране)
  12. Множества (Програмиране)
  13. Множества - Част 2 (Програмиране). Пермутации и комбинации (Програмиране). Подготовка за текущ контрол
  14. Подготовка за Контролна работа №2
  15. Контролна работа №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) на който и да е от двата текущи контроли е задължително да се явите на финалния изпит.