# Learning Content

## What to learn?

To develop sub-competencies, reach mastery levels, and respond to the problem situations posed in this course, it is necessary to learn different concepts, theories, procedures, techniques, attitudes and values, among other contents.

## Conceptual

• Data Abstraction
• Recursion
• Complexity Analysis
• Sorting Algorithms
• Search Algorithms
• Linear Data Structures
• Nonlinear Data Structures:
• Hierarchical
• Network (Graphs)
• Set (Hashing Techniques)

## Procedural

• Identify the main elements of the problem.
• Abstract elements in order to design the structures that best represent the problem.
• Apply complexity analysis in the search for an optimal solution.
• Select, based on the characteristics of the problem, the most suitable data structure and/or algorithm.
• Codifies solutions in high-level programming languages.
• Develops the algorithms that best adapt to the selected structure.
• Uses programmable devices in the solution process.
• Analyze and proves mathematically the different behaviors of computational algorithms for the different data structures.
• Develops efficient solutions to real situations using different data structures and algorithms.

## Attitudinal

• Appreciates the need for a systematic analysis of a problematic situation in order to adequately identify the factors that give rise to the observed deviations.
• Assumes responsibility for the decisions made to solve problems, aware that it must be based on research and engineering methodologies and tools.
• It’s aware of the need for a systematic exploration of possible solutions to identify the best options.
• It values the need to perform efficient computational processes, understanding the difference in the execution times of each type of process.
• It’s aware of the importance of using efficient algorithms and data structures to everyday problems.
• Accepts responsibility for the correct use of computational processes in situations that support everyday situations.