#### Data Structures and Algorithms

ISABEL SEGURA BEDMAR

Area: Computer Science

Bachelor's Degree in Data Science and Engineering

October, 2019Share:

Theorethical hours: 28 hours

Lab hours: 28 hours

Total learning time: 118 hours

#### PRERREQUISITES AND RECOMMENDED PREVIOUS KNOWLEDGE

It is recommended that students have previously followed the following courses:

- Programming

- Calculus

#### GENERAL DESCRIPTION OF THE COURSE

In this course, students will study the main data structures (lists, trees and graphs) and their manipulation algorithms. Students will acquire the skills to design and develop the most selected data structures to solve real-life problems and develop quality software. They will also learn to analyze the algorithms from the point of view of temporal and space complexity, to be analyzed to propose the most efficient algorithms. The algorithmic strategies of recursion and divide and conquer will also be studied.

#### OBJECTIVES: KNOWLEDGE AND SKILLS

Students will work in aspects of the following competences:

• Analysis and synthesis, as well as the ability to plan and organize.
• Knowledge of the main data structures and algorithmic strategies (iteration, recursion and divide and conquer).
• Use different data structures to implement solutions to specific problems.
• Problems solving with algorithms.
• Concern for clarity, simplicity and efficiency in problem solving.
• Analyze the complexity of the algorithms.
• Discuss the different solutions for a problem.
• Teamwork.

#### TEACHING MATERIAL

For the theoretical part of the course, slides of studied topics are included as well as recommended readings.

For the exercises part of the course, a number of exercises and the corresponding solutions are included.

For the practical part, the lab assignments are including with the corresponding possible solutions.

PRACTICAL ASSIGMENTS AND ASSESSMENT ACTIVITIES

• Exams and possible solutions are included. At the end of the course, you should be able to perform the following tasks:
• Solve exam problems in the time indicated on them.
• Analyze the time and space complexity of an algorithm.
• Design and implement (in Python) data structures and their algorithms that solve the description of a real problem (case study type).