Algorithms and Programming I.
- Credits: 6
- Ending: Examination
- Range: 2P + 2C
- Semester: winter
- Year: 1
- Faculty of Economic Informatics
Teachers
Included in study programs
Teaching results
Upon completion of the course, students should have:
Knowledge
A. To understand the fundamental terminology related to the design and development of algorithms.
B. To understand different types of data structures and the ways algorithms are constructed and applied over them.
C. To formulate the essence of a given problem from the perspective of algorithmic principles and solution design.
Skills
D. To transform a designed algorithm into the Python programming language when solving basic tasks.
E. To understand simple source code in selected programming languages and recognise fundamental control structures of algorithms.
F. To collaborate in pairs when designing and refining solutions to algorithmic problems.
G. To communicate and clearly explain proposed algorithmic solutions.
Competentness
A. To independently identify the core algorithmic problem and choose an appropriate solution approach.
B. To integrate knowledge of data structures into the design of efficient algorithms.
D. To apply algorithmic principles in Python when solving introductory programming tasks.
F. To work effectively in a team when designing algorithmic solutions.
G. To present and defend proposed algorithmic procedures.
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
Syllabus
1. Introduction to Algorithmics and Computer Science. Concept of an algorithm, its properties. Turing machine. (History of algorithms, determinism, finiteness, efficiency. Introduction to theoretical computation models – the Turing machine. Discussion: What makes a “good” algorithm?) 2. Basic control structures of an algorithm. Algorithmization of word problems. (Sequence, selection, iteration. Translating verbal problems into algorithms. Pseudocode and structured solutions. Exercise: algorithmizing everyday tasks.) 3. Creating flowcharts. PS Diagram application. (Rules of flowchart design. Logic visualization through diagrams. Using the PS Diagram tool. Practical task: build a flowchart for a simple problem.) 4. Basics of Python programming. Data types, input/output, conditional statements. (Variables, operators, user input, branching. Linking algorithmic logic to code. First implementations in Python.) 5. Parsing flowcharts into Python code. Functions and program structure. (Translating diagrams to code. Function declaration and invocation. Program modularization. Exercise: functional transformations of algorithms.) 6. Algorithm complexity. Time and space complexity. Big O notation. (Comparing algorithms based on efficiency. Estimating complexity of simple algorithms. Visualizing time complexity growth.) 7. Sorting algorithms I. Bubble sort, Insertion sort. Hash tables and their significance. (Implementation of basic sorting algorithms. Principles of hashing and practical use. Efficiency comparison.) 8. Sorting algorithms II. Merge sort, Quick sort. Recursion in programming. (Recursive vs. iterative approaches. Call stack visualization. Practical recursive examples and debugging.) 9. Data structures – linear lists, trees, heaps, graphs. (Representation and usage of common data structures. Nested structures, operations. Introduction to object-oriented representation.) 10. State space and uninformed search algorithms: BFS and DFS. (Modeling problems as graphs. Blind search strategies. Implementation and visualization of search paths.) 11. Informed search algorithms. Heuristics, Hill Climbing and its variants. (Using heuristic functions. Local minima problems. Comparison with uninformed search strategies.) 12. Optimization algorithms: A* and its modifications. (Heuristics and goal distance. A algorithm, admissibility, performance. Use cases in games, navigation and logistics.) 13. Working with Python modules and libraries. Final revision. (Using math, random, itertools, time. Creating your own module. Preparation for final project/exam.)
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: 04.03.2025
Date of the latest change: 06.11.2025

