Credits
6
Types
Compulsory
Requirements
This subject has not requirements
, but it has got previous capacities
Department
CS
Mail
caroline.leonore.konig@upc.edu
Teachers
Person in charge
- Caroline König ( caroline.leonore.konig@upc.edu )
Weekly hours
Theory
2
Problems
1
Laboratory
1
Guided learning
0
Autonomous learning
6
Competences
Knowledge
Skills
Competences
Objectives
-
Know the key data structures used in bioinformatic computing.
Related competences: K3, K4, S7, S8, C6,
Subcompetences- Know relevant problems in bioinformatic computing which are solved relying on specific data structures.
-
Understand the design and implementation of basic data structures for efficient data management in advanced algorithms.
Related competences: K3, K4, S7, S8, C6,
Subcompetences- Know, understand, design data structures to implement dictionaries.
- Know, understand, design data structures to implement priority heaps.
- Know, understand, design data structures to implement trees.
- Know, understand, and design data structures to implement stacks and queues.
-
Knowledge about algorithms for the resolution of classic problems with graphs.
Related competences: K3, K4, S7, S8, C6,
Subcompetences- Know, design, compare and implement shortest path algorithms in graphs.
- Know, design, compare and implement algorithms for topological ordering.
- Know, design, compare and implement graph traversal algorithms.
-
Understand, design, compare and implement string matching algorithms.
Related competences: K3, K4, S7, S8, C6, -
Know, design and implement exhaustive search algorithms .
Related competences: K3, K4, S7, S8, C6,
Subcompetences- Understand, design and implement algorithms to explore the search space: Backtracking and Branch and Bound.
-
Analyze the limits of computation through the study of computational completeness.
Related competences: K3, K4, S7, S8, C6,
Subcompetences- Understand the Cook-Levin Theorem as a basis for proving the NP-completeness of problems.
- Recognize and classify various NP-complete problems, exploring their difficulties and possible algorithmic approaches to address them.
Contents
-
Introduction to data structures in bioinformatic computing
Introduction to key data structures and overview of its application in relevant bioinformatic problems. -
Algorithm on trees
Tree data structure. Binary search trees, AVL-trees. -
Dictionaries
Basic implementations: tables and lists. Advanced implementations: dispersion tables, binary search trees. -
Priority queue
Operations of priority queues. Implementation with heaps. Heapsort. -
Algorithm on strings
Exact and approximate string matching algorithms -
Basic graph algorithms
Representations: Adjacency matrix, adjacency list. Depth first search, Breadth first search. Dijkstra and Bellman-Ford algorithms of shortest path. -
Advanced graph algorithms
Topological sort. Minimum spanning trees. Kruskal¿s algorithm. Prim¿s algorithm. -
Exhaustive search algorithms
Principles: solution space, subset generation, permutations. Backtracking and Branch and Bound. -
Notions of intractability
Class P and NP. NP-completeness and reducibility.
Activities
Activity Evaluation act
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
4h
Theory
4h
Problems
2h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h
Theory
2h
Problems
0h
Laboratory
2h
Guided learning
0h
Autonomous learning
4h
Theory
2h
Problems
2h
Laboratory
1h
Guided learning
0h
Autonomous learning
6h
Theory
3h
Problems
2h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h
Theory
4h
Problems
2h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h
Theory
2h
Problems
1h
Laboratory
2h
Guided learning
0h
Autonomous learning
6h
Theory
4h
Problems
2h
Laboratory
2h
Guided learning
0h
Autonomous learning
10h
Theory
2h
Problems
4h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h
Teaching methodology
The theory classes introduce fundamental concepts and techniques, which are then applied in problem-solving and laboratory sessions through a collection of exercises evaluated by an automatic judge.Theory sessions are held weekly for two hours, while laboratory and problem-solving classes take place every two weeks, also lasting two hours each.
The course is based on programming with Python.
Evaluation methodology
EP = grade mid-term exam (0- 10)EF = grade final exam (0-10)
AC= continuous avaluation activities (problems)
EJ= programming exercises (jutge)
NOTA = 10.0%AC + 10.0%EJ+ 35.0%EP + 45.0%EF
The re-evaluation grade replaces the grade of the mid-term and final exam.
Bibliography
Basic
-
Introduction to algorithms
- Cormen, Thomas H; Leiserson, Charles Eric; Rivest, Ronald L; Stein, Clifford,
The MIT Press,
[2022].
ISBN: 9780262046305
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/lq2sgumirf?db=nlebk -
Combinatorial algorithms : generation, enumeration and search
- Kreher, Donald L; Stinson, Douglas R,
CRC Press,
cop. 1999.
ISBN: 084933988X
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991001878419706711&context=L&vid=34CSUC_UPC:VU1&lang=ca -
Introduction to computation and programming using Python : with application to computational modeling and understanding data
- Guttag, John V,
2021.
ISBN: 9780262542364
https://research-ebsco-com.recursos.biblioteca.upc.edu/c/ik5pvi/search/details/mlj5v5o4zf?db=nlebk
Complementary
-
Algorithms unlocked
- Cormen, Thomas H,
The MIT Press,
cop. 2013.
ISBN: 9780262313230
https://ebookcentral-proquest-com.recursos.biblioteca.upc.edu/lib/upcatalunya-ebooks/detail.action?pq-origsite=primo&docID=3339585 -
Algorithms on trees and graphs : with python code
- Valiente Feruglio, Gabriel,
Springer,
[2021].
ISBN: 9783030818845
https://discovery.upc.edu/discovery/fulldisplay?docid=alma991004916440606711&context=L&vid=34CSUC_UPC:VU1&lang=ca
Web links
- MIT OpenCourseWare: it is a free publication of the materials of the courses of the Massachusets Institute of Technology (MIT) that shows most of the topics that are taught in MIT. Contains notes, exercises, solved exercises, exams and videos of classes. http://ocw.mit.edu/courses/#electrical-engineering-and-computer-science
- Jutge https://jutge.org/
- Algorithms Courses on the WWW https://people.cs.pitt.edu/~kirk/algorithmcourses/index.html
- Lecture Notes K. Wayne of the course "Algorithms and Data Structures" from Princeton University https://www.cs.princeton.edu/courses/archive/fall12/cos226/lectures.php