Accessibility
ISEL

Algorithms and Data Structures-LEIC

Course: BSc in Computer Science and Computer Engineering
Curricular Unit (UC)

 Algorithms and Data Structures

Mandatory  X
Optional  
Scientific Area IC
Year: 2nd Semester: 1st ECTS:  6 Total Hours: 160
Contact Hours T: TP: 67.5 PL: S: OT:
Professor in charge

 Cátia Raquel Jesus Vaz

T - Theoretical; TP - Theory and practice; PL - Laboratory; S - Seminar; OT - Tutorial.

  • Intended learning outcomes (knowledge, skills and competences to be developed by the students).

    Students who successfully complete this course will be able to:

    1. Know, understand and use fundamental algorithms and data structures;
    2. Analyze the correctness and performance of simple algorithms;
    3. Choose, in a justified way, data structures best suited to each problem and apply them to its resolution;
    4. Data structures design and respective algorithms to its manipulation.
  • Syllabus

    (I) Advanced and elementary sorting algorithms: insertion sort, selection sort, bubblesort, quicksort, mergesort and heapsort.

    (II) Sorting algorithms in linear time.

    (III) Data types: stacks, queues, priority queues, heaps, trees, disjoint sets, graphs.

    (IV) Fundamental data structures: arrays, linked lists, binary search trees, hash tables, lists and adjacency matrices.

    (V) Fundamental algorithms for different data structures, such as search algorithms on graphs.

    (VI) Techniques for the analysis and design of data structures and algorithms.

  • Evidence of the syllabus coherence with the curricular unit’s intended learning outcomes

    The coherence between program content and objectives of the course is as follows:

    - IV and III provide the key to achieve the objective 3;

    - VI covers the techniques of design and analysis identified in objectives 2 and 4;

    - Despite all the contents contribute to the objective 1, the most relevant are I, II, III, IV and V.

     

  • Teaching methodologies (including evaluation)

    The lectures are intended for presentation of topics and practical examples. The main topics are further explored by conducting series of problems developed using the Java programming language. The results of learning (1) to (4) are evaluated individually through a theoretical and a practical component: (Theoretical component – 60%) 2 partial tests or, alternatively, exam. The second test is carried out at the normal time of the exams period. At the time of appeal may be repeated a partial test or exam. (Practical component-40%) 3 sets of problems performed in group and a final discussion. To be approved in the discipline, the student must have: grade in any of the partial tests greater than or equal to 8 values; average of the tests or mark of the final exam greater or equal to 10 values; final discussion note greater than or equal to 10 values.

  • Evidence of the teaching methodologies coherence with the curricular unit’s intended learning outcomes

    The presentation of the theory is appropriate to introduce the objectives 1 and 2. Due to different areas that the use of algorithms and data structures allows solving problems, carrying out a series of problems throughout the course are essential to understand and experiment, i.e. to achieve the goals 3 and 4.

  • Main Bibliography:

    T. Cormen, C. Leiseron, R. Rivest, C. Stein, Introduction to Algorithms, 3rd edition, MIT Press 2009, ISBN 9780262033848