Additional information: https://moodle.fct.unl.pt/course/view.php?name=AED1718
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).
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.
A.Algorithm Analysis
B.Introduction to Recursion
C.Abstract Data Types
D.Data Structures
E.Sorting Algorithms
Main References
Elementary Reference
Advanced Reference
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:
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 |