Code: | L.EIC016 | Acronym: | DA |
Keywords | |
---|---|
Classification | Keyword |
OFICIAL | Informatics Engineering and Computing |
Active? | Yes |
Responsible unit: | Department of Informatics Engineering |
Course/CS Responsible: | Bachelor in Informatics and Computing Engineering |
Acronym | No. of Students | Study Plan | Curricular Years | Credits UCN | Credits ECTS | Contact hours | Total Time |
---|---|---|---|---|---|---|---|
L.EIC | 422 | Syllabus | 2 | - | 6 | 52 | 162 |
This course on Design of Algorithms (DA) aims at complementing and further develop the implementation skills regarding the analysis and synthesis of computer algorithms, previously explored (in an introductory fashion) in the algorithms and data structures (AED course. This DA class introduces various algorithmic techniques of wide applicability, such as brute-force, backtracking, divide-and-conquer, greedy and dynamic programming, ubiquitous in real life algorithmic implementation solutions.
At the end of this course, students, should be able to:
It is highly desirable that students have solid knowledge of imperative programming (including object-oriented), data structures and abstract data types. The successful completion of L.EIC009 (Prog) and L.EIC011 (AED) is highly recommended.
Brute-force approach and simple applications for small scale (size) optimization problems.
greedy algorithms and example application problems.
Divide-and-Conquer algorithms and its applications including numérical methods.
Dynamic programming algorithms.
Linear programming (LP) optimization and introduction to integer linear programming (ILP).
Backtracking and Brach-and-Bound and its use in optimization problems.
Intractable problems and polynomial-time and space reduction between problems. Approximation algorithms for selected problems.
Other links and support material will be made available on the Moodle Web site of this course unit.
Lectures are used to present the concepts alongside the discussion and presentation of specific application examples. In the practical classes, these examples are further expanded the techniques revisited. Practical classes are also used in support of the two programming projects the students are expected to develop as they consolidate, in a very practical and pragramatic fashion, the algorithmic concepts described in this class.
The consolidation of the theoretic knowledge in this class, in a pragmatic implementation approach, allows each student to acquire a broad component in i) problem characterization ii) formalization in a precise fashion of the problem and corresponding solutions iii) identification of the various plausible algorithmic techniques that can be pursued as a feasible solution. In the context of an integrated and holistic learning approach, the students are asked to develop two programming projects (leveraging techniques and components acquired in this course and in previous courses), and in a staged fashion, where various algorithmic approaches are pursed in search for feasible engineering solutions for complex real-life problems.
Designation | Weight (%) |
---|---|
Trabalho prático ou de projeto | 40,00 |
Teste | 60,00 |
Total: | 100,00 |
Designation | Time (hours) |
---|---|
Elaboração de projeto | 50,00 |
Estudo autónomo | 56,00 |
Frequência das aulas | 28,00 |
Trabalho laboratorial | 28,00 |
Total: | 162,00 |
There is no attendance requirement for the TP classes except for the demo of the programming projects in which all the elements of each group must attend.
The following are the minimum grade rules regarding the various grading elements:
Exceptionally, this year of 2023 previous year students (2021/22) may elect to use the grades of the two projects towards this year’s final class grade and will only need to retake the two mini-tests (T1 and T2).
This policy will not be followed in the coming years.
The final class grade is based on the following components:
The student’s individual grade in the each project has two components. One group component with a 75% weight reflecting the overall performance of the project solution and a 25% individual grade reflecting the level of effort of the student. Each group, besides of the program submission and corresponding sample inputs and outputs, shall also submit a simple report describing the features of their solution highlighting any potential innovative aspects.There is alo a simple demo session for each group when all the elements of the group must be present.
The final class grade (FG) is computed as follows:
FG = (0.30 *(T1 + T2)) + (0.20 * (P1+P2))
where T1, T2, P1 and P2 must be greater or equal than 8.0, which only after this will be rounded up to the units.
N/A
This component includes the development of 2 programming projets (P1 e P2), leveraging the techniques and competences acquired in the Algorithms and Data Structures (AED) course, and in a staged fashion, making use of the design and implementation techniques learned in this design of algorithms (DA) course. These programming projects will be carried out in groups of 3 students (maximum) and 2 students (minimum) and will focus on specific problems that elicit the application of the techniques studied in this design of algorithms (DA) class. These projects should be developed and demonstrated in the programming environments used in the previous course of AED. However, it is at the discretion of the responsible instructor to allow the students to use an alternative programming and development environment.
Students with special needs or under the provision of special status (e.g., student worker, athletic status), must complete the same grading components as the regular students (albeit with different time limits). These students, may, nevertheless, agree with the instructor specific arrangement regarding turning in their work.
Only the mini-test grades can be made up during the make-up term (“Recurso”). Students who have passed the class during the regular term, may still petition to improve their class grade enrolling in a special term (”Melhoria”) for which there is an administrative fee.
It is highly desirable that students have solid knowledge of imperative programming (including object-oriented), data structures and abstract data types. The successful completion of L.EIC009 (Prog) and L.EIC011 (AED) is highly recommended.