Algorithms and Programming III.
- Credits: 6
- Ending: Examination
- Range: 2P + 2C
- Semester: winter
- Year: 2
- Faculty of Economic Informatics
Teachers
Included in study programs
Teaching results
After completing the course, students will have:
A Knowledge
A. Understand the syntactic foundations of the C++ programming language and the semantic principles of the object-oriented programming paradigm within an integrated development environment.
B. Understand the principles and functioning of selected searching, sorting, encryption, and numerical algorithms, including their implementation techniques in C++.
C. Understand the principles and functioning of more complex data structures, such as two-dimensional regular and irregular dynamic arrays and singly linked lists, and their use in algorithm design.
Skills
D. Analyse a programming problem, design an algorithmic solution, and implement the proposed algorithm using the syntax of C++ and object-oriented programming principles.
E. Select an appropriate data structure for storing and processing data based on the requirements of the designed algorithm.
F. Use the debugger in an integrated development environment to analyse the behaviour of the final program, including algorithms operating on specific data structures, with test input data.
G. Compile a final executable program for the target operating system and hardware platform from the validated and tested source code.
Competences
A. Independently design, implement, and validate algorithms and data structures in C++.
B. Integrate object-oriented design principles to ensure the logical, structural, and technological consistency of applications.
C. Professionally present and defend proposed solutions to assigned programming tasks.
D. Prepare complete, technically accurate documentation describing the designed and implemented solution.
Indicative content
1 Basic concepts of object-oriented programming
2 Other programming techniques and features of oriented programming
3 Working with data streams using library classes objects in a program created in C++, inherited hierarchy of library classes for working with data streams
4 Inheritance, polymorphism, and composition of objects in an object-oriented C++ program
5 Dynamic allocation and deallocation of memory, arrays and pointers, address arithmetic and references in C++ program
6 Algorithms, groups (types) of algorithms
7 Complexity (computational complexity) of algorithms
8 Selected searching algorithms, their principles and operation in the C++ program
9 Selected sorting algorithms, their principles and operation in the C++ program
10 One-way linked list, its principle and operation in the C++ program
11 Selected methods of information encryption, their principles and operation in the C++ program
12 Selected algorithms of a numerical differentiation of mathematical functions, their principles and operation in the C++ program
13 Selected algorithms of a numerical integration of mathematical functions, their principles and operation in the C++ program
Support literature
1. Bancila, M. (2020). Modern C++ programming cookbook (2nd ed.). Packt Publishing. ISBN 978-1-80020-898-8.
2. Murach, J., & Murach, T. (2022). Murach’s C++ programming (2nd ed.). Mike Murach & Associates. ISBN 978-1-943872-96-1.
3. Stroustrup, B. (2013). The C++ programming language (4th ed.). Addison-Wesley. ISBN 978-0-321-56384-2.
4. Horton, I., & Horton, P. (2019). Beginning C++ programming: Modern C++ at your fingertips! Apress. ISBN 978-1-78712-494-3.
5. JURÍK, P. Programovanie v jazyku C++ rýchlo a jednoducho. Merkur, 2019. ISBN 978-80-89996-02-5
Syllabus
1. Fundamentals of Object-Oriented Programming (OOP). (Classes, objects, encapsulation, abstraction, constructors, destructors.) Exercise: Implement a simple "Employee" class. 2. Advanced OOP Features – Inheritance, Polymorphism, Operator Overloading. (Reusability, virtual functions, dynamic binding.) Discussion: When to use inheritance vs. composition. 3. Working with Data Streams and the iostream Library. (Stream class hierarchy, ifstream/ofstream, formatting output.) Exercise: Reading and writing to a text file. 4. Inheritance, Polymorphism, and Object Composition. (Combining multiple OOP techniques; design patterns.) Exercise: Model the classes "Person", "Employee", "Student". 5. Dynamic Memory Allocation and Pointers. (Operators new, delete, arrays and pointers, pointer arithmetic, references.) Discussion: Safe memory management in C++. 6. Introduction to Algorithms and Their Types. (Sorting, searching, optimization algorithms.) Exercise: Implement linear search. 7. Algorithm Complexity and Big O Notation. (Time and space analysis, comparing algorithms.) Exercise: Compare linear vs. binary search performance. 8. Selected Search Algorithms. (Binary search, interpolation search, exponential search.) Exercise: Implement binary search with range checking. 9. Selected Sorting Algorithms. (Bubble sort, insertion sort, merge sort.) Exercise: Compare sorting speeds with actual inputs. 10. Singly Linked List in C++. (Insertion, deletion, traversal, memory management.) Exercise: Implement a simple singly linked list. 11. Basic Cryptography and Information Encryption. (Caesar cipher, XOR, substitution ciphers.) Discussion: Introduction to data security. 12. Numerical Derivation of Mathematical Functions. (Finite difference method, slope estimation.) Exercise: Derive slope for a real-world function. 13. Numerical Integration of Mathematical Functions. (Rectangle and trapezoidal methods.) Exercise: Evaluate integration accuracy.
Requirements to complete the course
Exercises (40% of course evaluation)
The content of the exercise is the solution of assigned programming tasks. In addition to these tasks, students solve independent home programming assignments thematically related to lectures and solved programming tasks from exercises. Students comment on their solutions to independent home assignments with their technical descriptions, and they defend them in a possible discussion in front of other students of their study group. The solutions of independent programming assignments of students are evaluated (10% of the course evaluation). By solving and evaluating independent home assignments, the achieved level of the B, C, D, E, F, G, H, I educational results is verified. During the exercises, students complete an independent written work, solving a programming task in an integrated development environment, which is evaluated (30% of the course evaluation). By solving and evaluating the problem task from the independent written work, the achieved level of the B, C, D, E, F, G educational results is verified.
Exam (60% of the course evaluation)
The exam consists of two parts:
- from an independent exam written work, solution of a programming task in an integrated development environment, and defense of this solution (50% of the course evaluation). By solving and evaluating the problem task from the independent exam written work and defending this solution, the achieved level of the B, C, D, E, F, G, H educational results is verified.
- from the oral part, where students answer theoretical questions from a syntax of the C++ language, the principles and functioning of selected searching, sorting, encryption, numerical algorithms, and from the principles and functioning of more complex data structures, such as e.g., two-dimensional regular and irregular dynamic arrays and one-way linked list (10% of the course evaluation). The oral part of the exam and its evaluation verifies the achieved level of the A, B and C educational results.
Student workload
Total study load (in hours): 6 credits x 26 hours = 156 hours
Distribution of study load
Participation in seminars: 52 hours
Preparation for seminars: 26 hours
Written assignments: 12 hours
Preparation for written work: 18 hours
Exam preparation: 48 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

