Knowledge of basic programming.
Algorithms and data structures 1
Tomaž Hočevar
Lectures:
- models of computation, computational complexity
- sorting
- abstract data types
- tree data structures
- greedy algorithms
- graphs, minimum spanning trees
- shortest paths
- divide and conquer
- dynamic programming
- computational geometry
- solving hard problems
Tutorials and homeworks:
Practical applications of the knowledge gained through lectures. The emphasis is on the autonomous work of students with the help of assistants. During tutorials, students will implement solutions of various short problems. With successful solutions they will pass their continuous study and can take the exam.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2022). Introduction to algorithms. MIT press.
Sedgewick R. & Wayne K. (2011). Algorithms fourth edition. Addison-Wesley.
Aho A. V. Hopcroft J. E. & Ullman J. D. (1983). Data structures and algorithms. Addison-Wesley.
Kononenko, I., Robnik Šikonja, M., & Bosnić, Z. (2008). Programiranje in algoritmi. Fakulteta za računalništvo in informatiko.
The goal of the course is to learn the basic principles of design and analysis of algorithms and data structures. Students develop their analytical and critical thinking skills in the process. Combined with their prior knowledge of programming, they acquire the necessary knowledge for efficiently solving technical and scientific problems in computer and information science.
After successfully completing the course, students should be able to:
- Use the basic data structures and algorithms in the development of computer programs.
- Adapt well-known algorithms and data structures for solving similar problems.
- Differentiate between solutions of a given problem with different efficiencies.
- Design efficient solutions with the use of appropriate data structures and algorithms.
- Justify and ensure the correctness and efficiency of a developed algorithm .
- Use the learned algorithmic concepts in an arbitrary programming language.
Lectures, tutorials, homeworks,. The emphasis is on continuous study and on autonomous work.
Continuing (tutorials, homeworks)
Final (written and oral exam)
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)
Hočevar, T., Brodnik, A., & Munro, J. I. (2018). Sosednost vozlišč v hipergrafih. Elektrotehniski Vestnik, 85(5), 224-228
Hočevar, T. (2018). Counting small patterns in networks
Hočevar, T., & Demšar, J. (2017). Combinatorial algorithm for counting small induced graphs and orbits. PloS one, 12(2)
Hočevar, T., & Demšar, J. (2016). Computation of graphlet orbits for nodes and edges in sparse graphs. Journal of Statistical Software, 71, 1-24
Hočevar, T., & Demšar, J. (2014). A combinatorial approach to graphlet counting. Bioinformatics, 30(4), 559-565