Go to:
You are here: Start > EIC0013

Algorithms and Data Structures

Code: EIC0013     Acronym: AEDA

Classification Keyword
OFICIAL Programming

Instance: 2014/2015 - 1S Ícone do Moodle

Active? Yes
Responsible unit: Department of Informatics Engineering
Course/CS Responsible: Master in Informatics and Computing Engineering

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
MIEIC 163 Syllabus since 2009/2010 2 - 7 70 189

Teaching - Hours

Lectures: 3,00
Recitations: 2,00
Type Teacher Classes Hour
Lectures Totals 1 3,00
Ana Paula Cunha da Rocha 3,00
Recitations Totals 6 12,00
Ana Paula Cunha da Rocha 4,00
Vânia Guiomar da Silva Gonçalves 4,00
Rosaldo José Fernandes Rossetti 4,00

Teaching language



Following up the former course on Programming, with this unit we intend: to use notions already acquired and systematically apply data structures and algorithms to solve certain categories of problems; to use object-oriented programming; give emphasis to the organisation of programs on the basis of abstract data types. Practice is to be achieved with exercises and implementation of a small project in C++.

Learning outcomes and competences

At the end of this unit course, students should: model problems following the object-oriented paradigm; solve problems using abstract data types and simple data structures (linear and non linear)

Working method


Pre-requirements (prior knowledge) and co-requirements (common knowledge)

Student should have basic knowledge of programming and C++.


Object-oriented programming. Inheritance and polymorphism. Basics of UML. C++ programming language. Analysis of algorithms: classes and complexity. Searching and sorting algorithms. Abstract data types. Iterators. Linear data structures and their implementation: lists, stacks, and queues. Binary trees and related algorithms. Hash tables and related algorithms. Priority queues. Balanced binary trees. AVL and Splay trees. Examples.

Mandatory literature

Weiss, Mark Allen; Data structures and algorithm analysis in C++. ISBN: 0-201-36122-1
Sedgewick, Robert; Algorithms in C++. ISBN: 0-201-35088-2

Complementary Bibliography

Deitel, H. M.; C++ how to program. ISBN: 0-13-185757-6
Stroustrup, Bjarne; The C++ programming language. ISBN: 0-201-88954-4
Koenig, Andrew; Accelerated C++. ISBN: 0-201-70353-X
Cormen, Thomas H.; Introduction to algorithms

Teaching methods and learning activities

Formal concepts, definitions and related issues are presented, exemplified and discussed in theoretical classes. Practical classes are carried out in computer labs, where students must implement programming exercises in C++. Practical assessments are carried out throughout the term, whose schedule and format is made available in advance. Students are then expected to implement small programs and and answer to a few theoretical problems. Groups of two or three students are expect to implement a small project throughout the course, on a theme that is suggested in the beginning of the course.


Cute C++ Unit Testing Framework
Eclipse C++


Physical sciences > Computer science > Programming
Physical sciences > Mathematics > Algorithms

Evaluation Type

Distributed evaluation without final exam

Assessment Components

Designation Weight (%)
Teste 60,00
Trabalho laboratorial 40,00
Total: 100,00

Amount of time allocated to each course unit

Designation Time (hours)
Elaboração de projeto 60,00
Estudo autónomo 48,00
Frequência das aulas 70,00
Trabalho laboratorial 10,00
Total: 188,00

Eligibility for exams

Student may not exceed the limit of absences.

Calculation formula of final grade

Final mark is computed up from two basic components: namely individual (IC) and in group (GC).

  • IC consists of four individual tests:
    • carried out on computers, with a practical programming part using tests units (ICP) and a few theoretical problems (ICT)
    • IC is the average mark obtained with the four individual tests
  • GC consists of two small projects (GC1 and GC2) to be implemented in group (of 2 or 3 students), of equal weight; these evaluation considers both commitment and attendance of student in group work.

Final mark (N) is given by: N = IC*0,6 + GC*0,4

Students should achieve a minimum success of 35% in every assessment component (ICT, ICP, GC1, CG2).

Examinations or Special Assignments

Special Assignments include two components (EC and PC):

  • Exam Component (EC) (60%), duration 2h30m, includes:
    • a practical programming part using tests units, performed on the SIGEX platform (PEC)
    • a few theoretical problems (TEC)
  • Practical Work Component (PC) (40%), a small project to be implemented and presented in the day of the exam. Students should contact the professor for the practical work assignment.

Final mark (N) is given by: N = EC*0,6 + PC*0,4.

Students should achieve a minimum success of 35% in every assessment component (PEC, TEC, PC).

Special assessment (TE, DA, ...)

Students registered under any special status:

  • should attend and perform the individual assessment components, as normally scheduled
  • group assessment may be performed individually and the student must talk to the lecturer to make all the arrangements and fix a reasonable schedule to be assessed with this regard.

Classification improvement

Students may improve their grades in the next course term.

Recommend this page Top
Copyright 1996-2024 © Faculdade de Engenharia da Universidade do Porto  I Terms and Conditions  I Accessibility  I Index A-Z  I Guest Book
Page generated on: 2024-02-28 at 03:18:19 | Acceptable Use Policy | Data Protection Policy | Complaint Portal