### 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

#### Forms of Teaching

Lectures

Exams

Continuous Assessment Exam
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.
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

Computer Engineering (module)
Skills (5. semester)
Computer Science (module)
Skills (5. semester)
Computing (study)
Skills (3. semester)
Control Engineering and Automation (module)
Skills (5. semester)
Electrical Engineering and Information Technology (study)
Skills (3. semester)
Electrical Power Engineering (module)
Skills (5. semester)
Electronic and Computer Engineering (module)
Skills (5. semester)
Electronics (module)
Skills (5. semester)
Information Processing (module)
Skills (5. semester)
Software Engineering and Information Systems (module)
Skills (5. semester)
Telecommunication and Informatics (module)
Skills (5. semester)
Wireless Technologies (module)
Skills (5. semester)
Computer Engineering (profile)
Skills (1. semester)
Computer Science (profile)
Skills (1. semester)
Control Engineering and Automation (profile)
Skills (1. semester)
Electrical Engineering Systems and Technologies (profile)
Skills (1. semester)
Electrical Power Engineering (profile)
Skills (1. semester)
Electronic and Computer Engineering (profile)
Skills (1. semester)
Electronics (profile)
Skills (1. semester)
Information Processing (profile)
Skills (1. semester)
Software Engineering and Information Systems (profile)
Skills (1. semester)
Telecommunication and Informatics (profile)
Skills (1. semester)
Wireless Technologies (profile)
Skills (1. semester)

#### 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

#### Lecturers in Charge

ID 65973
Winter semester
4 ECTS
L1 English Level
L1 e-Learning
30 Lecturers
0 Exercises
30 Laboratory exercises

100 Excellent
90 Very Good
70 Good
50 Acceptable