< Back

Data Structures and Algorithms
[Course materials]

Coordinated by: Claudius Dan, Radu Hobincu


Data Structures and Algorithms is the second programming course and one of the most important in the sense that it introduces the student to advanced programming and optimization techniques, that will be used throughout the university courses. The course syllabus is:

  1. High Level Programming Languages: Compilers and Integrated Developing Environments; C Language review, existing standards - C11; C vs. C++ 
  2. C Syntax Review – variables, constructs, functions and pointers; Memory allocation: heap, stack and global variables
  3. Pseudo-code; Algorithms and complexity; Quantifying algorithm quality; Recursion – Divide et Impera; Hanoi towers problem
  4. The array: advantages and disadvantages; Algorithms on the array: Sorting (Selection Sort, Bubble Sort, Merge Sort, Quick Sort) and searching (Binary search)
  5. The stack and the queue; Reversing a word
  6. Lists: advantages and disadvantages; Insertion, deletion, searching, iteration and memory allocation
  7. Hash functions and hash collisions; Hash Maps: advantages and disadvantages; Insertion, deletion, searching, iteration and memory allocation
  8. Trees and binary trees; Tree sort; Tree depth-first and breadth-first search
  9. Graphs: directed and undirected; Storing graphs; Connected components
  10. The minimum spanning tree of an undirected graph; Minimal cost route; Eulerian and Hamiltonian graphs;
  11. Backtracking – generate all permutations of a sequence