Data Structures Code:  22.610    :  6
View general information   Description   The subject within the syllabus as a whole   Professional fields to which it applies   Prior knowledge   Information prior to enrolment   Learning objectives and results   Content   View the UOC learning resources used in the subject   Guidelines on assessment at the UOC   View the assessment model  
This is the course plan for the second semester of the academic year 2023/2024. To check whether the course is being run this semester, go to the Virtual Campus section More UOC / The University / Programmes of study section on Campus. Once teaching starts, you'll be able to find it in the classroom. The course plan may be subject to change.
Data structures are abstractions used in computer science to represent information, much like how nature organizes and stores data. To illustrate this concept, let's draw an analogy with means of transport. We have various options for moving people or objects, each with its own characteristics.

A bicycle, for example, is sustainable and ideal for short journeys, but it can only transport one person. A car offers greater range but has limited capacity for carrying people or objects. A bus increases the ability to transport people and offers more autonomy. A truck, on the other hand, excels at carrying objects but is not suitable for transporting people. An airplane provides high passenger capacity, increased autonomy, but also higher costs. River transport allows for even greater storage capacity. These examples give us an idea of which option, given a specific need and the available tools, would be the most "efficient."

Nature also offers inspiration for data organization. Traditional paper dictionaries, queues forming at events, stacks of dishes in a sink, or heaps of stones or fruits collected from a tree are examples of natural structures that can inform our understanding.

This course delves into various data structures for representation on a computer. It also provides design tools and criteria to make informed choices and determine the efficiency (in terms of time and space) of these structures. Through the development of a pre-designed case study, you will have the opportunity to apply and deepen your understanding of these concepts.


Data Structures is a mandatory course that builds upon the knowledge acquired in previous programming courses. In those courses, basic data structures like lists, stacks, and queues were introduced. This course expands upon that foundation and introduces the concept of abstract data types (ADTs) as a general model for describing data structures and studying their efficiency. The main focus of the course is to learn how to effectively utilize each data structure and to understand the process of selecting the most appropriate one for different situations.

The data structures covered in this course will prove invaluable in future courses, particularly when developing software where efficiency plays a crucial role.


The design of data structures is an essential skill in the field of software development, particularly in systems where efficiency is of utmost importance. Well-designed data structures lay the foundation for optimal performance, allowing software to process and manipulate large amounts of data with speed and efficiency. By carefully selecting and implementing appropriate data structures, developers can significantly impact the overall efficiency and performance of their software systems. Therefore, mastering the art of designing efficient data structures is crucial for creating robust and high-performing software solutions.


This course assumes a solid understanding of fundamental algorithm concepts such as assignments, conditionals, and loops. Proficiency in programming using the imperative paradigm, including familiarity with compilers, debuggers, and integrated development environments (IDEs), is also expected. Moreover, a strong foundation in object-oriented programming, particularly in Java, is essential for successful completion of this course.


Prior to enrolling in this course, it is highly recommended that you have successfully completed the following prerequisite courses:

  • Fundamentals of Programming
  • Programming in Practice
  • Object-Oriented Programming



This course has the following objectives:

  • To know in depth the most common data structures to represent the information of an application in memory.
  • To know how to calculate the spatial and temporal efficiency of a data structure and compare different alternatives.
  • Being able to identify the data structures used in a program and understand how they work.
  • To know the most common component libraries to represent data structures.
  • To know how to implement a program that uses data structures using the possibilities offered by object-oriented programming and the available libraries.
  • To know how to propose the most appropriate data structure for a specific application taking into account its characteristics.

This course addresses the following competences of the Bachelor's Degree in Techniques for Software Development:

  • CE3: Understand and use the scientific bases of software development to analyse each problem at the appropriate level of abstraction and apply the skills and knowledge acquired in order to solve them.
  • CE6: Design and build computer applications using development, integration and reuse techniques.
  • CE9: Propose and evaluate different technological alternatives for solving a specific software development problem.



  • Abstract Data Types
  • Algorithmic complexity
  • Sequential containers (stacks, queues, lists, …)
  • Trees
  • Priority queues
  • Tables
  • Searches 
  • Graphs
  • Collections



