In this subject we will study the main algorithmic schemes for solving complex computational problems. At the same time we will introduce the tools needed to implement these algorithms in a modern programming language.
Teachers
Person in charge
Enric Rodriguez Carbonell (
)
Others
Albert Oliveras Llunell (
)
Weekly hours
Theory
2
Problems
1
Laboratory
1
Guided learning
0
Autonomous learning
6
Competences
Technical Competences
Technical competencies
CE2 - To be able to program solutions to engineering problems: Design efficient algorithmic solutions to a given computational problem, implement them in the form of a robust, structured and maintainable program, and check the validity of the solution.
CE7 - Demonstrate knowledge and ability to apply the necessary tools for the storage, processing and access to data.
Transversal Competences
Transversals
CT4 [Avaluable] - Teamwork. Be able to work as a member of an interdisciplinary team, either as a member or conducting management tasks, with the aim of contributing to develop projects with pragmatism and a sense of responsibility, taking commitments taking into account available resources.
CT5 - Solvent use of information resources. Manage the acquisition, structuring, analysis and visualization of data and information in the field of specialty and critically evaluate the results of such management.
CT6 - Autonomous Learning. Detect deficiencies in one's own knowledge and overcome them through critical reflection and the choice of the best action to extend this knowledge.
CT7 - Third language. Know a third language, preferably English, with an adequate oral and written level and in line with the needs of graduates.
Basic
CB5 - That the students have developed those learning skills necessary to undertake later studies with a high degree of autonomy
Generic Technical Competences
Generic
CG1 - To design computer systems that integrate data of provenances and very diverse forms, create with them mathematical models, reason on these models and act accordingly, learning from experience.
CG2 - Choose and apply the most appropriate methods and techniques to a problem defined by data that represents a challenge for its volume, speed, variety or heterogeneity, including computer, mathematical, statistical and signal processing methods.
CG5 - To be able to draw on fundamental knowledge and sound work methodologies acquired during the studies to adapt to the new technological scenarios of the future.
Objectives
Be aware of the limits of computation: to undertand the implications of the question "P=NP?", understand the statement of Cook-Levin's Theorem, recognize and identify several classic NP-complete problems.
Related competences:
CG5,
To know, explain, design, analyze, compare and implement exhaustive search algorithms using the backtracking technique.
Related competences:
CE2,
CB5,
To learn the dynamic programming scheme, identify when it can be applied and how, and be familiar with some fundamental dynamic programming algorithms.
Related competences:
CE2,
To learn the scheme of greedy algorithms, identify when it can be applied and how, learn the most usual techniques for proving their correctness and be familiar with some fundamental greedy algorithms.
Related competences:
CE2,
To complete and modify implementations of several algorithms for solving problems of average difficulty in the C++ programming language.
Related competences:
CE2,
CT6,
Identify and propose solutions to possible problems of efficiency in programs written in the C++ programming language.
Related competences:
CE2,
CT6,
To develop projects of average size as as member of a team, learning how to divide a project into smaller parts, to distribute them amongst its members and act with responsability in a coordinated way for the successful accomplishment of the assigned tasks.
Related competences:
CE2,
CT4,
CT5,
CT6,
CT7,
CG1,
CG2,
To learn algorithms based on local search for solving untractable problems efficiently. To learn a variety of metaheuristics of different nature and to be able to identify when and how they can be applied on concrete computationally hard problems.
Related competences:
CE2,
To learn the foundations of finite automata and regular expressions to be able to use them in practice (search of patters in texts, etc.)
Related competences:
CE7,
Contents
Tractability: classes of problems P and NP
Classes P and NP, Cook-Levin's Theorem, reductions, NP-completeness.
Exhaustive search
Theoretical foundations: space of solutions, partial solutions, pruning. Examples: subsets, permutations, travelling salesman, subset sum.
The syllabus is explained in a practical way, through the presentation of many examples.
Theory lectures introduce all of the required concepts and techniques, which are put into practice in the problem and lab lectures by means of a collection of problems and exercices in an automatic judge.
The two hours of theory classes are taught weekly. The two hours of lab classes are taught every other week. The two hours of problem classes are taught every other week.
The project integrates the contents and competences of all the course.
Evaluation methodology
NPar = grade mid term exam
NFT = grade final theory exam
NFL = grade final lab exam
NPro = grade project
The grade of the reevaluation exam, if there is any and is higher, replaces the grade of the theory final exam (NFT). The grades of mid term, project and lab (NPar, NPro, NFL) are preserved.
Bibliography
Basic:
Introduction to algorithms -
Cormen, T.H [et al.],
MIT Press, 2022. ISBN: 9780262046305