Algorithms and Data Structures (2017/2018) - Departamento de Informática

Additional information: https://moodle.fct.unl.pt/course/view.php?name=AED1718

Description

Introduction to the fundamental concepts of algorithm analysis and to the main data structures and algorithms, as essential tools to build efficient programs.

Two approaches are deeply encouraged: algorithms should be analysed before being implemented, and specifications (abstract data types) should be separated from their implementations (data structures).

Objectives

Knowledge

1.The basics of algorithm analysis.

2.Fundamental abstract data types and data structures.

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

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

5.Several sorting algorithms, their features and application conditions.

Application

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

7.To model programs using abstract data types.

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

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

10.To implement recursive polynomial time algorithms.

Soft-Skills

11.To justify choices.

12.To do a programming project.

13.To evaluate solutions.

14.Time management

15.Writing communication: course project report.

16.Oral communication: course project assessment.

Syllabus

A.Algorithm Analysis

B.Introduction to Recursion

C.Abstract Data Types

D.Data Structures

E.Sorting Algorithms

Bibliography

Main References

Elementary Reference

Advanced Reference

Prerequisites

Students should have completed the Introduction to Programming (Introdução à Programação) and the Object-Oriented Programming (Programação Orientada pelos Objectos) courses.

Students should:

Student work
  Hours per credit 28
  Hours per week Weeks Hours
Aulas práticas e laboratoriais   26.0
Aulas teóricas   42.0
Avaliação   4.0
Self study   42.0
Orientação tutorial   3.0
Project   130.0
Total hours 247
ECTS 9.0