Developer Mozilla. Resources for developers, by developers Web
Data Structures Library Web
Data Structures. Study Guide 3: Non-linear Data Structures PDF
Data Structures. Study Guide 2: ADT and Sequential Data Structures PDF
Data Structures. Study Guide 0: Weekly Guide PDF
Data Structures. Study Guide 1: Tooling PDF
Abstract data types (ADT) specifications PDF


Assessment at the UOC is, in general, online, structured around the continuous assessment activities, the final assessment tests and exams, and the programme's final project.

Assessment activities and tests can be written texts and/or video recordings, use random questions, and synchronous or asynchronous oral tests, etc., as decided by each teaching team. The final project marks the end of the learning process and consists of an original and tutored piece of work to demonstrate that students have acquired the competencies worked on during the programme.

To verify students' identity and authorship in the assessment tests, the UOC reserves the right to use identity recognition and plagiarism detection systems. For these purposes, the UOC may make video recordings or use supervision methods or techniques while students carry out any of their academic activities.

The UOC may also require students to use electronic devices (microphones, webcams or other tools) or specific software during assessments. It is the student's responsibility to ensure that these devices work properly.

The assessment process is based on students' individual efforts, and the assumption that the student is the author of the work submitted for academic activities and that this work is original. The UOC's website on academic integrity and plagiarism has more information on this.

Submitting work that is not one's own or not original for assessment tests; copying or plagiarism; impersonation; accepting or obtaining any assignments, whether for compensation or otherwise; collaboration, cover-up or encouragement to copy; and using materials, software or devices not authorized in the course plan or instructions for the activity, including artificial intelligence and machine translation, among others, are examples of misconduct in assessments that may have serious academic and disciplinary consequences.

If students are found to be engaging in any such misconduct, they may receive a Fail (D/0) for the graded activities in the course plan (including final tests) or for the final grade for the course. This could be because they have used unauthorized materials, software or devices (such as artificial intelligence when it is not permitted, social media or internet search engines) during the tests; copied fragments of text from an external source (the internet, notes, books, articles, other students' work or tests, etc.) without the corresponding citation; purchased or sold assignments, or undertaken any other form of misconduct.

Likewise and in accordance with the UOC's academic regulations, misconduct during assessment may also be grounds for disciplinary proceedings and, where appropriate, the corresponding disciplinary measures, as established in the regulations governing the UOC community (Normativa de convivència).

In its assessment process, the UOC reserves the right to:

  • Ask students to provide proof of their identity as established in the UOC's academic regulations.
  • Ask students to prove the authorship of their work throughout the assessment process, in both continuous and final assessments, through a synchronous oral interview, of which a video recording or any other type of recording established by the UOC may be made. These methods seek to ensure verification of the student's identity, and their knowledge and competencies. If it is not possible to ensure the student's authorship, they may receive a D grade in the case of continuous assessment or a Fail grade in the case of the final assessment.

Artificial intelligence in assessments

The UOC understands the value and potential of artificial intelligence (AI) in education, but it also understands the risks involved if it is not used ethically, critically and responsibly. So, in each assessment activity, students will be told which AI tools and resources can be used and under what conditions. In turn, students must agree to follow the guidelines set by the UOC when it comes to completing the assessment activities and citing the tools used. Specifically, they must identify any texts or images generated by AI systems and they must not present them as their own work.

In terms of using AI, or not, to complete an activity, the instructions for assessment activities indicate the restrictions on the use of these tools. Bear in mind that using them inappropriately, such as using them in activities where they are not allowed or not citing them in activities where they are, may be considered misconduct. If in doubt, we recommend getting in touch with the course instructor and asking them before you submit your work.


You can only pass the course if you participate in and pass the continuous assessment. Your final mark for the course will be the mark you received in the continuous assessment.