Lecturer(s)
|
-
Řezáčková Olga, Ing. M.Sc.
-
Šimůnek Ladislav, Ing. Ph.D.
-
Skupa Miroslav, Ing.
|
Course content
|
1. Problem, algorithm, program. Programming language. Program execution. 2. Generic programming. Recursve programs. 3. Computational complexity. O-notation, Omega-notation, Theta-notation. Practical examples. 4. Sorting - algoritms, their complexity. 5. Abstract data types, ADT Stack. 6. ADT Queue. Using ADTs for solving problems. 7. List. Iterator. 8. Set. Table. Dictionary. Hash function. 9. Ordered data structures. 10. Graphs, solving problems by breadth-first search. 11. Graphs, solving problems by depth-first search. Topological ordering. 12. Priority queue. Paradigm and properties of greedy algorithms. 13. Composite data structures and their application for problem solving.
|
Learning activities and teaching methods
|
- Contact hours
- 52 hours per semester
- Undergraduate study programme term essay (20-40)
- 39 hours per semester
- Preparation for an examination (30-60)
- 26 hours per semester
- Preparation for comprehensive test (10-40)
- 13 hours per semester
|
prerequisite |
---|
Knowledge |
---|
to understand the representation of numbers, characters and strings in a computer |
to understand the work with user input and output, including using input and output files |
to describe the process of exection of a simple program on a computer |
to decompose problems into simpler problems and to write the decomposition down in a form of a program with subroutines |
to understand the meaning of subroutine parameters and return value |
Skills |
---|
to build simple computer programs in an imperative programming language |
to perform elemntary mathematical derivations |
to interpret simple computer programs and to understand their function from the source code |
Competences |
---|
N/A |
N/A |
N/A |
N/A |
N/A |
N/A |
learning outcomes |
---|
Knowledge |
---|
to describe the function of basic data structures from the user point of view |
to interpret expressions on computational complexity of algorithms in terms of O, Omega and Theta notation |
to determine the expected computational complexity of operations performed on basic data structures |
Skills |
---|
to analyze simple programs and to determine their computational complexity |
to build algorithms that use exiting implementations of basic data structures |
to build compound data structures tailored for particular programming tasks |
to choose appropriate data structures for solving programming tasks |
Competences |
---|
N/A |
N/A |
N/A |
teaching methods |
---|
Knowledge |
---|
Lecture |
Lecture with visual aids |
Lecture supplemented with a discussion |
Practicum |
E-learning |
Task-based study method |
Self-study of literature |
Discussion |
Skills |
---|
Lecture |
Lecture with visual aids |
Lecture supplemented with a discussion |
Practicum |
E-learning |
Task-based study method |
Self-study of literature |
Competences |
---|
Lecture |
Lecture with visual aids |
Task-based study method |
Practicum |
assessment methods |
---|
Knowledge |
---|
Oral exam |
Written exam |
Combined exam |
Test |
Continuous assessment |
Skills |
---|
Oral exam |
Written exam |
Combined exam |
Test |
Seminar work |
Continuous assessment |
Competences |
---|
Oral exam |
Written exam |
Combined exam |
Test |
Recommended literature
|
-
Cormen, Thomas H. Introduction to algorithms. 3rd ed. Cambridge : MIT Press, 2009. ISBN 978-0-262-03384-8.
-
Hunt, Andrew; Thomas, David. Programátor pragmatik : jak se stát lepším programátorem a vytvářet kvalitní software. Vyd. 1. Brno : Computer Press, 2007. ISBN 978-80-251-1660-9.
-
Kučera, Luděk. Kombinatorické algoritmy. 2. nezm. vyd. Praha : SNTL, 1989.
-
Mareš, Martin; Valla, Tomáš. Průvodce labyrintem algoritmů. 1. vydání. 2017. ISBN 978-80-88168-19-5.
|