Go to:
Logótipo
You are in:: Start > CC2001

Algorithm Design and Analysis

Code: CC2001     Acronym: CC2001     Level: 200

Keywords
Classification Keyword
OFICIAL Computer Science

Instance: 2024/2025 - 2S Ícone do Moodle

Active? Yes
Web Page: http://www.dcc.fc.up.pt/~apt/aulas/DAA/2425
Responsible unit: Department of Computer Science
Course/CS Responsible: Bachelor in Computer Science

Cycles of Study/Courses

Acronym No. of Students Study Plan Curricular Years Credits UCN Credits ECTS Contact hours Total Time
L:B 0 Official Study Plan 3 - 6 48 162
L:CC 101 study plan from 2021/22 2 - 6 48 162
L:F 4 Official Study Plan 3 - 6 48 162
L:G 2 study plan from 2017/18 2 - 6 48 162
3
L:IACD 93 study plan from 2021/22 2 - 6 48 162
L:M 5 Official Study Plan 2 - 6 48 162
3
L:MA 0 Official Study Plan 3 - 6 48 162
L:Q 0 study plan from 2016/17 3 - 6 48 162

Teaching Staff - Responsibilities

Teacher Responsibility
Ana Paula Nunes Gomes Tomás

Teaching - Hours

Theoretical classes: 1,85
Laboratory Practice: 1,85
Type Teacher Classes Hour
Theoretical classes Totals 1 1,846
Ana Paula Nunes Gomes Tomás 1,846
Laboratory Practice Totals 6 11,076
Pedro Manuel Pinto Ribeiro 3,692
Ana Paula Nunes Gomes Tomás 3,692
Mais informaçõesLast updated on 2024-08-05.

Fields changed: Components of Evaluation and Contact Hours, Fórmula de cálculo da classificação final

Teaching language

Portuguese

Objectives

To learn techniques for designing and analyzing algorithms.

Learning outcomes and competences

Improving background on generic models of common problems and the algorithmic techniques for solving them. Practical experience in applying generic algorithms to specific problems. Competence in the asymptotic analysis of the running time of algorithms.

Working method

Presencial

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

Students should know simple algorithms and data structures (for counting, searching and sorting) and a programming language (C/C++ or JAVA).

Prerequisites: "Imperative Programming" (CC1003) and  "Data Structures"(CC1007), or some course unit with equivalent content.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Program

Asymptotic analysis of algorithms: Big O notation (O, Ω e Θ), estimating execution time, analyzing iterative and recursive programs;

Sorting: sorting as basic element of other algorithms; comparative and non comparative algorithms, binary search and direct and indirect applications;

Algorithm design techniques: exhaustive search, greedy algorithms, divide and conquer, dynamic programming;

Some specialized data structures: priority queues, disjoint sets;

Balanced Binary Search Trees: Red-Black trees;

Graph algorithms: graph representation, depth-first search, breadth-first search, minimum spanning trees, minimum distances, maximum flow.

Computtaionally hard problems. Brief introduction to the complexity classes P, NP, NP-hard, NP-complete for decision problems. Introduction to approximation and parameterized algorithms.

Mandatory literature

Thomas H. Cormen; Introduction to algorithms. ISBN: 978-0-262-36750-9 (T.H.Cormen, C.E. Leiserson, R.L.Rivest, C.Stein. Introduction to Algorithms. The MIT Press, 4th ed, 2022)
Cormen Thomas H. 070; Introduction to algorithms. ISBN: 9780262033848 hbk
J. Kleinberg, E. Tardos; Algorithm Design, Addison-Wesley, 2005. ISBN: 978-0321295354

Complementary Bibliography

R. Sedgewick and K. Wayne; Algorithms, 4th Edition, Addison-Wesley, 2011. ISBN: 978-0321573513
Skiena Steven S.; The algorithm design manual. ISBN: 978-1-84800-069-8
Michael R. Garey; Computers and intractability. ISBN: 0-7167-1045-5

Teaching methods and learning activities

Regular lectures for exposing the program topics and discussing examples. Laboratory classes for solving exercise sheets and programming problems for implementation, with automatic feedback and evaluation by the Mooshak system.

Software

Linguagens de programação/Programming Languages: C, C++ or Java
Servidor Mooshak para CC2001 (http://mooshak.dcc.fc.up.pt/~daa)

Evaluation Type

Distributed evaluation with final exam

Assessment Components

designation Weight (%)
Exame 80,00
Teste 20,00
Total: 100,00

Amount of time allocated to each course unit

designation Time (hours)
Estudo autónomo 72,00
Frequência das aulas 48,00
Trabalho laboratorial 42,00
Total: 162,00

Eligibility for exams

Students must attend at least 75% of the pratical classes to be admitted to the exams. Students who miss more than three classes cannot attend the exams. 

Calculation formula of final grade


  • NP (4 points): practical grade, worth 20% of the final grade, obtained through two practical tests, to be taken during the semester. If it is not possible to take two practical tests, there will be only one final test.

  • NT (16 points): theoretical grade, worth 80% of the final grade, obtained by:


    • TE - written test during the semester, with a minimum grade of 6 out of 20 to access the exam in the regular period;

    • Ex - final exam (global), to be taken during the regular or resit period


  • Grade in the regular period (requires TE >= 6.0 and Ex >= 8.0):


max(TE*0.4+Ex*0.6, Ex)*0.8 + NP >= 9.5



  • Grade in the resit period (requires Ex >= 8.0)


max(TE*0.4+Ex*0.6, Ex)*0.8 + NP >= 9.5



  • Academic integrity violations: the regulations from FCUP/University of Porto will be applied.

Examinations or Special Assignments

There will be one or two programming tests (weighted at 20% in total). They  consist in the submission, using the Mooshak system, of solutions to problems similar to those proposed in the laboratory classes and for homework.The grade for these tests (NP) cannot be improved.

Special assessment (TE, DA, ...)

The pratical component is compulsory for every student, regardless of special status of any kind. If the student does not take the practical test, it will score 0 in that component.

Classification improvement

Students approved in 2023/2024, who wish to improve their grade, must take the practical tests ((unless they obtained 3 or 4 points out of 4 in 2023/2024 in that component) and the final exam (in the regular ou resit period).

Observations

Prerequisites (not mandatory): "Imperative Programming" (CC1003) and  "Data Structures"(CC1007), or some course unit with equivalent content.

Students without CC1007 may need an extra effort to pass CC2001.


It is strongly recommended that students follow the subjects from the beginning of the semester, through study, active participations in practical and theoretical classes, and by solving the proposed problems (for evaluation by Mooshak).

Recommend this page Top
Copyright 1996-2024 © Faculdade de Ciências da Universidade do Porto  I Terms and Conditions  I Acessibility  I Index A-Z  I Guest Book
Page created on: 2024-10-06 at 19:32:37 | Acceptable Use Policy | Data Protection Policy | Complaint Portal