Algorithms and Data Structures II LABS (FAMAF)
- Algorithm Analysis
- Data structures
- Known problem-solving strategies
"The aim is for the student to acquire: the ability to understand and describe the problem that an algorithm solves (the “what”) and differentiate it from the way in which it solves it (the “how”); ability to analyze algorithms, compare them according to their efficiency in time and space; ability and habit of identifying relevant abstractions when addressing a computational problem; familiarity with frequently used algorithm design techniques; familiarity with programming (in the C language, among others) of algorithms and data structures, familiarity with the use of various levels of abstraction and programming languages"
Content: Representation of data in memory. Implementation strategies. Running memory management. Arrays, tuples, references. Data structures: lists, stacks, queues, binary trees, heaps, binary search trees, etc. Recursive data types. Abstract data types. Implementation of abstract data types. Implementation of abstract data types. Pointers. Problem solving and algorithms. Fundamental algorithms: traversal, search, sorting, updating. Algorithm design strategies. Greedy algorithms. Divide and conquer. Multiple recursion and backtracking. Dynamic programming. Algorithm analysis: asymptotic analysis, behavior in the best case, average case and worst case. O() Notation. Balance between time and space in algorithms. Algorithm complexity analysis.