Algorithms and Programming I.

Teachers

Included in study programs

Teaching results

Upon completion of the course, students should have acquired the knowledge and skills to:
A. knowledge to navigate the conceptual apparatus in the field of algorithm design and development
B. understand the different types of data structures and how to create algorithms over data structures
C. competence to formulate the essence of the problem to be solved in terms of the principles of algorithm design
D. competence to transform an algorithm into the Python programming language on simple problems
E. ability to understand simple source code in selected programming languages (understand the basic control structures of an algorithm)
F. ability to work in pairs to design solutions to problems
G. communicate and explain their algorithm designs

Indicative content

Indicative content:
1. Concept of algorithm, its properties, concept of Turing machine and connection with algorithm, algorithm representation
2. Basic control structures of the algorithm and algorithmization of oral simple tasks,
3. Creating a flowchart in the PS diagram application
4. Basics of Python programming
5. Parsing flowcharts into Python
6. Complexity of algorithms and notation Big O
7. Sorting algorithms and their efficiency, hash tables and their meaning
8. Sorting algorithms and their efficiency, recursion in programs
9. Different types of data structures (linear lists, trees, heaps, graphs) and work with them
10. State space and uninformed state space search algorithms (in width and depth)
11. Informed state space search algorithms (quantitative hill climbing heuristics and its modifications)
12. Optimization algorithms A * and its modifications
13. Working with modules.

Support literature

1. Wengrow, J., A common-sense Guide to Data Structures and Algorithms, 2nd edition, The pragrmatic programmers, 2020
2. Skiena, S.S., The Algorithm Design Manual (Texts in Computer Science) 3rd ed., Springer, 2020
3. Wróblewski P.: Algoritmy, dátové a programovací techniky, Computer Press, Brno 2004
4. Pšenčíková, J., Algoritmizace, Computer Media, 2021
5. Pecinovský, J., Začínáme programovat v jazyku Python, Grada, 2020
6. Pecinovský, J., Python Kompletní příručka jazyka pro verzi 3.10, Grada, 2021

Requirements to complete the course

Requirements to complete the course:
- final exam - written form, 60% (passing the exam means obtaining at least 51% of the exam evaluation). The exam consists of two parts: verification of theoretical knowledge (test with different types of questions). The theoretical part verifies the achieved level of educational results A, B, E. Verification of practical skills - creation of a flow chart in the PS diagram and program in Python, where the level of educational results C, D, F, G is verified.
Exercises
Continuous tests 10%, continuous problem solving during exercises in pairs 10%, final task-algorithm creation 20%, 51% of this obligation is required for the exam
The following results of education C, D, F, G are developed and evaluated by evaluating an independent task and evaluating work in teams.

Student workload

Total study load (in hours):
156 hours
Participation in seminars 52 hours, preparation for seminars 13 hours, final task elaboration 13 hours, preparation for continuous tests and tasks 13 hours, preparation for the exam 65 hours

Language whose command is required to complete the course

slovak

Date of approval: 10.02.2023

Date of the latest change: 18.05.2022