This subject focuses on data structures and algorithm for efficient data analysis in bioinformatic problems. The subject covers trees, dictionaries, graphs and priority queues and explains the related algorithms on these data structures as well as efficient algorithms for exploring complex search spaces. The course introduces the theory of computational intractability and their respective classes.
Teachers
Person in charge
Caroline König (
)
Weekly hours
Theory
2
Problems
1
Laboratory
1
Guided learning
0
Autonomous learning
6
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.
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.
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
Students are required to have a foundation in imperative object-oriented programming, including parameter passing, classes, objects, methods, pointers, dynamic memory, recursion, and iterators. They must also be familiar with Python and have basic knowledge of algorithm efficiency calculations, including asymptotic notation and time and space complexity analysis.