### Competitive Programming

#### Course Description

Competitive programming is the course in which students will learn how to apply algorithms in order to solve complex problems. The goal of this course is to teach students how to apply familiar algorithms to non-intuitive problems.

#### General Competencies

Competitive programming is the course in which students will learn how to apply algorithms in order to solve complex problems. The goal of this course is to teach students how to apply familiar algorithms to non-intuitive problems.

#### Learning Outcomes

1. describe how algorithmic problems are solved
2. recognize the time and memory complexity of an algorithm or a structure
3. explain the concrete algorithms and data structures
4. analyze the given problem and recognize subproblems
5. apply the knowledge on a wider set of problems
6. assemble the solutions of subproblems to solve the whole problem
7. assess advantages and shortcomings of different algorithms

Lectures

Exams

#### Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Comment: Percent of Grade
Homeworks 0 % 20 % 0 % 0 %
Mid Term Exam: Written 0 % 40 % 0 %
Final Exam: Written 0 % 40 %
Exam: Written 0 % 100 %
##### Comment:

No grades, students either pass or fail.

#### Week by Week Schedule

1. Introduction lecture.
2. Graph theory.
3. Searching algorithms.
4. Searching algorithms.
5. Advanced data structures.
6. Advanced data structures.
7. Number theory and linear algebra.
8. Number theory and linear algebra.
9. Dynamic programming.
10. Dynamic programming.
11. Hashing.
12. Hashing.
13. Sweep line.
14. Heuristics.
15. Heuristics.

#### Study Programmes

Control Engineering and Automation -> Electrical Engineering and Information Technology (Profile)

Electrical Engineering and Information Technology -> Electrical Engineering and Information Technology and Computing (Study)

Electrical Engineering Systems and Technologies -> Electrical Engineering and Information Technology (Profile)

Computing -> Electrical Engineering and Information Technology and Computing (Study)

Electrical Power Engineering -> Electrical Engineering and Information Technology (Profile)

Control Engineering and Automation -> Electrical Engineering and Information Technology (Module)

Electronic and Computer Engineering -> Electrical Engineering and Information Technology (Profile)

Electrical Power Engineering -> Electrical Engineering and Information Technology (Module)

Electronics -> Electrical Engineering and Information Technology (Profile)

Electronic and Computer Engineering -> Electrical Engineering and Information Technology (Module)

Information Processing -> Information and Communication Technology (Profile)

Electronics -> Electrical Engineering and Information Technology (Module)

Telecommunication and Informatics -> Information and Communication Technology (Profile)

Wireless Technologies -> Electrical Engineering and Information Technology (Module)

Wireless Technologies -> Information and Communication Technology (Profile)

Information Processing -> Computing (Module)

Software Engineering and Information Systems -> Computing (Profile)

Computer Engineering -> Computing (Profile)

Software Engineering and Information Systems -> Computing (Module)

Computer Engineering -> Computing (Module)

Computer Science -> Computing (Profile)

Computer Science -> Computing (Module)

Telecommunication and Informatics -> Computing (Module)

#### Literature

Thomas H. Cormen, Charles E. Leiserson (2001.), Introduction to Algorithms, 2/e, The MIT Press; 2nd edition
Robert Sedgewick (2002.), Algorithms in C++, Addison-Wesley Professional; 3 edition

#### Grading System

4 ECTS
L1 English Level
L1 e-Learning
30 Lecturers
0 Exercises
30 Laboratory exercises

100 Excellent
90 Very Good
70 Good
50 Acceptable