Competitive Programming

Data is displayed for academic year: 2023./2024.

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.

Study Programmes

University undergraduate
Skills (3. semester) (5. semester)
Skills (3. semester) (5. semester)
[FER2-HR] Computer Engineering - module
Skills (5. semester)
[FER2-HR] Computer Science - module
Skills (5. semester)
[FER2-HR] Computing - study
Skills (3. semester)
[FER2-HR] Control Engineering and Automation - module
Skills (5. semester)
[FER2-HR] Electrical Engineering and Information Technology - study
Skills (3. semester)
[FER2-HR] Electrical Power Engineering - module
Skills (5. semester)
[FER2-HR] Electronic and Computer Engineering - module
Skills (5. semester)
[FER2-HR] Electronics - module
Skills (5. semester)
[FER2-HR] Information Processing - module
Skills (5. semester)
[FER2-HR] Software Engineering and Information Systems - module
Skills (5. semester)
[FER2-HR] Telecommunication and Informatics - module
Skills (5. semester)
[FER2-HR] Wireless Technologies - module
Skills (5. semester)
University graduate
[FER3-HR] Computing - study
Skills (1. semester)
[FER3-HR] Electrical Engineering and Information Technology - study
Skills (1. semester)
[FER3-HR] Information and Communication Technology - study
Skills (1. semester)
[FER2-HR] Computer Engineering - profile
Skills (1. semester)
[FER2-HR] Computer Science - profile
Skills (1. semester)
[FER2-HR] Control Engineering and Automation - profile
Skills (1. semester)
[FER2-HR] Electrical Engineering Systems and Technologies - profile
Skills (1. semester)
[FER2-HR] Electrical Power Engineering - profile
Skills (1. semester)
[FER2-HR] Electronic and Computer Engineering - profile
Skills (1. semester)
[FER2-HR] Electronics - profile
Skills (1. semester)
[FER2-HR] Information Processing - profile
Skills (1. semester)
[FER2-HR] Software Engineering and Information Systems - profile
Skills (1. semester)
[FER2-HR] Telecommunication and Informatics - profile
Skills (1. semester)
[FER2-HR] Wireless Technologies - profile
Skills (1. semester)

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

Grading Method

Continuous Assessment Exam
Type Threshold Percent of Grade Threshold 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.

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

For students

General

ID 65973
  Winter semester
4 ECTS
L0 English Level
L1 e-Learning
30 Lectures
0 Seminar
0 Exercises
30 Laboratory exercises
0 Project laboratory
0 Physical education excercises

Grading System

100 Excellent
90 Very Good
70 Good
50 Sufficient