Advanced Data Structures

You are here

Credits
6
Types
Specialization compulsory (Advanced Computing)
Requirements
This subject has not requirements, but it has got previous capacities
Department
CS
Mail
Efficient strategies and techniques for "structured data" are key in modern computer science to design fast algorithms useful in a variety of every day applications (like web archiving, mail servers, network routers, video games).
This course explores selected topics on fundamental data structures that may be multidimensional, metric, geometric, kinetic, self-adjusting, concurrent, distributed, etc.
The tour covers, for each topic, major results and characteristic ways of analysis as well as possible directions of research.

Teachers

Person in charge

  • Amalia Duch Brown ( )

Others

  • Conrado Martínez Parra ( )
  • Salvador Roura Ferret ( )
  • Xavier Messeguer Peypoch ( )

Weekly hours

Theory
4
Problems
0
Laboratory
0
Guided learning
0
Autonomous learning
6

Competences

Technical Competences of each Specialization

Advanced computing

  • CEE3.1 - Capability to identify computational barriers and to analyze the complexity of computational problems in different areas of science and technology as well as to represent high complexity problems in mathematical structures which can be treated effectively with algorithmic schemes.
  • CEE3.2 - Capability to use a wide and varied spectrum of algorithmic resources to solve high difficulty algorithmic problems.

Generic Technical Competences

Generic

  • CG1 - Capability to apply the scientific method to study and analyse of phenomena and systems in any area of Computer Science, and in the conception, design and implementation of innovative and original solutions.
  • CG3 - Capacity for mathematical modeling, calculation and experimental designing in technology and companies engineering centers, particularly in research and innovation in all areas of Computer Science.

Transversal Competences

Information literacy

  • CTR4 - Capability to manage the acquisition, structuring, analysis and visualization of data and information in the area of informatics engineering, and critically assess the results of this effort.

Reasoning

  • CTR6 - Capacity for critical, logical and mathematical reasoning. Capability to solve problems in their area of study. Capacity for abstraction: the capability to create and use models that reflect real situations. Capability to design and implement simple experiments, and analyze and interpret their results. Capacity for analysis, synthesis and evaluation.

Basic

  • CB6 - Ability to apply the acquired knowledge and capacity for solving problems in new or unknown environments within broader (or multidisciplinary) contexts related to their area of study.
  • CB8 - Capability to communicate their conclusions, and the knowledge and rationale underpinning these, to both skilled and unskilled public in a clear and unambiguous way.
  • CB9 - Possession of the learning skills that enable the students to continue studying in a way that will be mainly self-directed or autonomous.

Objectives

  1. Become acquainted with the main and classic data structures of central areas of computer science and identify their major properties.
    Related competences: CB8, CB9, CTR4,
  2. Become familiar with the mathematical tools usually used to analyze the performance of data structures.
    Related competences: CG3, CEE3.1, CEE3.2, CB9, CTR6,
  3. Examine ideas, analysis and implementation details of data structures in order to assess their fitness to different classes of problems.
    Related competences: CG1, CG3, CEE3.1, CEE3.2, CB6, CB8, CB9, CTR4, CTR6,
  4. Select, design and implement appropriate data structures to solve given problems.
    Related competences: CG1, CG3, CEE3.1, CEE3.2, CB6, CB9, CTR4, CTR6,

Contents

  1. Preliminaries.
    Review of required previous knowledge: asymptotic notation, basic algorithm analysis, arrays, linked lists, stacks and queues, basics of hashing, binary search trees, AVL trees, red-black trees, heaps.
  2. Hashing.
    Hashing: Universal Hashing (construction of hash functions), Cuckoo Hashing (collision resolution strategies), Applications (Bloom Filters).
  3. Heaps.
    Heaps: Binomial Heaps.
  4. Self-adjusting data structures.
    Self-adjusting data structures: List updates, Splay trees.
  5. Randomized data structures.
    Randomized data structures: randomized BSTs, treaps.
  6. Multidimensional and metric data structures, searching in metric spaces, associative retrieval and object representation.
    Multidimensional and metric data structures, searching in metric spaces, associative retrieval and object representation: grid files, kd trees, point quad trees, PR quad trees, octrees.
  7. Geometric and kinetic data structures.
    Geometric and kinetic data structures: interval, segment and partition trees, sweep lines.
    Data structures for points in motion.
  8. Strings.
    Strings: tries, Patricia tries, suffix trees, suffix arrays, BW-transform, FM-index
  9. External memory / cache oblivious.
    External memory / cache oblivious: models, B-trees, ordered-file maintenance, van Emde-Boas layout.
  10. Succinct Data Structures.
    Succinct rank and select operations.
  11. Miscellaneous.
    Miscellaneous: concurrent, distributed, augmented, persistent data structures.

Activities

Activity Evaluation act



Deliverables.

Deliverables.
Objectives: 1 4 3 2
Week: 14
Type: assigment
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
10h

Final Work.

Presentation or deliberation of the Final Work (resulting from the Research Assignment).
Objectives: 1 4 3 2
Week: 18
Type: assigment
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
2h
Autonomous learning
10h

Summaries of classmates presentations.

Summaries of classmates presentations.
Objectives: 1 4 3 2
Week: 18
Type: assigment
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
2h

Research Assignment.

Research Assignment.
Objectives: 1 4 3 2
Week: 18
Type: final exam
Theory
0h
Problems
0h
Laboratory
0h
Guided learning
0h
Autonomous learning
15h


Case studies and problem solving.

Case studies and problem solving.
Objectives: 1 4 3 2
Theory
0h
Problems
6h
Laboratory
0h
Guided learning
0h
Autonomous learning
18h

Teaching methodology

The lectures are theoretical/practical merged sessions.
The lecturer will allocate the hours in accordance with the subject matter.

The theory hours take the form of lectures in which the lecturer sets
out new concepts or techniques and examples illustrating them.
Sessions will consist of a presentation of the main topics of each content's item,
mainly based in selected original research papers.
A high level of students' participation is expected at each session.
Current lines of research in each topic will be discussed at the end of each topics' presentation.

The practical classes are used to explain implementations and show the performance
of selected data structures. Students are required to take an active part in the class by
discussing the various possible solutions/alternatives in class.

Evaluation methodology

Grade = FW + H + S

FW = Final Work (graded from 0 to 6) in which each participant is required to develop a research paper (previously assigned/authorised by the coordinator).
The delivery of the final work consists of either an oral presentation or a written document containing concrete explanations of the paper's motivation, topic's background, overview of the key ideas,
brief description of the most important details, demo of a program that implements the ideas introduced therein.

S = Summaries and participation (graded from 0 to 1) in which each participant is required to deliver a summary (1 page extent) of each others presentation and to participate (with questions and comments).

H = 3 Homeworks (graded from 0 to 1, each) to freely choose among several possibilities proposed by the lecturer as the following (but not limited to):

*Notes of one topic in latex (well explained and completed).
*Read and resume one research paper.
*Implement and prove experimentally one of the studied data structures.
*Add to Wikipedia a data structure that isn't.

Bibliography

Basic:

Previous capacities

Basic knowledge of the C++ programming language (or any other programming language).
Basic knowledge of algorithm analysis methods (in particular asymptotic complexity).
Basic knowledge of elementary data structures such as stacks, queues, linked lists, trees, and graphs as well as of sorting methods such as insertion sort, heap sort, merge sort, and quick sort.