Algorithms and Data Structures 1
Public syllabus for 2025-2026
Academic overview
Teaching team
Learning time distribution
| Total | ||||||
|---|---|---|---|---|---|---|
| Curriculum | Lecture | Practice | Total Weekly | Lecture | Practice | |
| 56 | 28 | 28 | 4 | 2 | 2 | |
| Exam hours | ||||||
| 8 | ||||||
| Individual Study | Bibliography study | Field study | Homework | Tutoring | Others | |
| 94 | 32 | 13 | 36 | 5 | 0 | |
| Overall | ||||||
| 150 |
Learning outcomes
Knowledge
- C1. Cunoștințe fundamentale de informatică și matematică: algoritmi și structuri de date, logică și principii de demonstrare, modele și limbaje formale, structuri discrete și modele computaționale.
Skills
- A1. Abilitatea de a identifica modele formale/computaționale adecvate, de a utiliza instrumente de modelare și de calcul științific, de a analiza eficiența unui algoritm sau a utilizării unei structuri de date.
- A3. Abilitatea de a identifica algoritmi și structuri de date adecvate unei probleme concrete, de a aplica principiile de dezvoltare a unei aplicații informatice și de a implementa algoritmi într-un limbaj de programare.
Responsibility
- R1. Capacitatea de a rezolva în manieră autonomă sarcini specifice.
- R2. Capacitatea de a identifica/selecta soluții/căi de rezolvare adecvate și de a genera idei inovative.
Online platform
Course content
| Content | Methods | Obs |
|---|---|---|
| C1. Fundamentals and description of algorithms . The stages of solving a problem. Data and data classifications. Types of processing (sequential, decision, cyclic). Pseudocode. Description of fundamental processing and structured data. | Lecture, conversation, example | 2h |
| C2. Successive refinement technique and decomposition of an algorithm into subalgorithms. Passing data and calling subalgorithms. Examples. | Lecture, conversation, example | 2h |
| C3. Checking the correctness of the algorithms . The stages of verifying the correctness of algorithms. Elements of formal correctness analysis: preconditions, postconditions, invariants, termination functions. Rule of sequential structure, rule of alternate structure, rule of repetitive structure. | Lecture, conversation, exemplification, demonstration | 2h |
| C4. Analysis of the complexity of algorithms I. Purpose of the analysis. Analyzed resources. Execution time estimation (best case, worst case, average case). | Lecture, conversation, example, demonstration | 2h |
| C5. Algorithm complexity analysis II. Order of complexity . Asymptotic notation. Properties. Asymptotic analysis of fundamental structures. Examples. Classes of complexity. | Lecture, conversation, example, demonstration | 2h |
| C6. Elementary sorting methods . The problem. Method of insertion, selection and exchange of neighboring elements (for each method: variants of the algorithm, correctness check, complexity analysis). | Lecture, conversation, example, demonstration | 2h |
| C7. Decrease and conquer technique . The basic principle. Recursion (definition, examples, recursive call mechanism, correctness checking, complexity analysis). Examples: factorial calculus, power calculus, binary search, generating permutations, tower of Hanoi problem, etc. | Lecture, example, demonstration | 2h |
| C8. Divide and conquer technique . The basic principle. The use of the master theorem in the analysis of divide and conquer algorithms. Sorting by interclassing (algorithm, correctness check, complexity analysis). | Lecture, example, demonstration | 2h |
| C9. Divide and conquer technique . Quick sort (algorithm, correctness check, complexity analysis). Other applications of the division technique. | Lecture, example, demonstration | 2h |
| C10. The technique of locally optimal choice (greedy). Class of problems. The principle of the technique. Correctness checking and complexity analysis. Examples: maximum sum subset problem, coins problem, knapsack problem (fractionation), activity selection problem. | Lecture, example, demonstration | 2h |
| C11. Dynamic Programming I . Presentation of the technique. The main stages in the application of dynamic programming. | Lecture, example, demonstration | 2h |
| C12. Dynamic programming II. Other applications of dynamic programming. The memoization technique. | Lecture, example, demonstration | 2h |
| C13. Backtracking search technique . Class of problems. The principle of the method and the general structure. Examples: generating permutations, generating subsets of a set, checker placement problem, coloring maps, determining paths in a graph. | Lecture, example, demonstration | 2h |
| C14. Recapitulation with the structuring of the matter. Preparation for the exam. (OC1, OAb1) | Lecture, example, demonstration | 2h |
Course bibliography
[1] S. Baase; Computer Algorithms. Introduction to Design and Analysis, Addison Wesley Publishing Company, 2nd edition, 1993 [2] TH Cormen, CE Leiserson, RL Rivest and C. Stein; Introduction to Algorithms, MIT Press, 4nd edition, 2022. [3] AC Giumale; Introduction to the analysis of algorithms. Theory and application, Ed. Polirom, 2004 [4] MT Goodrich, R. Tamassia, MH Goldwasser. Data Structures & Algorithms in Python, Wiley, 2013 [5] A. Levitin; Introduction to the Design and Analysis of Algorithms, Addison Wesley Publishing Company, 2003 [6] D. Lucanu, M. Craus; Designing algorithms, Ed. Polirom, 2008 [7] S. Skiena; The Algorithm Design Manual, second edition, 2008 [8] D. Zaharie; Introduction to the design and analysis of algorithms, Ed. Eubeea, 2008
Seminar content
| Content | Methods | Obs |
|---|---|---|
| L1. Algorithmic problem solving. From requirement to algorithms. Abstraction of problems. | Problematization, dialogue, collaborative learning | 2h |
| L2. Description of algorithms in pseudocode I. Presentation of processing structures. Decomposing problems into subproblems, defining and calling functions. | Problematization, dialogue, collaborative learning | 2h |
| L3. Description of algorithms in pseudocode II. Operations on one- and two-dimensional arrays. Error identification. | Problematization, dialogue, collaborative learning | 2h |
| L4. Checking the correctness of the algorithms. Identifying and using invariants | Problematization, dialogue , learning through collaboration | 2h |
| L5. Algorithm efficiency analysis I. Algorithm execution time estimation | Problematization, dialogue, collaborative learning | 2h |
| L6. Algorithm efficiency analysis II. Establishing the order of complexity of an algorithm. | Problematization, dialogue, collaborative learning | 2h |
| L7 Variants of sorting algorithms. Generating permutations and subsets. | Problematization, dialogue, collaborative learning | 2h |
| L8. Test. | ASSESSMENT | 2h |
| L9. Applications of the reduction technique. Complexity analysis of recursive algorithms. | Problematization, dialogue, collaborative learning | 2h |
| L10. Binary search. Applications of interclassing and partitioning. | Problematization, dialogue, collaborative learning | 2h |
| L11. Applications of the greedy technique . Selection and planning problems (activities selection, task planning, packing problems). | Problematization, dialogue, collaborative learning | 2h |
| L12. Applications of dynamic programming. | Problematization, dialogue, collaborative learning | 2h |
| L13. Applications of Recursive Search. Generation (subsets, permutations, etc.) and traversal (minimum cost paths) algorithms. | Problematization, dialogue, collaborative learning | 2h |
| L14. Review techniques and exam preparation. | Problematization, dialogue, collaborative learning | 2h |
| Bibliography: Same as for course |
Seminar bibliography
The content is in accordance with the structure of similar courses from other universities and covers the fundamental aspects necessary to become familiar with the design and analysis of algorithms. The ability to identify, design and analyze algorithms is essential to any computer science activity. The skills offered by this discipline are necessary for an IT specialist to identify effective solutions for solving concrete problems, regardless of the specific field of activity.
Corroboration
(none)
AI tools guidance
Evaluation and delivery
| Activity | Criteria | Methods | Percentage |
|---|---|---|---|
| C |
|
|
|
| C |
|
|
|
| S |
|
|
|
| S |
|
|
|
Performance standards
Minimum standard (knowledge and skills required for grade 5) description of a simple algorithm in pseudocode; establishing the order of complexity of a simple algorithm; knowledge of some fundamental algorithms in computer science; The final grade is calculated as the weighted average of the grades awarded for the components specified in 9.4 and 9.5. The exam is considered passed if the average is at least 5 and each of the grades is at least equal to 4. In each of the exam sessions, the grade is calculated according to the same rule. In the reevaluation sessions, only tests involving a written test and for which a passing grade (minimum 5) has not been obtained may be given, unless the student wishes to take the tests already passed. The seminar activity consists of discussing the solutions proposed by the students (their interventions are scored) and analyzing the statements of the problems proposed for the next seminar. A grade is awarded for each intervention. The seminar grade will be the arithmetic mean of the grades obtained during the semester. A minimum of two interventions are required to pass the course. Note: Students may attend consultation hours (2 modules/week according to the schedule established at the beginning of the semester) during which the course and seminar instructor answers students' questions and provides additional explanations related to the course content, seminar applications, and topics.
Additional info
(none)