# Algorithms and Data Structures

### Course Focus:

**Knowledge**

The basics of algorithm analysis.

Fundamental abstract data types and data structures.

How the main data structures are used to solve real-world problems.

The fundamental algorithm design techniques, namely divide-and-conquer and memoization.

Several sorting algorithms, their features and application conditions.

**Know How**

To calculate the running time and the space requirements of a polynomial or exponential time algorithm.

To model programs using abstract data types.

To choose, compare, adapt and use suitable data structures for a given problem.

To implement data structures, in particular, using dynamic memory allocation.

To implement recursive polynomial time algorithms.

### ADS Project

- Create a property management program using the appropriate data structures for best performance and readability, in Java.

Grade: 20/20