Competitive Programming I

Year
0
Academic year
2022-2023
Code
02044625
Subject Area
Computer Science
Language of Instruction
Portuguese
Other Languages of Instruction
English
Mode of Delivery
Face-to-face
ECTS Credits
3.0
Type
Compulsory
Level
Non Degree Course

Recommended Prerequisites

Not applicable.

Teaching Methods

Tutorial classes are used to introduce theoretical concepts and to discuss the solution to particular problems. Lab classes consist in solving programming problems, individually and in a team. The assessment takes into account the grades obtained in solving several programming problems and in individual defences. The Mooshak system, commonly used in programming contests, is used as an automated judging tool in the programming assignments. The test cases for each problem are generated in order to test different scenarios.

Learning Outcomes

To develop skills in solving programming problems that arise in the context of International Collegiate Programming Competitions (ICPC). From a description of a problem, the student should be able, individually and in a team, to relate it to other known problems, identify the most appropriate solution approach to solve it considering its run-time and space complexity, and implement it in an efficient manner.

Work Placement(s)

No

Syllabus

1. Introduction to algorithms and data structures

2. Strategies for solving competition problems

3. Algorithm paradigms

3.1. Divide and conquer

3.2. Backtracking

3.3. Dynamic programming

3.4. Greedy algorithms

3.5. Simulation

4. Applications

4.1. Search problems

4.2. Graph problems

4.3. Computational geometry

4.4. String problems

4.5. Numerical problems

4.6. Cryptography/hashing

4.7. Ad-hoc problems

4.8. Other problems

Head Lecturer(s)

Luís Filipe dos Santos Coelho Paquete

Assessment Methods

Assessment
The assessment takes into account the grades obtained in solving several programming problems and in individual defences: 100.0%

Bibliography

T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, Introduction to Algorithms, MIT Press, 3rd ed., 2009.
S.Skiena and M. Revilla, Progamming Challenges, Springer, 2003.
A. Laaksonen, Guide to Competitive Programming, Springer, 2nd ed., 2020
J. Erikson, Algorithms, 2019
S. Halim, F. Halim, Competitive programming 4 (books 1 and 2), 2020.