Skip to main content

Algorithms and data structures 1

2023/2024
Programme:
Interdisciplinary University Study Programme Computer Science and Mathematics
Year:
2 year
Semester:
first
Kind:
mandatory
ECTS:
6
Language:
slovenian
Course director:

Tomaž Hočevar

Hours per week – 1. semester:
Lectures
3
Seminar
0
Tutorial
0
Lab
2
Prerequisites

Knowledge of basic programming.

Content (Syllabus outline)

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.

Readings

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.

Objectives and competences

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.

Intended learning outcomes

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.
Learning and teaching methods

Lectures, tutorials, homeworks,. The emphasis is on continuous study and on autonomous work.

Assessment

Continuing (tutorials, homeworks)
Final (written and oral exam)
grading: 5 (fail), 6-10 (pass) (according to the Statute of UL)

Lecturer's references

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