• Não
  • Many programming projects involve solving complex computational problems, for which simplistic or naive solutions may not be efficient enough. The focus of this course is on how to design good algorithms, and how to analyze their correctness and efficiency. This is among the most basic aspects of good programming which has progressively become a major concern. This is therefore a particularly relevant CU for the the studies’ cycle.
  • Semestral
  • Descrição

    Data limite

    Ponderação

    Trabalhos práticos e mini-questionários

    Última semana de aulas do semestre

    60%

    Testes escritos

    Última semana de aulas do semestre

    40%

    Exame de Recurso

    Fim da época de exames

    100%

     

     

    A avaliação final baseia-se numa componente prática, baseada em trabalhos práticos, participação nas aulas e assiduidade, e numa componente teórica baseada em testes escritos sobre os diferentes tópicos abordados. A componente prática terá um peso de 60% e a componente teórica terá um peso de 40%, na nota final. A nota mínima de ambas as componentes será de 8 valores. No caso de uma nota inferior a 8 valores numa das componentes, essa será a nota final de avaliação.

     

    O aproveitamento nesta UC está dependente da frequência de um mínimo de 75% das aulas lecionadas no semestre.


    As componentes prática e teórica são requeridas em todas as épocas de avaliação.


    Assim, a época de recurso pode consistir em:
     - Exame escrito: para os alunos que não tiveram aproveitamento na componente teórica em avaliação contínua.
     - (Re)Submissão dos trabalhos: para os alunos que não tiveram aproveitamento na componente prática em avaliação contínua.
     - Exame escrito + (re)submissão dos trabalhos: para os alunos que não tiveram aproveitamento nem na componente teórica nem na componente prática em avaliação contínua.

     

     

  • CP1: Complexity, classes, typical functions and algorithm analisys; CP2: Complexity and recursivity (set of recursive problems); CP3: Sorting and selection algorithms; CP4: Sorting algorithms: Insertion Sort, Selection Sort, Merge Sort and Quicksort; CP5: Compare the complexity of sorting algorithms (Quicksort programming); CP6: Abstract data types: Stack and Queue; CP7: Circular arrays, simple lists and linked lists; CP8: Implementing Queue and List (programming using arrays and lists); CP9: Using Dictionaries and Sets; CP10: Binary Trees; CP11: Progrmming binary trees; CP12: Basic notions of graphs.
  • The students that successfully finish this curricular unit will be able to: OA1. Know, understand and use fundamental algorithms and data structures; OA2: Analyze e design recursive algorithms; OA3. Analyze the correctness, complexity and performance of simple algorithms; OA4. Make a reasoned choice of the best suited data structures to each problem and apply them to its resolution; OA5. Design linked data structures and algorithms for it's manipulation  
  • Mandatory
  • Use of project-based learning methodology through which students are encouraged to autonomously develop solutions for problems that are posed to them, and that address most of the topics taught. This methodology aims for the creation of a “product”, which represents a solution to the proposed problem.
  • Português
  • Cormen, Thomas H. - Algorithms Unlocked. Cambridge, Massachusetts: MIT Press, 2013. Tamassia, Roberto, Goldwasser, Michael H., Goodrich, Michael  T. - Data Structures and Algorithms in Python. First Edition. USA: Wiley, 2013  
  • 4
  • 0
  • 5
  • 1
  • IPLUSO6378-6291
  • Algorithms and Data Structure
  • 6291
  • 6378
  • Development for the Web and Mobile Devices