Algorithms and Data Structures

Objectives

Knowledge: Basic techniques for solving problems: fundamental abstract data types (list, set, stack, queue, dictionary, ordered dictionary) and abstract data types of the problem domain; basic algorithm design techniques: fundamental data structures (vector, single and double linked list, hash table, binary trees); basic techniques of algorithm analysis: spatial and temporal complexity.

Know-how: Model programs using abstract data types; define and implement abstract data types in the problem domain; calculate the spatial and temporal complexity of algorithms; implement fundamental abstract data types, using the most adequate data structures; design and implement efficient solutions to concrete problems.

Soft-skills: Ability to evaluate solutions; ability to select the suitable techniques to solve a problem; skills in writing communication: reports of discipline projects.

General characterization

Code

3742

Credits

6.0

Responsible teacher

António Maria Lobo César Alarcão Ravara, Luís Manuel Marques da Costa Caires

Hours

Weekly - 4

Total - 84

Teaching language

Português

Prerequisites

Mandatory pre-requisite: Microprocessors programming (LEEC)

Bibliography

Mark Allen Weiss.
Data Structures and Algorithm Analysis in C (second edition).
Addison-Wesley, 1997.
ISBN 0-201-49840-5 (Hard cover)

On the C Programming Language

Brian Kernighan and Dennis Ritchie
The C Programming Language (second edition).
Prentice-Hall, 1988.
ISBN 0-13-110362-8 (Paperback)

Pedro Guerreiro.
Elementos de Programação com C (3ª edição).
FCA - Editora de Informática, 2005.

Luis Damas.
Linguagem C (12ª edição).
FCA - Editora de Informática, 2005.

Teaching method

There are one lecture and a lab session each week.

In the lectures, all course contents are presented using concrete practical examples. In the laboratory, students design, analyse and implement programs for specific problems by applying the knowledge gained.

Students will be evaluated by practical works and a test.

Evaluation method

The evaluation has two components, a laboratorial and a written one, to be done during the period of the classes.

The handwritten part is constituted by a small individual project and a test, to be done each in two hours on campus. The laboratorial component is a project developed in groups of two outside classes.

All elements of evaluation are classified in te scale 0 to 20, round to decimals.

Some students may have to do an oral discussion of the project, which will influence the final grade.A

Laboratorial Component

During the period of classes, students should develop a practical assignment weighting 40% of the final grade. This assigment is to be done by groups of two students. The assignment has two parts (F1 e F2), weighting respectively  25% and 15% of the final grade.

the grade of this component (NCL) is thus obtained according to the following formula:

NCL = 0.25 * F1 + 0.15 * F2

Frequência

To obtain "frequência" (minimal grade), the first part (F1) of the pratical assignment needs to have been graded with at least 9,5 values. There will be an individual assessment of the contribution of each student to the project. Frequência depends on aproving this assessment.

Theoretical Component

Students should do 1 individual test (T) and a small project (P), two on-campus events taking two hours, during the period of classes, or an exam (EX) in the exam period.

The project P weights 15% and the test T 45% in the final grade. The grade of this component is obtained using the folowing formula:

NCT = 0.15 * P + 0.45 * T

The exam EX weights 60% of the final grade. It might be used to aprove or to improve the grade.To have access to it, a student needs to have "frequência" (a minimal grade on the assignment). The grade of the theoretical component is obtained with the following formula:

NCT = 0.6 * EX

Final Grade

The final grade (NF) is obtaind with the following formula, rounded to units:

NF = NCL + NCT

Subject matter

  1. Modeling programs, using abstract data types
    • Method for the analysis and design of a solution
    • Definition and implementation of abstract data types in the problem domain
  2. Introduction to Algorithm Analysis
  3. Formal specification of abstract data types:
    • Queue (LIFO)
    • Stack (FIFO)
    • List
    • Set
    • Dictionary
    • Ordered Dictionary
  4. Study of the fundamental data structures, including the analysis of the algorithmic in the best, worst and expected case:
    • Circular Vector,
    • Singly and Doubly Linked Lists,
    • Open and Closed-Hash Tables,
    • Search Trees and Binary Trees.

Programs

Programs where the course is taught: